On Fri, Apr 29, 2016 at 8:46 PM, Mark Rutland <mark.rutland@xxxxxxx> wrote: > On Fri, Apr 29, 2016 at 08:36:43PM +0530, Pratyush Anand wrote: >> > + 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? > > The %pa* printk format specifiers take the value by reference (as > phys_addr_t and friends are not necessarily the same width as a > pointer). Per Documentation/printk-formats.txt: > > Physical addresses types phys_addr_t: > > %pa[p] 0x01234567 or 0x0123456789abcdef > > For printing a phys_addr_t type (and its derivatives, such as > resource_size_t) which can vary based on build options, regardless of > the width of the CPU data path. Passed by reference. > > So the above prints the value of vmcore_base as expected. Thanks a lot Mark for explaining :-) Reviewed-by: Pratyush Anand <panand@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html