Re: [PATCH v1 10/12] dmaengine: fsl-edma: move tcd into struct fsl_dma_chan

From: kernel test robot
Date: Sat May 27 2023 - 08:21:18 EST


Hi Frank,

kernel test robot noticed the following build warnings:

[auto build test WARNING on vkoul-dmaengine/next]
[also build test WARNING on robh/for-next linus/master v6.4-rc3 next-20230525]
[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/Frank-Li/dmaengine-fsl-edma-clean-up-EXPORT_SYMBOL_GPL-in-fsl-edma-common-c/20230526-224442
base: https://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine.git next
patch link: https://lore.kernel.org/r/20230526143639.1037099-11-Frank.Li%40nxp.com
patch subject: [PATCH v1 10/12] dmaengine: fsl-edma: move tcd into struct fsl_dma_chan
config: i386-randconfig-s003-20230526 (https://download.01.org/0day-ci/archive/20230527/202305271951.gmRobs3a-lkp@xxxxxxxxx/config)
compiler: gcc-11 (Debian 11.3.0-12) 11.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.4-39-gce1a6720-dirty
# https://github.com/intel-lab-lkp/linux/commit/913c495a6c017a70bd6d7a518a9edbd361212985
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Frank-Li/dmaengine-fsl-edma-clean-up-EXPORT_SYMBOL_GPL-in-fsl-edma-common-c/20230526-224442
git checkout 913c495a6c017a70bd6d7a518a9edbd361212985
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=i386 olddefconfig
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=i386 SHELL=/bin/bash drivers/dma/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202305271951.gmRobs3a-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
drivers/dma/fsl-edma-common.c:367:9: sparse: sparse: cast from restricted __le32
drivers/dma/fsl-edma-common.c:367:9: sparse: sparse: cast from restricted __le32
drivers/dma/fsl-edma-common.c:368:9: sparse: sparse: cast from restricted __le32
drivers/dma/fsl-edma-common.c:368:9: sparse: sparse: cast from restricted __le32
drivers/dma/fsl-edma-common.c:370:9: sparse: sparse: cast from restricted __le16
drivers/dma/fsl-edma-common.c:370:9: sparse: sparse: cast from restricted __le16
drivers/dma/fsl-edma-common.c:371:9: sparse: sparse: incorrect type in argument 2 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __le16 [usertype] soff @@
drivers/dma/fsl-edma-common.c:371:9: sparse: expected unsigned short [usertype] val
drivers/dma/fsl-edma-common.c:371:9: sparse: got restricted __le16 [usertype] soff
>> drivers/dma/fsl-edma-common.c:371:9: sparse: sparse: incorrect type in argument 2 (different base types) @@ expected unsigned int [usertype] val @@ got restricted __le16 [usertype] soff @@
drivers/dma/fsl-edma-common.c:371:9: sparse: expected unsigned int [usertype] val
drivers/dma/fsl-edma-common.c:371:9: sparse: got restricted __le16 [usertype] soff
drivers/dma/fsl-edma-common.c:373:9: sparse: sparse: cast from restricted __le32
drivers/dma/fsl-edma-common.c:373:9: sparse: sparse: cast from restricted __le32
drivers/dma/fsl-edma-common.c:374:9: sparse: sparse: cast from restricted __le32
drivers/dma/fsl-edma-common.c:374:9: sparse: sparse: cast from restricted __le32
drivers/dma/fsl-edma-common.c:376:9: sparse: sparse: cast from restricted __le16
drivers/dma/fsl-edma-common.c:376:9: sparse: sparse: cast from restricted __le16
drivers/dma/fsl-edma-common.c:377:9: sparse: sparse: cast from restricted __le16
drivers/dma/fsl-edma-common.c:377:9: sparse: sparse: cast from restricted __le16
drivers/dma/fsl-edma-common.c:378:9: sparse: sparse: cast from restricted __le16
drivers/dma/fsl-edma-common.c:378:9: sparse: sparse: cast from restricted __le16
drivers/dma/fsl-edma-common.c:380:9: sparse: sparse: cast from restricted __le32
drivers/dma/fsl-edma-common.c:380:9: sparse: sparse: cast from restricted __le32
drivers/dma/fsl-edma-common.c:388:9: sparse: sparse: cast from restricted __le16
drivers/dma/fsl-edma-common.c:388:9: sparse: sparse: cast from restricted __le16

vim +371 drivers/dma/fsl-edma-common.c

353
354 static void fsl_edma_set_tcd_regs(struct fsl_edma_chan *fsl_chan,
355 struct fsl_edma_hw_tcd *tcd)
356 {
357 u16 csr = 0;
358
359 /*
360 * TCD parameters are stored in struct fsl_edma_hw_tcd in little
361 * endian format. However, we need to load the TCD registers in
362 * big- or little-endian obeying the eDMA engine model endian,
363 * and this is performed from specific edma_write functions
364 */
365 edma_write_tcdreg(fsl_chan, 0, csr);
366
367 edma_write_tcdreg(fsl_chan, (s32)tcd->saddr, saddr);
368 edma_write_tcdreg(fsl_chan, (s32)tcd->daddr, daddr);
369
370 edma_write_tcdreg(fsl_chan, (s16)tcd->attr, attr);
> 371 edma_write_tcdreg(fsl_chan, tcd->soff, soff);
372
373 edma_write_tcdreg(fsl_chan, (s32)tcd->nbytes, nbytes);
374 edma_write_tcdreg(fsl_chan, (s32)tcd->slast, slast);
375
376 edma_write_tcdreg(fsl_chan, (s16)tcd->citer, citer);
377 edma_write_tcdreg(fsl_chan, (s16)tcd->biter, biter);
378 edma_write_tcdreg(fsl_chan, (s16)tcd->doff, doff);
379
380 edma_write_tcdreg(fsl_chan, (s32)tcd->dlast_sga, dlast_sga);
381
382 if (fsl_chan->is_sw) {
383 csr = le16_to_cpu(tcd->csr);
384 csr |= EDMA_TCD_CSR_START;
385 tcd->csr = cpu_to_le16(csr);
386 }
387
388 edma_write_tcdreg(fsl_chan, (s16)tcd->csr, csr);
389 }
390

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki