tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: d3d45f8220d60a0b2aaaacf8fb2be4e6ffd9008e commit: a425b6e1c69ba907b72b737a4d44f8cfbc43ce3c hinic: add mailbox function support date: 5 months ago :::::: branch date: 6 hours ago :::::: commit date: 5 months ago config: x86_64-randconfig-s022-20201003 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.2-201-g24bdaac6-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a425b6e1c69ba907b72b737a4d44f8cfbc43ce3c git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout a425b6e1c69ba907b72b737a4d44f8cfbc43ce3c # save the attached .config to linux build tree make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <l...@intel.com> echo echo "sparse warnings: (new ones prefixed by >>)" echo drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:543:54: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] <asn:2> *addr @@ got unsigned char [usertype] * @@ drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:543:54: sparse: expected void volatile [noderef] <asn:2> *addr >> drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:543:54: sparse: got >> unsigned char [usertype] * drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:566:58: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] <asn:2> *addr @@ got unsigned char [usertype] * @@ drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:566:58: sparse: expected void volatile [noderef] <asn:2> *addr drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:566:58: sparse: got unsigned char [usertype] * drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:601:6: sparse: sparse: symbol 'dump_mox_reg' was not declared. Should it be static? >> drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:618:22: sparse: sparse: >> cast to restricted __be64 >> drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:618:22: sparse: sparse: >> cast to restricted __be64 >> drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:618:22: sparse: sparse: >> cast to restricted __be64 >> drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:618:22: sparse: sparse: >> cast to restricted __be64 >> drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:618:22: sparse: sparse: >> cast to restricted __be64 >> drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:618:22: sparse: sparse: >> cast to restricted __be64 >> drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:618:22: sparse: sparse: >> cast to restricted __be64 >> drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:618:22: sparse: sparse: >> cast to restricted __be64 >> drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:618:22: sparse: sparse: >> cast to restricted __be64 >> drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:618:22: sparse: sparse: >> cast to restricted __be64 drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:1057:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected unsigned char [usertype] *data @@ got void [noderef] <asn:2> * @@ >> drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:1057:25: sparse: >> expected unsigned char [usertype] *data drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c:1057:25: sparse: got void [noderef] <asn:2> * drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c: note: in included file: drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:256:16: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int val @@ got restricted __be32 [usertype] @@ drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:256:16: sparse: expected unsigned int val drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:256:16: sparse: got restricted __be32 [usertype] drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:256:16: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int val @@ got restricted __be32 [usertype] @@ drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:256:16: sparse: expected unsigned int val drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:256:16: sparse: got restricted __be32 [usertype] drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:250:16: sparse: sparse: cast to restricted __be32 drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:250:16: sparse: sparse: cast to restricted __be32 drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:250:16: sparse: sparse: cast to restricted __be32 drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:250:16: sparse: sparse: cast to restricted __be32 drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:250:16: sparse: sparse: cast to restricted __be32 drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:250:16: sparse: sparse: cast to restricted __be32 drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:250:16: sparse: sparse: cast to restricted __be32 drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:250:16: sparse: sparse: cast to restricted __be32 drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:250:16: sparse: sparse: cast to restricted __be32 drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:250:16: sparse: sparse: cast to restricted __be32 drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:250:16: sparse: sparse: cast to restricted __be32 drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:250:16: sparse: sparse: cast to restricted __be32 drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:256:16: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int val @@ got restricted __be32 [usertype] @@ drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:256:16: sparse: expected unsigned int val drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:256:16: sparse: got restricted __be32 [usertype] drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:256:16: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int val @@ got restricted __be32 [usertype] @@ drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:256:16: sparse: expected unsigned int val drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:256:16: sparse: got restricted __be32 [usertype] drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:256:16: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int val @@ got restricted __be32 [usertype] @@ drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:256:16: sparse: expected unsigned int val drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:256:16: sparse: got restricted __be32 [usertype] drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:256:16: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int val @@ got restricted __be32 [usertype] @@ drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:256:16: sparse: expected unsigned int val drivers/net/ethernet/huawei/hinic/hinic_hw_if.h:256:16: sparse: got restricted __be32 [usertype] vim +543 drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c a425b6e1c69ba90 Luo bin 2020-04-25 535 a425b6e1c69ba90 Luo bin 2020-04-25 536 static void mbox_copy_header(struct hinic_hwdev *hwdev, a425b6e1c69ba90 Luo bin 2020-04-25 537 struct hinic_send_mbox *mbox, u64 *header) a425b6e1c69ba90 Luo bin 2020-04-25 538 { a425b6e1c69ba90 Luo bin 2020-04-25 539 u32 i, idx_max = MBOX_HEADER_SZ / sizeof(u32); a425b6e1c69ba90 Luo bin 2020-04-25 540 u32 *data = (u32 *)header; a425b6e1c69ba90 Luo bin 2020-04-25 541 a425b6e1c69ba90 Luo bin 2020-04-25 542 for (i = 0; i < idx_max; i++) a425b6e1c69ba90 Luo bin 2020-04-25 @543 __raw_writel(*(data + i), mbox->data + i * sizeof(u32)); a425b6e1c69ba90 Luo bin 2020-04-25 544 } a425b6e1c69ba90 Luo bin 2020-04-25 545 a425b6e1c69ba90 Luo bin 2020-04-25 546 static void mbox_copy_send_data(struct hinic_hwdev *hwdev, a425b6e1c69ba90 Luo bin 2020-04-25 547 struct hinic_send_mbox *mbox, void *seg, a425b6e1c69ba90 Luo bin 2020-04-25 548 u16 seg_len) a425b6e1c69ba90 Luo bin 2020-04-25 549 { a425b6e1c69ba90 Luo bin 2020-04-25 550 u8 mbox_max_buf[MBOX_SEG_LEN] = {0}; a425b6e1c69ba90 Luo bin 2020-04-25 551 u32 data_len, chk_sz = sizeof(u32); a425b6e1c69ba90 Luo bin 2020-04-25 552 u32 *data = seg; a425b6e1c69ba90 Luo bin 2020-04-25 553 u32 i, idx_max; a425b6e1c69ba90 Luo bin 2020-04-25 554 a425b6e1c69ba90 Luo bin 2020-04-25 555 /* The mbox message should be aligned in 4 bytes. */ a425b6e1c69ba90 Luo bin 2020-04-25 556 if (seg_len % chk_sz) { a425b6e1c69ba90 Luo bin 2020-04-25 557 memcpy(mbox_max_buf, seg, seg_len); a425b6e1c69ba90 Luo bin 2020-04-25 558 data = (u32 *)mbox_max_buf; a425b6e1c69ba90 Luo bin 2020-04-25 559 } a425b6e1c69ba90 Luo bin 2020-04-25 560 a425b6e1c69ba90 Luo bin 2020-04-25 561 data_len = seg_len; a425b6e1c69ba90 Luo bin 2020-04-25 562 idx_max = ALIGN(data_len, chk_sz) / chk_sz; a425b6e1c69ba90 Luo bin 2020-04-25 563 a425b6e1c69ba90 Luo bin 2020-04-25 564 for (i = 0; i < idx_max; i++) a425b6e1c69ba90 Luo bin 2020-04-25 565 __raw_writel(*(data + i), a425b6e1c69ba90 Luo bin 2020-04-25 566 mbox->data + MBOX_HEADER_SZ + i * sizeof(u32)); a425b6e1c69ba90 Luo bin 2020-04-25 567 } a425b6e1c69ba90 Luo bin 2020-04-25 568 a425b6e1c69ba90 Luo bin 2020-04-25 569 static void write_mbox_msg_attr(struct hinic_mbox_func_to_func *func_to_func, a425b6e1c69ba90 Luo bin 2020-04-25 570 u16 dst_func, u16 dst_aeqn, u16 seg_len, a425b6e1c69ba90 Luo bin 2020-04-25 571 int poll) a425b6e1c69ba90 Luo bin 2020-04-25 572 { a425b6e1c69ba90 Luo bin 2020-04-25 573 u16 rsp_aeq = (dst_aeqn == 0) ? 0 : HINIC_MBOX_RSP_AEQN; a425b6e1c69ba90 Luo bin 2020-04-25 574 u32 mbox_int, mbox_ctrl; a425b6e1c69ba90 Luo bin 2020-04-25 575 a425b6e1c69ba90 Luo bin 2020-04-25 576 mbox_int = HINIC_MBOX_INT_SET(dst_func, DST_FUNC) | a425b6e1c69ba90 Luo bin 2020-04-25 577 HINIC_MBOX_INT_SET(dst_aeqn, DST_AEQN) | a425b6e1c69ba90 Luo bin 2020-04-25 578 HINIC_MBOX_INT_SET(rsp_aeq, SRC_RESP_AEQN) | a425b6e1c69ba90 Luo bin 2020-04-25 579 HINIC_MBOX_INT_SET(NO_DMA_ATTRIBUTE_VAL, STAT_DMA) | a425b6e1c69ba90 Luo bin 2020-04-25 580 HINIC_MBOX_INT_SET(ALIGN(MBOX_SEG_LEN + MBOX_HEADER_SZ + a425b6e1c69ba90 Luo bin 2020-04-25 581 MBOX_INFO_SZ, MBOX_SEG_LEN_ALIGN) >> 2, a425b6e1c69ba90 Luo bin 2020-04-25 582 TX_SIZE) | a425b6e1c69ba90 Luo bin 2020-04-25 583 HINIC_MBOX_INT_SET(STRONG_ORDER, STAT_DMA_SO_RO) | a425b6e1c69ba90 Luo bin 2020-04-25 584 HINIC_MBOX_INT_SET(WRITE_BACK, WB_EN); a425b6e1c69ba90 Luo bin 2020-04-25 585 a425b6e1c69ba90 Luo bin 2020-04-25 586 hinic_hwif_write_reg(func_to_func->hwif, a425b6e1c69ba90 Luo bin 2020-04-25 587 HINIC_FUNC_CSR_MAILBOX_INT_OFFSET_OFF, mbox_int); a425b6e1c69ba90 Luo bin 2020-04-25 588 a425b6e1c69ba90 Luo bin 2020-04-25 589 wmb(); /* writing the mbox int attributes */ a425b6e1c69ba90 Luo bin 2020-04-25 590 mbox_ctrl = HINIC_MBOX_CTRL_SET(TX_NOT_DONE, TX_STATUS); a425b6e1c69ba90 Luo bin 2020-04-25 591 a425b6e1c69ba90 Luo bin 2020-04-25 592 if (poll) a425b6e1c69ba90 Luo bin 2020-04-25 593 mbox_ctrl |= HINIC_MBOX_CTRL_SET(NOT_TRIGGER, TRIGGER_AEQE); a425b6e1c69ba90 Luo bin 2020-04-25 594 else a425b6e1c69ba90 Luo bin 2020-04-25 595 mbox_ctrl |= HINIC_MBOX_CTRL_SET(TRIGGER, TRIGGER_AEQE); a425b6e1c69ba90 Luo bin 2020-04-25 596 a425b6e1c69ba90 Luo bin 2020-04-25 597 hinic_hwif_write_reg(func_to_func->hwif, a425b6e1c69ba90 Luo bin 2020-04-25 598 HINIC_FUNC_CSR_MAILBOX_CONTROL_OFF, mbox_ctrl); a425b6e1c69ba90 Luo bin 2020-04-25 599 } a425b6e1c69ba90 Luo bin 2020-04-25 600 a425b6e1c69ba90 Luo bin 2020-04-25 601 void dump_mox_reg(struct hinic_hwdev *hwdev) a425b6e1c69ba90 Luo bin 2020-04-25 602 { a425b6e1c69ba90 Luo bin 2020-04-25 603 u32 val; a425b6e1c69ba90 Luo bin 2020-04-25 604 a425b6e1c69ba90 Luo bin 2020-04-25 605 val = hinic_hwif_read_reg(hwdev->hwif, a425b6e1c69ba90 Luo bin 2020-04-25 606 HINIC_FUNC_CSR_MAILBOX_CONTROL_OFF); a425b6e1c69ba90 Luo bin 2020-04-25 607 dev_err(&hwdev->hwif->pdev->dev, "Mailbox control reg: 0x%x\n", val); a425b6e1c69ba90 Luo bin 2020-04-25 608 a425b6e1c69ba90 Luo bin 2020-04-25 609 val = hinic_hwif_read_reg(hwdev->hwif, a425b6e1c69ba90 Luo bin 2020-04-25 610 HINIC_FUNC_CSR_MAILBOX_INT_OFFSET_OFF); a425b6e1c69ba90 Luo bin 2020-04-25 611 dev_err(&hwdev->hwif->pdev->dev, "Mailbox interrupt offset: 0x%x\n", a425b6e1c69ba90 Luo bin 2020-04-25 612 val); a425b6e1c69ba90 Luo bin 2020-04-25 613 } a425b6e1c69ba90 Luo bin 2020-04-25 614 a425b6e1c69ba90 Luo bin 2020-04-25 615 static u16 get_mbox_status(struct hinic_send_mbox *mbox) a425b6e1c69ba90 Luo bin 2020-04-25 616 { a425b6e1c69ba90 Luo bin 2020-04-25 617 /* write back is 16B, but only use first 4B */ a425b6e1c69ba90 Luo bin 2020-04-25 @618 u64 wb_val = be64_to_cpu(*mbox->wb_status); a425b6e1c69ba90 Luo bin 2020-04-25 619 a425b6e1c69ba90 Luo bin 2020-04-25 620 rmb(); /* verify reading before check */ a425b6e1c69ba90 Luo bin 2020-04-25 621 a425b6e1c69ba90 Luo bin 2020-04-25 622 return (u16)(wb_val & MBOX_WB_STATUS_ERRCODE_MASK); a425b6e1c69ba90 Luo bin 2020-04-25 623 } a425b6e1c69ba90 Luo bin 2020-04-25 624 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
.config.gz
Description: application/gzip