On 2019/8/16 15:08, Ondrej Mosnáček wrote: > pi 16. 8. 2019 o 9:02 Ondrej Mosnáček <omosnacek@xxxxxxxxx> napísal(a): >> Hi Herbert, >> >> pi 16. 8. 2019 o 1:52 Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> 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). Yes, I think you are right, I also mentioned this in v3. Thanks, Zhou > >> >>> >>> 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 <herbert@xxxxxxxxxxxxxxxxxxx> >>> Home Page: http://gondor.apana.org.au/~herbert/ >>> PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt > >