Message ID | 20220411044633.39014-3-samuel@sholland.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | dmaengine: sun6i: Allwinner D1 support | expand |
Hi Samuel, I love your patch! Perhaps something to improve: [auto build test WARNING on vkoul-dmaengine/next] [also build test WARNING on sunxi/sunxi/for-next v5.18-rc2 next-20220411] [cannot apply to mripard/sunxi/for-next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/intel-lab-lkp/linux/commits/Samuel-Holland/dmaengine-sun6i-Allwinner-D1-support/20220411-124826 base: https://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine.git next config: microblaze-buildonly-randconfig-r004-20220411 (https://download.01.org/0day-ci/archive/20220411/202204111614.kGz2adbh-lkp@intel.com/config) compiler: microblaze-linux-gcc (GCC) 11.2.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/280420721fd264a03a3d3f9fbe2b4e6bfddd0f79 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Samuel-Holland/dmaengine-sun6i-Allwinner-D1-support/20220411-124826 git checkout 280420721fd264a03a3d3f9fbe2b4e6bfddd0f79 # save the config file to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=microblaze SHELL=/bin/bash drivers/dma/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All warnings (new ones prefixed by >>): In file included from include/linux/device.h:15, from include/linux/dmaengine.h:8, from drivers/dma/sun6i-dma.c:12: drivers/dma/sun6i-dma.c: In function 'sun6i_dma_dump_chan_regs': >> drivers/dma/sun6i-dma.c:244:34: warning: format '%lx' expects argument of type 'long unsigned int', but argument 5 has type 'int' [-Wformat=] 244 | dev_dbg(sdev->slave.dev, "Chan %d reg: 0x%lx\n" | ^~~~~~~~~~~~~~~~~~~~~~ include/linux/dev_printk.h:129:41: note: in definition of macro 'dev_printk' 129 | _dev_printk(level, dev, fmt, ##__VA_ARGS__); \ | ^~~ include/linux/dev_printk.h:163:45: note: in expansion of macro 'dev_fmt' 163 | dev_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__); \ | ^~~~~~~ drivers/dma/sun6i-dma.c:244:9: note: in expansion of macro 'dev_dbg' 244 | dev_dbg(sdev->slave.dev, "Chan %d reg: 0x%lx\n" | ^~~~~~~ drivers/dma/sun6i-dma.c:244:52: note: format string is defined here 244 | dev_dbg(sdev->slave.dev, "Chan %d reg: 0x%lx\n" | ~~^ | | | long unsigned int | %x vim +244 drivers/dma/sun6i-dma.c 240 241 static inline void sun6i_dma_dump_chan_regs(struct sun6i_dma_dev *sdev, 242 struct sun6i_pchan *pchan) 243 { > 244 dev_dbg(sdev->slave.dev, "Chan %d reg: 0x%lx\n" 245 "\t___en(%04x): \t0x%08x\n" 246 "\tpause(%04x): \t0x%08x\n" 247 "\tstart(%04x): \t0x%08x\n" 248 "\t__cfg(%04x): \t0x%08x\n" 249 "\t__src(%04x): \t0x%08x\n" 250 "\t__dst(%04x): \t0x%08x\n" 251 "\tcount(%04x): \t0x%08x\n" 252 "\t_para(%04x): \t0x%08x\n\n", 253 pchan->idx, pchan->base - sdev->base, 254 DMA_CHAN_ENABLE, 255 readl(pchan->base + DMA_CHAN_ENABLE), 256 DMA_CHAN_PAUSE, 257 readl(pchan->base + DMA_CHAN_PAUSE), 258 DMA_CHAN_LLI_ADDR, 259 readl(pchan->base + DMA_CHAN_LLI_ADDR), 260 DMA_CHAN_CUR_CFG, 261 readl(pchan->base + DMA_CHAN_CUR_CFG), 262 DMA_CHAN_CUR_SRC, 263 readl(pchan->base + DMA_CHAN_CUR_SRC), 264 DMA_CHAN_CUR_DST, 265 readl(pchan->base + DMA_CHAN_CUR_DST), 266 DMA_CHAN_CUR_CNT, 267 readl(pchan->base + DMA_CHAN_CUR_CNT), 268 DMA_CHAN_CUR_PARA, 269 readl(pchan->base + DMA_CHAN_CUR_PARA)); 270 } 271
Hi Samuel, I love your patch! Perhaps something to improve: [auto build test WARNING on vkoul-dmaengine/next] [also build test WARNING on sunxi/sunxi/for-next v5.18-rc2 next-20220411] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/intel-lab-lkp/linux/commits/Samuel-Holland/dmaengine-sun6i-Allwinner-D1-support/20220411-124826 base: https://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine.git next config: hexagon-randconfig-r041-20220410 (https://download.01.org/0day-ci/archive/20220411/202204111641.yuvoMU5q-lkp@intel.com/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project c6e83f560f06cdfe8aa47b248d8bdc58f947274b) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/280420721fd264a03a3d3f9fbe2b4e6bfddd0f79 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Samuel-Holland/dmaengine-sun6i-Allwinner-D1-support/20220411-124826 git checkout 280420721fd264a03a3d3f9fbe2b4e6bfddd0f79 # save the config file to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash drivers/dma/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All warnings (new ones prefixed by >>): >> drivers/dma/sun6i-dma.c:253:15: warning: format specifies type 'unsigned long' but the argument has type 'int' [-Wformat] pchan->idx, pchan->base - sdev->base, ^~~~~~~~~~~~~~~~~~~~~~~~ include/linux/dev_printk.h:155:39: note: expanded from macro 'dev_dbg' dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__) ~~~ ^~~~~~~~~~~ include/linux/dynamic_debug.h:167:19: note: expanded from macro 'dynamic_dev_dbg' dev, fmt, ##__VA_ARGS__) ~~~ ^~~~~~~~~~~ include/linux/dynamic_debug.h:152:56: note: expanded from macro '_dynamic_func_call' __dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__) ^~~~~~~~~~~ include/linux/dynamic_debug.h:134:15: note: expanded from macro '__dynamic_func_call' func(&id, ##__VA_ARGS__); \ ^~~~~~~~~~~ 1 warning generated. vim +253 drivers/dma/sun6i-dma.c 240 241 static inline void sun6i_dma_dump_chan_regs(struct sun6i_dma_dev *sdev, 242 struct sun6i_pchan *pchan) 243 { 244 dev_dbg(sdev->slave.dev, "Chan %d reg: 0x%lx\n" 245 "\t___en(%04x): \t0x%08x\n" 246 "\tpause(%04x): \t0x%08x\n" 247 "\tstart(%04x): \t0x%08x\n" 248 "\t__cfg(%04x): \t0x%08x\n" 249 "\t__src(%04x): \t0x%08x\n" 250 "\t__dst(%04x): \t0x%08x\n" 251 "\tcount(%04x): \t0x%08x\n" 252 "\t_para(%04x): \t0x%08x\n\n", > 253 pchan->idx, pchan->base - sdev->base, 254 DMA_CHAN_ENABLE, 255 readl(pchan->base + DMA_CHAN_ENABLE), 256 DMA_CHAN_PAUSE, 257 readl(pchan->base + DMA_CHAN_PAUSE), 258 DMA_CHAN_LLI_ADDR, 259 readl(pchan->base + DMA_CHAN_LLI_ADDR), 260 DMA_CHAN_CUR_CFG, 261 readl(pchan->base + DMA_CHAN_CUR_CFG), 262 DMA_CHAN_CUR_SRC, 263 readl(pchan->base + DMA_CHAN_CUR_SRC), 264 DMA_CHAN_CUR_DST, 265 readl(pchan->base + DMA_CHAN_CUR_DST), 266 DMA_CHAN_CUR_CNT, 267 readl(pchan->base + DMA_CHAN_CUR_CNT), 268 DMA_CHAN_CUR_PARA, 269 readl(pchan->base + DMA_CHAN_CUR_PARA)); 270 } 271
diff --git a/drivers/dma/sun6i-dma.c b/drivers/dma/sun6i-dma.c index 5cadd4d2b824..a9334f969b28 100644 --- a/drivers/dma/sun6i-dma.c +++ b/drivers/dma/sun6i-dma.c @@ -241,9 +241,7 @@ static inline void sun6i_dma_dump_com_regs(struct sun6i_dma_dev *sdev) static inline void sun6i_dma_dump_chan_regs(struct sun6i_dma_dev *sdev, struct sun6i_pchan *pchan) { - phys_addr_t reg = virt_to_phys(pchan->base); - - dev_dbg(sdev->slave.dev, "Chan %d reg: %pa\n" + dev_dbg(sdev->slave.dev, "Chan %d reg: 0x%lx\n" "\t___en(%04x): \t0x%08x\n" "\tpause(%04x): \t0x%08x\n" "\tstart(%04x): \t0x%08x\n" @@ -252,7 +250,7 @@ static inline void sun6i_dma_dump_chan_regs(struct sun6i_dma_dev *sdev, "\t__dst(%04x): \t0x%08x\n" "\tcount(%04x): \t0x%08x\n" "\t_para(%04x): \t0x%08x\n\n", - pchan->idx, ®, + pchan->idx, pchan->base - sdev->base, DMA_CHAN_ENABLE, readl(pchan->base + DMA_CHAN_ENABLE), DMA_CHAN_PAUSE, @@ -385,17 +383,16 @@ static void *sun6i_dma_lli_add(struct sun6i_dma_lli *prev, } static inline void sun6i_dma_dump_lli(struct sun6i_vchan *vchan, - struct sun6i_dma_lli *lli) + struct sun6i_dma_lli *v_lli, + dma_addr_t p_lli) { - phys_addr_t p_lli = virt_to_phys(lli); - dev_dbg(chan2dev(&vchan->vc.chan), - "\n\tdesc: p - %pa v - 0x%p\n" + "\n\tdesc:\tp - %pad v - 0x%p\n" "\t\tc - 0x%08x s - 0x%08x d - 0x%08x\n" "\t\tl - 0x%08x p - 0x%08x n - 0x%08x\n", - &p_lli, lli, - lli->cfg, lli->src, lli->dst, - lli->len, lli->para, lli->p_lli_next); + &p_lli, v_lli, + v_lli->cfg, v_lli->src, v_lli->dst, + v_lli->len, v_lli->para, v_lli->p_lli_next); } static void sun6i_dma_free_desc(struct virt_dma_desc *vd) @@ -445,7 +442,7 @@ static int sun6i_dma_start_desc(struct sun6i_vchan *vchan) pchan->desc = to_sun6i_desc(&desc->tx); pchan->done = NULL; - sun6i_dma_dump_lli(vchan, pchan->desc->v_lli); + sun6i_dma_dump_lli(vchan, pchan->desc->v_lli, pchan->desc->p_lli); irq_reg = pchan->idx / DMA_IRQ_CHAN_NR; irq_offset = pchan->idx % DMA_IRQ_CHAN_NR; @@ -670,7 +667,7 @@ static struct dma_async_tx_descriptor *sun6i_dma_prep_dma_memcpy( sun6i_dma_lli_add(NULL, v_lli, p_lli, txd); - sun6i_dma_dump_lli(vchan, v_lli); + sun6i_dma_dump_lli(vchan, v_lli, p_lli); return vchan_tx_prep(&vchan->vc, &txd->vd, flags); @@ -746,14 +743,16 @@ static struct dma_async_tx_descriptor *sun6i_dma_prep_slave_sg( } dev_dbg(chan2dev(chan), "First: %pad\n", &txd->p_lli); - for (prev = txd->v_lli; prev; prev = prev->v_lli_next) - sun6i_dma_dump_lli(vchan, prev); + for (p_lli = txd->p_lli, v_lli = txd->v_lli; v_lli; + p_lli = v_lli->p_lli_next, v_lli = v_lli->v_lli_next) + sun6i_dma_dump_lli(vchan, v_lli, p_lli); return vchan_tx_prep(&vchan->vc, &txd->vd, flags); err_lli_free: - for (prev = txd->v_lli; prev; prev = prev->v_lli_next) - dma_pool_free(sdev->pool, prev, virt_to_phys(prev)); + for (p_lli = txd->p_lli, v_lli = txd->v_lli; v_lli; + p_lli = v_lli->p_lli_next, v_lli = v_lli->v_lli_next) + dma_pool_free(sdev->pool, v_lli, p_lli); kfree(txd); return NULL; } @@ -820,8 +819,9 @@ static struct dma_async_tx_descriptor *sun6i_dma_prep_dma_cyclic( return vchan_tx_prep(&vchan->vc, &txd->vd, flags); err_lli_free: - for (prev = txd->v_lli; prev; prev = prev->v_lli_next) - dma_pool_free(sdev->pool, prev, virt_to_phys(prev)); + for (p_lli = txd->p_lli, v_lli = txd->v_lli; v_lli; + p_lli = v_lli->p_lli_next, v_lli = v_lli->v_lli_next) + dma_pool_free(sdev->pool, v_lli, p_lli); kfree(txd); return NULL; }