* [linux-next:master 5495/7860] drivers/accel/amdxdna/amdxdna_mailbox.c:334:52: sparse: sparse: cast removes address space '__iomem' of expression
@ 2025-01-13 1:21 kernel test robot
2025-01-13 14:25 ` Mario Limonciello
0 siblings, 1 reply; 3+ messages in thread
From: kernel test robot @ 2025-01-13 1:21 UTC (permalink / raw)
To: Lizhi Hou; +Cc: oe-kbuild-all, Mario Limonciello
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
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [linux-next:master 5495/7860] drivers/accel/amdxdna/amdxdna_mailbox.c:334:52: sparse: sparse: cast removes address space '__iomem' of expression
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
0 siblings, 1 reply; 3+ messages in thread
From: Mario Limonciello @ 2025-01-13 14:25 UTC (permalink / raw)
To: kernel test robot, Lizhi Hou; +Cc: oe-kbuild-all
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?
> 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>
>
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [linux-next:master 5495/7860] drivers/accel/amdxdna/amdxdna_mailbox.c:334:52: sparse: sparse: cast removes address space '__iomem' of expression
2025-01-13 14:25 ` Mario Limonciello
@ 2025-01-13 16:35 ` Lizhi Hou
0 siblings, 0 replies; 3+ messages in thread
From: Lizhi Hou @ 2025-01-13 16:35 UTC (permalink / raw)
To: Mario Limonciello, kernel test robot; +Cc: oe-kbuild-all
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>
>>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-01-13 16:35 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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 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.