All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lizhi Hou <lizhi.hou@amd.com>
To: Mario Limonciello <mario.limonciello@amd.com>,
	kernel test robot <lkp@intel.com>
Cc: <oe-kbuild-all@lists.linux.dev>
Subject: Re: [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 08:35:33 -0800	[thread overview]
Message-ID: <b88b259e-3f95-471f-eae3-076f25de400a@amd.com> (raw)
In-Reply-To: <4b525d86-e1fb-4294-b804-cd065904a409@amd.com>


On 1/13/25 06:25, Mario Limonciello wrote:
> On 1/12/2025 19:21, kernel test robot wrote:
>> 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);
>
> Looking through this, why is there a cast in the first place?
> The third argument for mailbox_get_resp() is void *.  Can't you just 
> pass read_addr directly?

read_addr is __iomem, thus the tool might still complain if I directly 
use read_addr without a case.

I will try this and see if it passes the tool check.


Thanks,

Lizhi

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

      reply	other threads:[~2025-01-13 16:35 UTC|newest]

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

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=b88b259e-3f95-471f-eae3-076f25de400a@amd.com \
    --to=lizhi.hou@amd.com \
    --cc=lkp@intel.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.