pi 16. 8. 2019 o 9:02 Ondrej Mosnáček <omosna...@gmail.com> napísal(a):
> Hi Herbert,
>
> pi 16. 8. 2019 o 1:52 Herbert Xu <herb...@gondor.apana.org.au> napísal(a):
> > On Thu, Aug 15, 2019 at 10:17:37PM +0800, Zhou Wang wrote:
> > >
> > > > -   dev_dbg(&qm->pdev->dev, "QM mailbox request to q%u: %u-%pad\n", 
> > > > queue,
> > > > -           cmd, dma_addr);
> > > > +   dev_dbg(&qm->pdev->dev, "QM mailbox request to q%u: %u-%#lxad\n",
> > > > +           queue, cmd, (unsigned long)dma_addr);
> > >
> > > Thanks. However, to be honest I can't get why we fix it like this.
> > > Can you give me a clue?
> >
> > dma_addr_t is not a pointer.  It's an integer type and therefore
> > you need to print it out as such.
>
> According to Documentation/core-api/printk-formats.rst, %pad is the
> format specifier intended specifically for dma_addr_t [1], so perhaps
> the kbuild robot warning was in fact bogus?
>
> [1] 
> https://www.kernel.org/doc/html/latest/core-api/printk-formats.html#dma-address-types-dma-addr-t

Oh, wait, in that section it actually says "Passed by reference.", so
Zhou is most likely right that the proper fix is to pass a pointer to
the variable containing the address (I assume this is to make the
generic GCC's format checking pass even if dma_addr_t is not actually
a pointer).

>
> >
> > Actually my patch is buggy too, on some architectures it can be
> > a long long so we need to cast is such.
> >
> > Cheers,
> > --
> > Email: Herbert Xu <herb...@gondor.apana.org.au>
> > Home Page: http://gondor.apana.org.au/~herbert/
> > PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

Reply via email to