[PATCH 10/12] kexec: arrange for paddr_vmcoreinfo_note() to return phys_addr_t
Russell King - ARM Linux
linux at arm.linux.org.uk
Fri Apr 29 11:06:19 PDT 2016
On Fri, Apr 29, 2016 at 08:36:43PM +0530, Pratyush Anand wrote:
> On Thu, Apr 28, 2016 at 2:58 PM, Russell King
> <rmk+kernel at arm.linux.org.uk> wrote:
> > diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c
> > index 152da4a48867..9f1920d2d0c6 100644
> > --- a/kernel/ksysfs.c
> > +++ b/kernel/ksysfs.c
> > @@ -128,8 +128,8 @@ KERNEL_ATTR_RW(kexec_crash_size);
> > static ssize_t vmcoreinfo_show(struct kobject *kobj,
> > struct kobj_attribute *attr, char *buf)
> > {
> > - return sprintf(buf, "%lx %x\n",
> > - paddr_vmcoreinfo_note(),
> > + phys_addr_t vmcore_base = paddr_vmcoreinfo_note();
> > + return sprintf(buf, "%pa %x\n", &vmcore_base,
>
> Why do we pass &vmcore_base? Shouldn't it be vmcore_base?
You seem to not know what the "%pa" format string means.
%p always takes a _pointer_ as per C standard, so the printf argument
must be a pointer. However, the kernel format strings are extended
with additional suffixes - in this case 'a', which means that we want
to print the contents of a _pointer_ to a phys_addr_t.
Full details in Documentation/printk-formats.txt in the kernel.
The code above is correct.
--
RMK's Patch system: http://www.arm.linux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
More information about the kexec
mailing list