All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Lizhi Hou <lizhi.hou@amd.com>
Cc: oe-kbuild-all@lists.linux.dev,
	Mario Limonciello <mario.limonciello@amd.com>
Subject: [linux-next:master 5495/7860] drivers/accel/amdxdna/amdxdna_mailbox.c:334:52: sparse: sparse: cast removes address space '__iomem' of expression
Date: Mon, 13 Jan 2025 09:21:55 +0800	[thread overview]
Message-ID: <202501130921.ktqwsMLH-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   2b88851f583d3c4e40bcd40cfe1965241ec229dd
commit: 3c8cfec3fcc4fe53f2bd87ec91ef31df4fa6dc0d [5495/7860] accel/amdxdna: Declare mailbox register base as __iomem pointer
config: x86_64-randconfig-121-20250113 (https://download.01.org/0day-ci/archive/20250113/202501130921.ktqwsMLH-lkp@intel.com/config)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250113/202501130921.ktqwsMLH-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/oe-kbuild-all/202501130921.ktqwsMLH-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> drivers/accel/amdxdna/amdxdna_mailbox.c:334:52: sparse: sparse: cast removes address space '__iomem' of expression

vim +/__iomem +334 drivers/accel/amdxdna/amdxdna_mailbox.c

b87f920b934426 Lizhi Hou 2024-11-18  274  
b87f920b934426 Lizhi Hou 2024-11-18  275  static int mailbox_get_msg(struct mailbox_channel *mb_chann)
b87f920b934426 Lizhi Hou 2024-11-18  276  {
b87f920b934426 Lizhi Hou 2024-11-18  277  	struct xdna_msg_header header;
3c8cfec3fcc4fe Lizhi Hou 2025-01-02  278  	void __iomem *read_addr;
b87f920b934426 Lizhi Hou 2024-11-18  279  	u32 msg_size, rest;
b87f920b934426 Lizhi Hou 2024-11-18  280  	u32 ringbuf_size;
b87f920b934426 Lizhi Hou 2024-11-18  281  	u32 head, tail;
b87f920b934426 Lizhi Hou 2024-11-18  282  	u32 start_addr;
b87f920b934426 Lizhi Hou 2024-11-18  283  	int ret;
b87f920b934426 Lizhi Hou 2024-11-18  284  
b87f920b934426 Lizhi Hou 2024-11-18  285  	if (mailbox_reg_read_non_zero(mb_chann, mb_chann->res[CHAN_RES_I2X].mb_tail_ptr_reg, &tail))
b87f920b934426 Lizhi Hou 2024-11-18  286  		return -EINVAL;
b87f920b934426 Lizhi Hou 2024-11-18  287  	head = mb_chann->i2x_head;
b87f920b934426 Lizhi Hou 2024-11-18  288  	ringbuf_size = mailbox_get_ringbuf_size(mb_chann, CHAN_RES_I2X);
b87f920b934426 Lizhi Hou 2024-11-18  289  	start_addr = mb_chann->res[CHAN_RES_I2X].rb_start_addr;
b87f920b934426 Lizhi Hou 2024-11-18  290  
b87f920b934426 Lizhi Hou 2024-11-18  291  	if (unlikely(tail > ringbuf_size || !IS_ALIGNED(tail, 4))) {
b87f920b934426 Lizhi Hou 2024-11-18  292  		MB_WARN_ONCE(mb_chann, "Invalid tail 0x%x", tail);
b87f920b934426 Lizhi Hou 2024-11-18  293  		return -EINVAL;
b87f920b934426 Lizhi Hou 2024-11-18  294  	}
b87f920b934426 Lizhi Hou 2024-11-18  295  
b87f920b934426 Lizhi Hou 2024-11-18  296  	/* ringbuf empty */
b87f920b934426 Lizhi Hou 2024-11-18  297  	if (head == tail)
b87f920b934426 Lizhi Hou 2024-11-18  298  		return -ENOENT;
b87f920b934426 Lizhi Hou 2024-11-18  299  
b87f920b934426 Lizhi Hou 2024-11-18  300  	if (head == ringbuf_size)
b87f920b934426 Lizhi Hou 2024-11-18  301  		head = 0;
b87f920b934426 Lizhi Hou 2024-11-18  302  
b87f920b934426 Lizhi Hou 2024-11-18  303  	/* Peek size of the message or TOMBSTONE */
b87f920b934426 Lizhi Hou 2024-11-18  304  	read_addr = mb_chann->mb->res.ringbuf_base + start_addr + head;
3c8cfec3fcc4fe Lizhi Hou 2025-01-02  305  	header.total_size = readl(read_addr);
b87f920b934426 Lizhi Hou 2024-11-18  306  	/* size is TOMBSTONE, set next read from 0 */
b87f920b934426 Lizhi Hou 2024-11-18  307  	if (header.total_size == TOMBSTONE) {
b87f920b934426 Lizhi Hou 2024-11-18  308  		if (head < tail) {
b87f920b934426 Lizhi Hou 2024-11-18  309  			MB_WARN_ONCE(mb_chann, "Tombstone, head 0x%x tail 0x%x",
b87f920b934426 Lizhi Hou 2024-11-18  310  				     head, tail);
b87f920b934426 Lizhi Hou 2024-11-18  311  			return -EINVAL;
b87f920b934426 Lizhi Hou 2024-11-18  312  		}
b87f920b934426 Lizhi Hou 2024-11-18  313  		mailbox_set_headptr(mb_chann, 0);
b87f920b934426 Lizhi Hou 2024-11-18  314  		return 0;
b87f920b934426 Lizhi Hou 2024-11-18  315  	}
b87f920b934426 Lizhi Hou 2024-11-18  316  
b87f920b934426 Lizhi Hou 2024-11-18  317  	if (unlikely(!header.total_size || !IS_ALIGNED(header.total_size, 4))) {
b87f920b934426 Lizhi Hou 2024-11-18  318  		MB_WARN_ONCE(mb_chann, "Invalid total size 0x%x", header.total_size);
b87f920b934426 Lizhi Hou 2024-11-18  319  		return -EINVAL;
b87f920b934426 Lizhi Hou 2024-11-18  320  	}
b87f920b934426 Lizhi Hou 2024-11-18  321  	msg_size = sizeof(header) + header.total_size;
b87f920b934426 Lizhi Hou 2024-11-18  322  
b87f920b934426 Lizhi Hou 2024-11-18  323  	if (msg_size > ringbuf_size - head || msg_size > tail - head) {
b87f920b934426 Lizhi Hou 2024-11-18  324  		MB_WARN_ONCE(mb_chann, "Invalid message size %d, tail %d, head %d",
b87f920b934426 Lizhi Hou 2024-11-18  325  			     msg_size, tail, head);
b87f920b934426 Lizhi Hou 2024-11-18  326  		return -EINVAL;
b87f920b934426 Lizhi Hou 2024-11-18  327  	}
b87f920b934426 Lizhi Hou 2024-11-18  328  
b87f920b934426 Lizhi Hou 2024-11-18  329  	rest = sizeof(header) - sizeof(u32);
b87f920b934426 Lizhi Hou 2024-11-18  330  	read_addr += sizeof(u32);
3c8cfec3fcc4fe Lizhi Hou 2025-01-02  331  	memcpy_fromio((u32 *)&header + 1, read_addr, rest);
b87f920b934426 Lizhi Hou 2024-11-18  332  	read_addr += rest;
b87f920b934426 Lizhi Hou 2024-11-18  333  
b87f920b934426 Lizhi Hou 2024-11-18 @334  	ret = mailbox_get_resp(mb_chann, &header, (u32 *)read_addr);
b87f920b934426 Lizhi Hou 2024-11-18  335  
b87f920b934426 Lizhi Hou 2024-11-18  336  	mailbox_set_headptr(mb_chann, head + msg_size);
b87f920b934426 Lizhi Hou 2024-11-18  337  	/* After update head, it can equal to ringbuf_size. This is expected. */
b87f920b934426 Lizhi Hou 2024-11-18  338  	trace_mbox_set_head(MAILBOX_NAME, mb_chann->msix_irq,
b87f920b934426 Lizhi Hou 2024-11-18  339  			    header.opcode, header.id);
b87f920b934426 Lizhi Hou 2024-11-18  340  
b87f920b934426 Lizhi Hou 2024-11-18  341  	return ret;
b87f920b934426 Lizhi Hou 2024-11-18  342  }
b87f920b934426 Lizhi Hou 2024-11-18  343  

:::::: The code at line 334 was first introduced by commit
:::::: b87f920b934426a24d54613f12ed67c03ae05024 accel/amdxdna: Support hardware mailbox

:::::: TO: Lizhi Hou <lizhi.hou@amd.com>
:::::: CC: Jeffrey Hugo <quic_jhugo@quicinc.com>

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

             reply	other threads:[~2025-01-13  1:22 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-13  1:21 kernel test robot [this message]
2025-01-13 14:25 ` [linux-next:master 5495/7860] drivers/accel/amdxdna/amdxdna_mailbox.c:334:52: sparse: sparse: cast removes address space '__iomem' of expression Mario Limonciello
2025-01-13 16:35   ` Lizhi Hou

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=202501130921.ktqwsMLH-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=lizhi.hou@amd.com \
    --cc=mario.limonciello@amd.com \
    --cc=oe-kbuild-all@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.