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 2/2] mmc: dw_mmc: add dw_mci_prepare_desc() for both of 32bit and 64bit DMA
Date: Sun, 23 Nov 2025 04:26:28 +0800	[thread overview]
Message-ID: <202511230424.HoqupIig-lkp@intel.com> (raw)

:::::: 
:::::: Manual check reason: "low confidence static check warning: drivers/mmc/host/dw_mmc.c:609:29: sparse: sparse: cannot dereference this type"
:::::: 

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <1763540498-84315-2-git-send-email-shawn.lin@rock-chips.com>
References: <1763540498-84315-2-git-send-email-shawn.lin@rock-chips.com>
TO: Shawn Lin <shawn.lin@rock-chips.com>
TO: Ulf Hansson <ulf.hansson@linaro.org>
CC: linux-mmc@vger.kernel.org
CC: Jaehoon Chung <jh80.chung@samsung.com>
CC: Shawn Lin <shawn.lin@rock-chips.com>

Hi Shawn,

kernel test robot noticed the following build warnings:

[auto build test WARNING on linus/master]
[also build test WARNING on v6.18-rc6 next-20251121]
[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/Shawn-Lin/mmc-dw_mmc-add-dw_mci_prepare_desc-for-both-of-32bit-and-64bit-DMA/20251119-163950
base:   linus/master
patch link:    https://lore.kernel.org/r/1763540498-84315-2-git-send-email-shawn.lin%40rock-chips.com
patch subject: [PATCH 2/2] mmc: dw_mmc: add dw_mci_prepare_desc() for both of 32bit and 64bit DMA
:::::: branch date: 4 days ago
:::::: commit date: 4 days ago
config: m68k-randconfig-r132-20251122 (https://download.01.org/0day-ci/archive/20251123/202511230424.HoqupIig-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 12.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251123/202511230424.HoqupIig-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/202511230424.HoqupIig-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
   drivers/mmc/host/dw_mmc.c:609:29: sparse: sparse: incompatible types in conditional expression (different base types):
   drivers/mmc/host/dw_mmc.c:609:29: sparse:    unsigned int *
   drivers/mmc/host/dw_mmc.c:609:29: sparse:    restricted __le32 *
   drivers/mmc/host/dw_mmc.c:609:29: sparse: sparse: cast from unknown type
>> drivers/mmc/host/dw_mmc.c:609:29: sparse: sparse: cannot dereference this type

vim +609 drivers/mmc/host/dw_mmc.c

3b2a067b98b45f Shawn Lin         2016-09-02  577  
c4eee1cd5533e3 Shawn Lin         2025-11-19  578  static inline int dw_mci_prepare_desc(struct dw_mci *host, struct mmc_data *data,
c4eee1cd5533e3 Shawn Lin         2025-11-19  579  				      unsigned int sg_len, bool is_64bit)
f95f3850f7a9e1 Will Newton       2011-01-02  580  {
5959b32e3636f9 Alexey Brodkin    2015-06-25  581  	unsigned int desc_len;
c4eee1cd5533e3 Shawn Lin         2025-11-19  582  	struct idmac_desc *desc_first, *desc_last, *desc;
c4eee1cd5533e3 Shawn Lin         2025-11-19  583  	struct idmac_desc_64addr *desc64_first, *desc64_last, *desc64;
c4eee1cd5533e3 Shawn Lin         2025-11-19  584  	u32 val, des0;
ec0baaa6b33932 Shawn Lin         2016-09-02  585  	int i;
5959b32e3636f9 Alexey Brodkin    2015-06-25  586  
c4eee1cd5533e3 Shawn Lin         2025-11-19  587  	if (is_64bit)
c4eee1cd5533e3 Shawn Lin         2025-11-19  588  		desc64_first = desc64_last = desc64 = host->sg_cpu;
c4eee1cd5533e3 Shawn Lin         2025-11-19  589  	else
5959b32e3636f9 Alexey Brodkin    2015-06-25  590  		desc_first = desc_last = desc = host->sg_cpu;
69d99fdcfd7815 Prabu Thangamuthu 2014-10-20  591  
5959b32e3636f9 Alexey Brodkin    2015-06-25  592  	for (i = 0; i < sg_len; i++) {
69d99fdcfd7815 Prabu Thangamuthu 2014-10-20  593  		unsigned int length = sg_dma_len(&data->sg[i]);
0e3a22c044478b Shawn Lin         2015-08-03  594  
69d99fdcfd7815 Prabu Thangamuthu 2014-10-20  595  		u64 mem_addr = sg_dma_address(&data->sg[i]);
69d99fdcfd7815 Prabu Thangamuthu 2014-10-20  596  
5959b32e3636f9 Alexey Brodkin    2015-06-25  597  		for ( ; length ; desc++) {
5959b32e3636f9 Alexey Brodkin    2015-06-25  598  			desc_len = (length <= DW_MCI_DESC_DATA_LENGTH) ?
5959b32e3636f9 Alexey Brodkin    2015-06-25  599  				   length : DW_MCI_DESC_DATA_LENGTH;
5959b32e3636f9 Alexey Brodkin    2015-06-25  600  
5959b32e3636f9 Alexey Brodkin    2015-06-25  601  			length -= desc_len;
5959b32e3636f9 Alexey Brodkin    2015-06-25  602  
3b2a067b98b45f Shawn Lin         2016-09-02  603  			/*
3b2a067b98b45f Shawn Lin         2016-09-02  604  			 * Wait for the former clear OWN bit operation
3b2a067b98b45f Shawn Lin         2016-09-02  605  			 * of IDMAC to make sure that this descriptor
3b2a067b98b45f Shawn Lin         2016-09-02  606  			 * isn't still owned by IDMAC as IDMAC's write
3b2a067b98b45f Shawn Lin         2016-09-02  607  			 * ops and CPU's read ops are asynchronous.
3b2a067b98b45f Shawn Lin         2016-09-02  608  			 */
c4eee1cd5533e3 Shawn Lin         2025-11-19 @609  			if (readl_poll_timeout_atomic(is_64bit ? &desc64->des0 : &desc->des0,
c4eee1cd5533e3 Shawn Lin         2025-11-19  610  						val, IDMAC_OWN_CLR64(val), 10, 100 * USEC_PER_MSEC))
3b2a067b98b45f Shawn Lin         2016-09-02  611  				goto err_own_bit;
3b2a067b98b45f Shawn Lin         2016-09-02  612  
c4eee1cd5533e3 Shawn Lin         2025-11-19  613  			des0 = IDMAC_DES0_OWN | IDMAC_DES0_DIC | IDMAC_DES0_CH;
c4eee1cd5533e3 Shawn Lin         2025-11-19  614  			if (is_64bit)
c4eee1cd5533e3 Shawn Lin         2025-11-19  615  				desc64->des0 = des0;
c4eee1cd5533e3 Shawn Lin         2025-11-19  616  			else
c4eee1cd5533e3 Shawn Lin         2025-11-19  617  				desc->des0 = cpu_to_le32(des0);
3b2a067b98b45f Shawn Lin         2016-09-02  618  
69d99fdcfd7815 Prabu Thangamuthu 2014-10-20  619  			/*
c4eee1cd5533e3 Shawn Lin         2025-11-19  620  			 * 1. Set OWN bit and disable interrupts for this descriptor
c4eee1cd5533e3 Shawn Lin         2025-11-19  621  			 * 2. Set Buffer length
c4eee1cd5533e3 Shawn Lin         2025-11-19  622  			 * Set physical address to DMA to/from
69d99fdcfd7815 Prabu Thangamuthu 2014-10-20  623  			 */
c4eee1cd5533e3 Shawn Lin         2025-11-19  624  			if (is_64bit) {
c4eee1cd5533e3 Shawn Lin         2025-11-19  625  				desc64->des0 = IDMAC_DES0_OWN | IDMAC_DES0_DIC | IDMAC_DES0_CH;
c4eee1cd5533e3 Shawn Lin         2025-11-19  626  				IDMAC_64ADDR_SET_BUFFER1_SIZE(desc64, desc_len);
c4eee1cd5533e3 Shawn Lin         2025-11-19  627  				desc64->des4 = mem_addr & 0xffffffff;
c4eee1cd5533e3 Shawn Lin         2025-11-19  628  				desc64->des5 = mem_addr >> 32;
c4eee1cd5533e3 Shawn Lin         2025-11-19  629  			} else {
5959b32e3636f9 Alexey Brodkin    2015-06-25  630  				IDMAC_SET_BUFFER1_SIZE(desc, desc_len);
6687c42fa71acd Ben Dooks         2015-03-25  631  				desc->des2 = cpu_to_le32(mem_addr);
c4eee1cd5533e3 Shawn Lin         2025-11-19  632  			}
5959b32e3636f9 Alexey Brodkin    2015-06-25  633  
5959b32e3636f9 Alexey Brodkin    2015-06-25  634  			/* Update physical address for the next desc */
5959b32e3636f9 Alexey Brodkin    2015-06-25  635  			mem_addr += desc_len;
5959b32e3636f9 Alexey Brodkin    2015-06-25  636  
5959b32e3636f9 Alexey Brodkin    2015-06-25  637  			/* Save pointer to the last descriptor */
c4eee1cd5533e3 Shawn Lin         2025-11-19  638  			if (is_64bit)
c4eee1cd5533e3 Shawn Lin         2025-11-19  639  				desc64_last = desc64;
c4eee1cd5533e3 Shawn Lin         2025-11-19  640  			else
5959b32e3636f9 Alexey Brodkin    2015-06-25  641  				desc_last = desc;
5959b32e3636f9 Alexey Brodkin    2015-06-25  642  		}
f95f3850f7a9e1 Will Newton       2011-01-02  643  	}
f95f3850f7a9e1 Will Newton       2011-01-02  644  
c4eee1cd5533e3 Shawn Lin         2025-11-19  645  	/* Set the first descriptor and the last descriptor */
c4eee1cd5533e3 Shawn Lin         2025-11-19  646  	if (is_64bit) {
c4eee1cd5533e3 Shawn Lin         2025-11-19  647  		desc64_first->des0 |= IDMAC_DES0_FD;
c4eee1cd5533e3 Shawn Lin         2025-11-19  648  		desc64_last->des0 &= ~(IDMAC_DES0_CH | IDMAC_DES0_DIC);
c4eee1cd5533e3 Shawn Lin         2025-11-19  649  		desc64_last->des0 |= IDMAC_DES0_LD;
c4eee1cd5533e3 Shawn Lin         2025-11-19  650  	} else {
5959b32e3636f9 Alexey Brodkin    2015-06-25  651  		desc_first->des0 |= cpu_to_le32(IDMAC_DES0_FD);
c4eee1cd5533e3 Shawn Lin         2025-11-19  652  		desc_last->des0 &= cpu_to_le32(~(IDMAC_DES0_CH | IDMAC_DES0_DIC));
5959b32e3636f9 Alexey Brodkin    2015-06-25  653  		desc_last->des0 |= cpu_to_le32(IDMAC_DES0_LD);
c4eee1cd5533e3 Shawn Lin         2025-11-19  654  	}
3b2a067b98b45f Shawn Lin         2016-09-02  655  
3b2a067b98b45f Shawn Lin         2016-09-02  656  	return 0;
3b2a067b98b45f Shawn Lin         2016-09-02  657  err_own_bit:
3b2a067b98b45f Shawn Lin         2016-09-02  658  	/* restore the descriptor chain as it's polluted */
26be9d705f4452 Colin Ian King    2016-11-16  659  	dev_dbg(host->dev, "descriptor is still owned by IDMAC.\n");
cc190d4c6499b1 Shawn Lin         2016-09-02  660  	memset(host->sg_cpu, 0, DESC_RING_BUF_SZ);
3b2a067b98b45f Shawn Lin         2016-09-02  661  	dw_mci_idmac_init(host);
3b2a067b98b45f Shawn Lin         2016-09-02  662  	return -EINVAL;
69d99fdcfd7815 Prabu Thangamuthu 2014-10-20  663  }
f95f3850f7a9e1 Will Newton       2011-01-02  664  

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

             reply	other threads:[~2025-11-22 20:27 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-22 20:26 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-11-19  8:21 [PATCH 1/2] mmc: dw_mmc: Remove unused struct dma_pdata Shawn Lin
2025-11-19  8:21 ` [PATCH 2/2] mmc: dw_mmc: add dw_mci_prepare_desc() for both of 32bit and 64bit DMA Shawn Lin
2025-11-20 16:00   ` kernel test robot

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=202511230424.HoqupIig-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.