All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com
Subject: Re: [PATCH v10 2/2] dmaengine: fsl-edma: Support dynamic scatter/gather chaining
Date: Wed, 23 Sep 2026 15:16:25 +0200	[thread overview]
Message-ID: <202609231550.rY6WcsbN-lkp@intel.com> (raw)

:::::: 
:::::: Manual check reason: "linux-review patch is more than 7 days old, verify it wasn't already superseded"
:::::: 

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20260911-fsl-edma-dyn-sg-v10-2-700eb72def57@bootlin.com>
References: <20260911-fsl-edma-dyn-sg-v10-2-700eb72def57@bootlin.com>
TO: "Benoît Monin" <benoit.monin@bootlin.com>
TO: Frank Li <Frank.Li@nxp.com>
TO: Vinod Koul <vkoul@kernel.org>
CC: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
CC: imx@lists.linux.dev
CC: dmaengine@vger.kernel.org
CC: linux-kernel@vger.kernel.org
CC: "Benoît Monin" <benoit.monin@bootlin.com>

Hi Benoît,

kernel test robot noticed the following build errors:

[auto build test ERROR on cee9395acd8043be0644b25c34bfa86623f2b935]

url:    https://github.com/intel-lab-lkp/linux/commits/Beno-t-Monin/dmaengine-fsl-edma-Implement-device_prep_peripheral_dma_vec/20260911-151136
base:   cee9395acd8043be0644b25c34bfa86623f2b935
patch link:    https://lore.kernel.org/r/20260911-fsl-edma-dyn-sg-v10-2-700eb72def57%40bootlin.com
patch subject: [PATCH v10 2/2] dmaengine: fsl-edma: Support dynamic scatter/gather chaining
:::::: branch date: 12 days ago
:::::: commit date: 12 days ago
config: sparc-randconfig-r2201-20260923 (https://download.01.org/0day-ci/archive/20260923/202609231550.rY6WcsbN-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 11.5.0
smatch: v0.5.0-9187-g5189e3fb
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260923/202609231550.rY6WcsbN-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202609231550.rY6WcsbN-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/dma/fsl-edma-common.c: In function 'fsl_edma_prep_peripheral_dma_vec':
>> drivers/dma/fsl-edma-common.c:758:55: error: implicit declaration of function 'FIELD_MAX' [-Werror=implicit-function-declaration]
     758 |                 if (!nbytes || vecs[i].len / nbytes > FIELD_MAX(EDMA_TCD_ITER_MASK))
         |                                                       ^~~~~~~~~
   cc1: some warnings being treated as errors


vim +/FIELD_MAX +758 drivers/dma/fsl-edma-common.c

9d831528a6567d Angelo Dureghello 2018-08-19  675  
526bb30b847c23 Benoît Monin      2026-09-11  676  struct dma_async_tx_descriptor *
526bb30b847c23 Benoît Monin      2026-09-11  677  fsl_edma_prep_peripheral_dma_vec(struct dma_chan *chan, const struct dma_vec *vecs,
526bb30b847c23 Benoît Monin      2026-09-11  678  				 size_t nb, enum dma_transfer_direction direction,
526bb30b847c23 Benoît Monin      2026-09-11  679  				 unsigned long flags)
526bb30b847c23 Benoît Monin      2026-09-11  680  {
526bb30b847c23 Benoît Monin      2026-09-11  681  	struct fsl_edma_chan *fsl_chan = to_fsl_edma_chan(chan);
526bb30b847c23 Benoît Monin      2026-09-11  682  	dma_addr_t src_addr, dst_addr, last_sg;
526bb30b847c23 Benoît Monin      2026-09-11  683  	struct fsl_edma_desc *fsl_desc;
526bb30b847c23 Benoît Monin      2026-09-11  684  	u16 soff, doff, iter;
526bb30b847c23 Benoît Monin      2026-09-11  685  	u32 nbytes;
526bb30b847c23 Benoît Monin      2026-09-11  686  	int i;
526bb30b847c23 Benoît Monin      2026-09-11  687  
526bb30b847c23 Benoît Monin      2026-09-11  688  	if (!is_slave_direction(direction))
526bb30b847c23 Benoît Monin      2026-09-11  689  		return NULL;
526bb30b847c23 Benoît Monin      2026-09-11  690  
526bb30b847c23 Benoît Monin      2026-09-11  691  	if (!fsl_edma_prep_slave_dma(fsl_chan, direction))
526bb30b847c23 Benoît Monin      2026-09-11  692  		return NULL;
526bb30b847c23 Benoît Monin      2026-09-11  693  
526bb30b847c23 Benoît Monin      2026-09-11  694  	fsl_desc = fsl_edma_alloc_desc(fsl_chan, nb);
526bb30b847c23 Benoît Monin      2026-09-11  695  	if (!fsl_desc)
526bb30b847c23 Benoît Monin      2026-09-11  696  		return NULL;
526bb30b847c23 Benoît Monin      2026-09-11  697  	fsl_desc->iscyclic = flags & DMA_PREP_REPEAT;
526bb30b847c23 Benoît Monin      2026-09-11  698  	fsl_desc->dirn = direction;
526bb30b847c23 Benoît Monin      2026-09-11  699  
526bb30b847c23 Benoît Monin      2026-09-11  700  	if (direction == DMA_MEM_TO_DEV) {
526bb30b847c23 Benoît Monin      2026-09-11  701  		if (!fsl_chan->cfg.src_addr_width)
526bb30b847c23 Benoît Monin      2026-09-11  702  			fsl_chan->cfg.src_addr_width = fsl_chan->cfg.dst_addr_width;
526bb30b847c23 Benoît Monin      2026-09-11  703  		fsl_chan->attr =
526bb30b847c23 Benoît Monin      2026-09-11  704  			fsl_edma_get_tcd_attr(fsl_chan->cfg.src_addr_width,
526bb30b847c23 Benoît Monin      2026-09-11  705  					      fsl_chan->cfg.dst_addr_width);
526bb30b847c23 Benoît Monin      2026-09-11  706  		nbytes = fsl_chan->cfg.dst_addr_width * fsl_chan->cfg.dst_maxburst;
526bb30b847c23 Benoît Monin      2026-09-11  707  	} else {
526bb30b847c23 Benoît Monin      2026-09-11  708  		if (!fsl_chan->cfg.dst_addr_width)
526bb30b847c23 Benoît Monin      2026-09-11  709  			fsl_chan->cfg.dst_addr_width = fsl_chan->cfg.src_addr_width;
526bb30b847c23 Benoît Monin      2026-09-11  710  		fsl_chan->attr =
526bb30b847c23 Benoît Monin      2026-09-11  711  			fsl_edma_get_tcd_attr(fsl_chan->cfg.src_addr_width,
526bb30b847c23 Benoît Monin      2026-09-11  712  					      fsl_chan->cfg.dst_addr_width);
526bb30b847c23 Benoît Monin      2026-09-11  713  		nbytes = fsl_chan->cfg.src_addr_width * fsl_chan->cfg.src_maxburst;
526bb30b847c23 Benoît Monin      2026-09-11  714  	}
526bb30b847c23 Benoît Monin      2026-09-11  715  
526bb30b847c23 Benoît Monin      2026-09-11  716  	for (i = 0; i < nb; i++) {
526bb30b847c23 Benoît Monin      2026-09-11  717  		if (direction == DMA_MEM_TO_DEV) {
526bb30b847c23 Benoît Monin      2026-09-11  718  			src_addr = vecs[i].addr;
526bb30b847c23 Benoît Monin      2026-09-11  719  			dst_addr = fsl_chan->dma_dev_addr;
526bb30b847c23 Benoît Monin      2026-09-11  720  			soff = fsl_chan->cfg.dst_addr_width;
526bb30b847c23 Benoît Monin      2026-09-11  721  			doff = 0;
526bb30b847c23 Benoît Monin      2026-09-11  722  		} else if (direction == DMA_DEV_TO_MEM) {
526bb30b847c23 Benoît Monin      2026-09-11  723  			src_addr = fsl_chan->dma_dev_addr;
526bb30b847c23 Benoît Monin      2026-09-11  724  			dst_addr = vecs[i].addr;
526bb30b847c23 Benoît Monin      2026-09-11  725  			soff = 0;
526bb30b847c23 Benoît Monin      2026-09-11  726  			doff = fsl_chan->cfg.src_addr_width;
526bb30b847c23 Benoît Monin      2026-09-11  727  		} else {
526bb30b847c23 Benoît Monin      2026-09-11  728  			/* DMA_DEV_TO_DEV */
526bb30b847c23 Benoît Monin      2026-09-11  729  			src_addr = fsl_chan->cfg.src_addr;
526bb30b847c23 Benoît Monin      2026-09-11  730  			dst_addr = fsl_chan->cfg.dst_addr;
526bb30b847c23 Benoît Monin      2026-09-11  731  			soff = 0;
526bb30b847c23 Benoît Monin      2026-09-11  732  			doff = 0;
526bb30b847c23 Benoît Monin      2026-09-11  733  		}
526bb30b847c23 Benoît Monin      2026-09-11  734  
526bb30b847c23 Benoît Monin      2026-09-11  735  		/*
526bb30b847c23 Benoît Monin      2026-09-11  736  		 * Choose the suitable burst length if dma_vec length is not
526bb30b847c23 Benoît Monin      2026-09-11  737  		 * multiple of burst length so that the whole transfer length is
526bb30b847c23 Benoît Monin      2026-09-11  738  		 * multiple of minor loop(burst length).
526bb30b847c23 Benoît Monin      2026-09-11  739  		 */
526bb30b847c23 Benoît Monin      2026-09-11  740  		if (nbytes && vecs[i].len % nbytes) {
526bb30b847c23 Benoît Monin      2026-09-11  741  			u32 width = (direction == DMA_DEV_TO_MEM) ? doff : soff;
526bb30b847c23 Benoît Monin      2026-09-11  742  			u32 burst = (direction == DMA_DEV_TO_MEM) ?
526bb30b847c23 Benoît Monin      2026-09-11  743  						fsl_chan->cfg.src_maxburst :
526bb30b847c23 Benoît Monin      2026-09-11  744  						fsl_chan->cfg.dst_maxburst;
526bb30b847c23 Benoît Monin      2026-09-11  745  			int j;
526bb30b847c23 Benoît Monin      2026-09-11  746  
526bb30b847c23 Benoît Monin      2026-09-11  747  			for (j = burst; j > 1; j--) {
526bb30b847c23 Benoît Monin      2026-09-11  748  				if (!(vecs[i].len % (j * width))) {
526bb30b847c23 Benoît Monin      2026-09-11  749  					nbytes = j * width;
526bb30b847c23 Benoît Monin      2026-09-11  750  					break;
526bb30b847c23 Benoît Monin      2026-09-11  751  				}
526bb30b847c23 Benoît Monin      2026-09-11  752  			}
526bb30b847c23 Benoît Monin      2026-09-11  753  			/* Set burst size as 1 if there's no suitable one */
526bb30b847c23 Benoît Monin      2026-09-11  754  			if (j == 1)
526bb30b847c23 Benoît Monin      2026-09-11  755  				nbytes = width;
526bb30b847c23 Benoît Monin      2026-09-11  756  		}
526bb30b847c23 Benoît Monin      2026-09-11  757  
526bb30b847c23 Benoît Monin      2026-09-11 @758  		if (!nbytes || vecs[i].len / nbytes > FIELD_MAX(EDMA_TCD_ITER_MASK))
526bb30b847c23 Benoît Monin      2026-09-11  759  			goto err_free_desc;
526bb30b847c23 Benoît Monin      2026-09-11  760  
526bb30b847c23 Benoît Monin      2026-09-11  761  		iter = vecs[i].len / nbytes;
526bb30b847c23 Benoît Monin      2026-09-11  762  		if (i < nb - 1) {
526bb30b847c23 Benoît Monin      2026-09-11  763  			last_sg = fsl_desc->tcd[(i + 1)].ptcd;
526bb30b847c23 Benoît Monin      2026-09-11  764  			fsl_edma_fill_tcd(fsl_chan, fsl_desc->tcd[i].vtcd, src_addr,
526bb30b847c23 Benoît Monin      2026-09-11  765  					  dst_addr, fsl_chan->attr, soff,
526bb30b847c23 Benoît Monin      2026-09-11  766  					  nbytes, 0, iter, iter, doff, last_sg,
526bb30b847c23 Benoît Monin      2026-09-11  767  					  false, false, true);
526bb30b847c23 Benoît Monin      2026-09-11  768  		} else {
526bb30b847c23 Benoît Monin      2026-09-11  769  			if (fsl_desc->iscyclic) {
526bb30b847c23 Benoît Monin      2026-09-11  770  				last_sg = fsl_desc->tcd[0].ptcd;
526bb30b847c23 Benoît Monin      2026-09-11  771  				fsl_edma_fill_tcd(fsl_chan, fsl_desc->tcd[i].vtcd, src_addr,
526bb30b847c23 Benoît Monin      2026-09-11  772  						  dst_addr, fsl_chan->attr, soff,
526bb30b847c23 Benoît Monin      2026-09-11  773  						  nbytes, 0, iter, iter, doff, last_sg,
526bb30b847c23 Benoît Monin      2026-09-11  774  						  true, false, true);
526bb30b847c23 Benoît Monin      2026-09-11  775  			} else {
526bb30b847c23 Benoît Monin      2026-09-11  776  				last_sg = 0;
526bb30b847c23 Benoît Monin      2026-09-11  777  				fsl_edma_fill_tcd(fsl_chan, fsl_desc->tcd[i].vtcd, src_addr,
526bb30b847c23 Benoît Monin      2026-09-11  778  						  dst_addr, fsl_chan->attr, soff,
526bb30b847c23 Benoît Monin      2026-09-11  779  						  nbytes, 0, iter, iter, doff, last_sg,
526bb30b847c23 Benoît Monin      2026-09-11  780  						  true, true, false);
526bb30b847c23 Benoît Monin      2026-09-11  781  			}
526bb30b847c23 Benoît Monin      2026-09-11  782  		}
526bb30b847c23 Benoît Monin      2026-09-11  783  	}
526bb30b847c23 Benoît Monin      2026-09-11  784  
526bb30b847c23 Benoît Monin      2026-09-11  785  	return vchan_tx_prep(&fsl_chan->vchan, &fsl_desc->vdesc, flags);
526bb30b847c23 Benoît Monin      2026-09-11  786  
526bb30b847c23 Benoît Monin      2026-09-11  787  err_free_desc:
526bb30b847c23 Benoît Monin      2026-09-11  788  	fsl_edma_free_desc(&fsl_desc->vdesc);
526bb30b847c23 Benoît Monin      2026-09-11  789  	return NULL;
526bb30b847c23 Benoît Monin      2026-09-11  790  }
526bb30b847c23 Benoît Monin      2026-09-11  791  

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

             reply	other threads:[~2026-09-23 13:16 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-23 13:16 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2026-09-24  3:39 [PATCH v10 2/2] dmaengine: fsl-edma: Support dynamic scatter/gather chaining kernel test robot
2026-09-11 13:11 [PATCH v10 0/2] dmaengine: fsl-edma: Scatter/gather improvements Benoît Monin
2026-09-11 13:11 ` [PATCH v10 2/2] dmaengine: fsl-edma: Support dynamic scatter/gather chaining Benoît Monin
2026-09-11 13:23   ` sashiko-bot
2026-09-11 14:14   ` Frank Li

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202609231550.rY6WcsbN-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=oe-kbuild@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.