Message ID | 20160713084916.2765651-1-arnd@arndb.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Arnd, On Wed, 2016-07-13 at 10:47 +0200, Arnd Bergmann wrote: > The newly added mtk-vcodec driver produces a number of warnings in an ARM > allmodconfig build, mainly since it assumes that dma_addr_t is 32-bit wide: > > mtk-vcodec/venc/venc_vp8_if.c: In function 'vp8_enc_alloc_work_buf': > mtk-vcodec/venc/venc_vp8_if.c:212:191: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] > mtk-vcodec/venc/venc_h264_if.c: In function 'h264_enc_alloc_work_buf': > mtk-vcodec/venc/venc_h264_if.c:297:190: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] > > This rearranges the format strings and type casts to what they should have been > in order to avoid the warnings. e0f80d8d62f5 ("[media] mtk-vcodec: fix two compiler > warnings") fixed some of the problems that were introduced at the same time, but > missed two others. > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > --- > drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c | 4 ++-- > drivers/media/platform/mtk-vcodec/venc/venc_vp8_if.c | 4 ++-- > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c b/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c > index f4e18bb44cb9..9a600525b3c1 100644 > --- a/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c > +++ b/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c > @@ -295,9 +295,9 @@ static int h264_enc_alloc_work_buf(struct venc_h264_inst *inst) > wb[i].iova = inst->work_bufs[i].dma_addr; > > mtk_vcodec_debug(inst, > - "work_buf[%d] va=0x%p iova=0x%p size=%zu", > + "work_buf[%d] va=0x%p iova=%pad size=%zu", > i, inst->work_bufs[i].va, > - (void *)inst->work_bufs[i].dma_addr, > + &inst->work_bufs[i].dma_addr, > inst->work_bufs[i].size); > } > This modified will dump dma_addr's address, not dma_addr value. In actually, we need to dump dma_addr value. Thanks. > diff --git a/drivers/media/platform/mtk-vcodec/venc/venc_vp8_if.c b/drivers/media/platform/mtk-vcodec/venc/venc_vp8_if.c > index 5b4ef0f1740c..60bbcd2a0510 100644 > --- a/drivers/media/platform/mtk-vcodec/venc/venc_vp8_if.c > +++ b/drivers/media/platform/mtk-vcodec/venc/venc_vp8_if.c > @@ -210,9 +210,9 @@ static int vp8_enc_alloc_work_buf(struct venc_vp8_inst *inst) > wb[i].iova = inst->work_bufs[i].dma_addr; > > mtk_vcodec_debug(inst, > - "work_bufs[%d] va=0x%p,iova=0x%p,size=%zu", > + "work_bufs[%d] va=0x%p,iova=%pad,size=%zu", > i, inst->work_bufs[i].va, > - (void *)inst->work_bufs[i].dma_addr, > + &inst->work_bufs[i].dma_addr, > inst->work_bufs[i].size); > } > The same as above. Best Regards PoChun
On Wednesday, July 13, 2016 6:52:43 PM CEST pochun lin wrote: > > diff --git a/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c b/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c > > index f4e18bb44cb9..9a600525b3c1 100644 > > --- a/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c > > +++ b/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c > > @@ -295,9 +295,9 @@ static int h264_enc_alloc_work_buf(struct venc_h264_inst *inst) > > wb[i].iova = inst->work_bufs[i].dma_addr; > > > > mtk_vcodec_debug(inst, > > - "work_buf[%d] va=0x%p iova=0x%p size=%zu", > > + "work_buf[%d] va=0x%p iova=%pad size=%zu", > > i, inst->work_bufs[i].va, > > - (void *)inst->work_bufs[i].dma_addr, > > + &inst->work_bufs[i].dma_addr, > > inst->work_bufs[i].size); > > } > > > > This modified will dump dma_addr's address, not dma_addr value. > In actually, we need to dump dma_addr value. According to Documentation/printk-formats.txt, it gets passed by reference: | DMA addresses types dma_addr_t: | | %pad 0x01234567 or 0x0123456789abcdef | | For printing a dma_addr_t type which can vary based on build options, | regardless of the width of the CPU data path. Passed by reference. The whole point of the %pad/%pr/%pM/... format strings is to print something that cannot be passed by value because the type is not a fixed-size integer. Arnd
Hi Arnd, On Wed, 2016-07-13 at 15:17 +0200, Arnd Bergmann wrote: > On Wednesday, July 13, 2016 6:52:43 PM CEST pochun lin wrote: > > > diff --git a/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c b/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c > > > index f4e18bb44cb9..9a600525b3c1 100644 > > > --- a/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c > > > +++ b/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c > > > @@ -295,9 +295,9 @@ static int h264_enc_alloc_work_buf(struct venc_h264_inst *inst) > > > wb[i].iova = inst->work_bufs[i].dma_addr; > > > > > > mtk_vcodec_debug(inst, > > > - "work_buf[%d] va=0x%p iova=0x%p size=%zu", > > > + "work_buf[%d] va=0x%p iova=%pad size=%zu", > > > i, inst->work_bufs[i].va, > > > - (void *)inst->work_bufs[i].dma_addr, > > > + &inst->work_bufs[i].dma_addr, > > > inst->work_bufs[i].size); > > > } > > > > > > > This modified will dump dma_addr's address, not dma_addr value. > > In actually, we need to dump dma_addr value. > > According to Documentation/printk-formats.txt, it gets passed by > reference: > > | DMA addresses types dma_addr_t: > | > | %pad 0x01234567 or 0x0123456789abcdef > | > | For printing a dma_addr_t type which can vary based on build options, > | regardless of the width of the CPU data path. Passed by reference. > > The whole point of the %pad/%pr/%pM/... format strings is to print > something that cannot be passed by value because the type is not > a fixed-size integer. > > Arnd Got it. And sorry I was wrong. Thanks your explain clearly. Best Regards PoChun
diff --git a/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c b/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c index f4e18bb44cb9..9a600525b3c1 100644 --- a/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c +++ b/drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c @@ -295,9 +295,9 @@ static int h264_enc_alloc_work_buf(struct venc_h264_inst *inst) wb[i].iova = inst->work_bufs[i].dma_addr; mtk_vcodec_debug(inst, - "work_buf[%d] va=0x%p iova=0x%p size=%zu", + "work_buf[%d] va=0x%p iova=%pad size=%zu", i, inst->work_bufs[i].va, - (void *)inst->work_bufs[i].dma_addr, + &inst->work_bufs[i].dma_addr, inst->work_bufs[i].size); } diff --git a/drivers/media/platform/mtk-vcodec/venc/venc_vp8_if.c b/drivers/media/platform/mtk-vcodec/venc/venc_vp8_if.c index 5b4ef0f1740c..60bbcd2a0510 100644 --- a/drivers/media/platform/mtk-vcodec/venc/venc_vp8_if.c +++ b/drivers/media/platform/mtk-vcodec/venc/venc_vp8_if.c @@ -210,9 +210,9 @@ static int vp8_enc_alloc_work_buf(struct venc_vp8_inst *inst) wb[i].iova = inst->work_bufs[i].dma_addr; mtk_vcodec_debug(inst, - "work_bufs[%d] va=0x%p,iova=0x%p,size=%zu", + "work_bufs[%d] va=0x%p,iova=%pad,size=%zu", i, inst->work_bufs[i].va, - (void *)inst->work_bufs[i].dma_addr, + &inst->work_bufs[i].dma_addr, inst->work_bufs[i].size); }
The newly added mtk-vcodec driver produces a number of warnings in an ARM allmodconfig build, mainly since it assumes that dma_addr_t is 32-bit wide: mtk-vcodec/venc/venc_vp8_if.c: In function 'vp8_enc_alloc_work_buf': mtk-vcodec/venc/venc_vp8_if.c:212:191: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] mtk-vcodec/venc/venc_h264_if.c: In function 'h264_enc_alloc_work_buf': mtk-vcodec/venc/venc_h264_if.c:297:190: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] This rearranges the format strings and type casts to what they should have been in order to avoid the warnings. e0f80d8d62f5 ("[media] mtk-vcodec: fix two compiler warnings") fixed some of the problems that were introduced at the same time, but missed two others. Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- drivers/media/platform/mtk-vcodec/venc/venc_h264_if.c | 4 ++-- drivers/media/platform/mtk-vcodec/venc/venc_vp8_if.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-)