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