Re: [PATCH V2 XDMA 1/1] dmaengine: xilinx: xdma: add xilinx xdma driver

From: kernel test robot
Date: Sat Sep 17 2022 - 10:09:09 EST


Hi Lizhi,

I love your patch! Yet something to improve:

[auto build test ERROR on vkoul-dmaengine/next]
[also build test ERROR on linus/master v6.0-rc5 next-20220916]
[cannot apply to xilinx-xlnx/master]
[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#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Lizhi-Hou/xilinx-XDMA-driver/20220916-232740
base: https://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine.git next
config: arm-randconfig-r003-20220918 (https://download.01.org/0day-ci/archive/20220917/202209172136.OvN8TzRL-lkp@xxxxxxxxx/config)
compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 791a7ae1ba3efd6bca96338e10ffde557ba83920)
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
# install arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://github.com/intel-lab-lkp/linux/commit/f624c2f1706209a308a17cc8799995dc478c3d00
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Lizhi-Hou/xilinx-XDMA-driver/20220916-232740
git checkout f624c2f1706209a308a17cc8799995dc478c3d00
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/dma/xilinx/

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

>> drivers/dma/xilinx/xdma.c:540:7: error: incompatible pointer types assigning to 'u64 *' (aka 'unsigned long long *') from 'dma_addr_t *' (aka 'unsigned int *') [-Werror,-Wincompatible-pointer-types]
src = &addr;
^ ~~~~~
drivers/dma/xilinx/xdma.c:545:7: error: incompatible pointer types assigning to 'u64 *' (aka 'unsigned long long *') from 'dma_addr_t *' (aka 'unsigned int *') [-Werror,-Wincompatible-pointer-types]
dst = &addr;
^ ~~~~~
2 errors generated.


vim +540 drivers/dma/xilinx/xdma.c

504
505 /**
506 * xdma_prep_device_sg - prepare a descriptor for a
507 * DMA transaction
508 * @chan: DMA channel pointer
509 * @sgl: Transfer scatter gather list
510 * @sg_len: Length of scatter gather list
511 * @dir: Transfer direction
512 * @flags: transfer ack flags
513 * @context: APP words of the descriptor
514 */
515 static struct dma_async_tx_descriptor *
516 xdma_prep_device_sg(struct dma_chan *chan, struct scatterlist *sgl,
517 unsigned int sg_len, enum dma_transfer_direction dir,
518 unsigned long flags, void *context)
519 {
520 struct xdma_chan *xdma_chan = to_xdma_chan(chan);
521 struct dma_async_tx_descriptor *tx_desc;
522 u32 desc_num = 0, i, len, rest;
523 struct xdma_desc_block *dblk;
524 struct xdma_desc *sw_desc;
525 struct scatterlist *sg;
526 dma_addr_t addr;
527 u64 dev_addr, *src, *dst;
528 struct xdma_hw_desc *desc;
529
530 for_each_sg(sgl, sg, sg_len, i)
531 desc_num += DIV_ROUND_UP(sg_dma_len(sg), XDMA_DESC_BLEN_MAX);
532
533 sw_desc = xdma_alloc_desc(xdma_chan, desc_num);
534 if (!sw_desc)
535 return NULL;
536 sw_desc->dir = dir;
537
538 if (dir == DMA_MEM_TO_DEV) {
539 dev_addr = xdma_chan->cfg.dst_addr;
> 540 src = &addr;
541 dst = &dev_addr;
542 } else {
543 dev_addr = xdma_chan->cfg.src_addr;
544 src = &dev_addr;
545 dst = &addr;
546 }
547
548 dblk = sw_desc->desc_blocks;
549 desc = dblk->virt_addr;
550 desc_num = 1;
551 for_each_sg(sgl, sg, sg_len, i) {
552 addr = sg_dma_address(sg);
553 rest = sg_dma_len(sg);
554
555 do {
556 len = min_t(u32, rest, XDMA_DESC_BLEN_MAX);
557 /* set hardware descriptor */
558 desc->bytes = cpu_to_le32(len);
559 desc->src_addr = cpu_to_le64(*src);
560 desc->dst_addr = cpu_to_le64(*dst);
561
562 if (!(desc_num & XDMA_DESC_ADJACENT_MASK)) {
563 dblk++;
564 desc = dblk->virt_addr;
565 } else {
566 desc++;
567 }
568
569 desc_num++;
570 dev_addr += len;
571 addr += len;
572 rest -= len;
573 } while (rest);
574 }
575
576 tx_desc = vchan_tx_prep(&xdma_chan->vchan, &sw_desc->vdesc, flags);
577 if (!tx_desc)
578 goto failed;
579
580 return tx_desc;
581
582 failed:
583 xdma_free_desc(&sw_desc->vdesc);
584
585 return NULL;
586 }
587

--
0-DAY CI Kernel Test Service
https://01.org/lkp