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
next 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.