From: kernel test robot <lkp@intel.com> To: Viresh Kumar <viresh.kumar@linaro.org> Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org, Jassi Brar <jaswinder.singh@linaro.org>, Tushar Khandelwal <tushar.khandelwal@arm.com> Subject: drivers/mailbox/arm_mhuv2.c:506:24: sparse: sparse: incorrect type in argument 1 (different address spaces) Date: Mon, 28 Dec 2020 20:52:48 +0800 [thread overview] Message-ID: <202012282043.lQs7uMPf-lkp@intel.com> (raw) [-- Attachment #1: Type: text/plain, Size: 9061 bytes --] tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 5c8fe583cce542aa0b84adc939ce85293de36e5e commit: 5a6338cce9f4133c478d3b10b300f96dd644379a mailbox: arm_mhuv2: Add driver date: 3 weeks ago config: arm64-randconfig-s031-20201221 (attached as .config) compiler: aarch64-linux-gcc (GCC) 9.3.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.3-184-g1b896707-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5a6338cce9f4133c478d3b10b300f96dd644379a git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 5a6338cce9f4133c478d3b10b300f96dd644379a # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=arm64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> "sparse warnings: (new ones prefixed by >>)" >> drivers/mailbox/arm_mhuv2.c:506:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int [usertype] * @@ drivers/mailbox/arm_mhuv2.c:506:24: sparse: expected void const volatile [noderef] __iomem *addr drivers/mailbox/arm_mhuv2.c:506:24: sparse: got unsigned int [usertype] * >> drivers/mailbox/arm_mhuv2.c:506:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int [usertype] * @@ drivers/mailbox/arm_mhuv2.c:506:24: sparse: expected void const volatile [noderef] __iomem *addr drivers/mailbox/arm_mhuv2.c:506:24: sparse: got unsigned int [usertype] * >> drivers/mailbox/arm_mhuv2.c:506:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int [usertype] * @@ drivers/mailbox/arm_mhuv2.c:506:24: sparse: expected void const volatile [noderef] __iomem *addr drivers/mailbox/arm_mhuv2.c:506:24: sparse: got unsigned int [usertype] * >> drivers/mailbox/arm_mhuv2.c:506:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int [usertype] * @@ drivers/mailbox/arm_mhuv2.c:506:24: sparse: expected void const volatile [noderef] __iomem *addr drivers/mailbox/arm_mhuv2.c:506:24: sparse: got unsigned int [usertype] * >> drivers/mailbox/arm_mhuv2.c:506:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int [usertype] * @@ drivers/mailbox/arm_mhuv2.c:506:24: sparse: expected void const volatile [noderef] __iomem *addr drivers/mailbox/arm_mhuv2.c:506:24: sparse: got unsigned int [usertype] * >> drivers/mailbox/arm_mhuv2.c:506:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int [usertype] * @@ drivers/mailbox/arm_mhuv2.c:506:24: sparse: expected void const volatile [noderef] __iomem *addr drivers/mailbox/arm_mhuv2.c:506:24: sparse: got unsigned int [usertype] * >> drivers/mailbox/arm_mhuv2.c:547:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected unsigned int [usertype] *reg @@ got unsigned int [noderef] __iomem * @@ drivers/mailbox/arm_mhuv2.c:547:42: sparse: expected unsigned int [usertype] *reg drivers/mailbox/arm_mhuv2.c:547:42: sparse: got unsigned int [noderef] __iomem * drivers/mailbox/arm_mhuv2.c:625:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected unsigned int [usertype] *reg @@ got unsigned int [noderef] __iomem * @@ drivers/mailbox/arm_mhuv2.c:625:42: sparse: expected unsigned int [usertype] *reg drivers/mailbox/arm_mhuv2.c:625:42: sparse: got unsigned int [noderef] __iomem * >> drivers/mailbox/arm_mhuv2.c:972:24: sparse: sparse: dereference of noderef expression drivers/mailbox/arm_mhuv2.c:973:22: sparse: sparse: dereference of noderef expression drivers/mailbox/arm_mhuv2.c:993:25: sparse: sparse: dereference of noderef expression drivers/mailbox/arm_mhuv2.c:1026:24: sparse: sparse: dereference of noderef expression drivers/mailbox/arm_mhuv2.c:1027:22: sparse: sparse: dereference of noderef expression drivers/mailbox/arm_mhuv2.c:1048:17: sparse: sparse: dereference of noderef expression vim +506 drivers/mailbox/arm_mhuv2.c 498 499 static struct mbox_chan *get_irq_chan_comb(struct mhuv2 *mhu, u32 *reg) 500 { 501 struct mbox_chan *chans = mhu->mbox.chans; 502 int channel = 0, i, offset = 0, windows, protocol, ch_wn; 503 u32 stat; 504 505 for (i = 0; i < MHUV2_CMB_INT_ST_REG_CNT; i++) { > 506 stat = readl_relaxed(reg + i); 507 if (!stat) 508 continue; 509 510 ch_wn = i * MHUV2_STAT_BITS + __builtin_ctz(stat); 511 512 for (i = 0; i < mhu->length; i += 2) { 513 protocol = mhu->protocols[i]; 514 windows = mhu->protocols[i + 1]; 515 516 if (ch_wn >= offset + windows) { 517 if (protocol == DOORBELL) 518 channel += MHUV2_STAT_BITS * windows; 519 else 520 channel++; 521 522 offset += windows; 523 continue; 524 } 525 526 /* Return first chan of the window in doorbell mode */ 527 if (protocol == DOORBELL) 528 channel += MHUV2_STAT_BITS * (ch_wn - offset); 529 530 return &chans[channel]; 531 } 532 } 533 534 return ERR_PTR(-EIO); 535 } 536 537 static irqreturn_t mhuv2_sender_interrupt(int irq, void *data) 538 { 539 struct mhuv2 *mhu = data; 540 struct device *dev = mhu->mbox.dev; 541 struct mhuv2_mbox_chan_priv *priv; 542 struct mbox_chan *chan; 543 unsigned long flags; 544 int i, found = 0; 545 u32 stat; 546 > 547 chan = get_irq_chan_comb(mhu, mhu->send->chcomb_int_st); 548 if (IS_ERR(chan)) { 549 dev_warn(dev, "Failed to find channel for the Tx interrupt\n"); 550 return IRQ_NONE; 551 } 552 priv = chan->con_priv; 553 554 if (!IS_PROTOCOL_DOORBELL(priv)) { 555 writel_relaxed(1, &mhu->send->ch_wn[priv->ch_wn_idx + priv->windows - 1].int_clr); 556 557 if (chan->cl) { 558 mbox_chan_txdone(chan, 0); 559 return IRQ_HANDLED; 560 } 561 562 dev_warn(dev, "Tx interrupt Received on channel (%u) not currently attached to a mailbox client\n", 563 priv->ch_wn_idx); 564 return IRQ_NONE; 565 } 566 567 /* Clear the interrupt first, so we don't miss any doorbell later */ 568 writel_relaxed(1, &mhu->send->ch_wn[priv->ch_wn_idx].int_clr); 569 570 /* 571 * In Doorbell mode, make sure no new transitions happen while the 572 * interrupt handler is trying to find the finished doorbell tx 573 * operations, else we may think few of the transfers were complete 574 * before they actually were. 575 */ 576 spin_lock_irqsave(&mhu->doorbell_pending_lock, flags); 577 578 /* 579 * In case of doorbell mode, the first channel of the window is returned 580 * by get_irq_chan_comb(). Find all the pending channels here. 581 */ 582 stat = readl_relaxed(&mhu->send->ch_wn[priv->ch_wn_idx].stat); 583 584 for (i = 0; i < MHUV2_STAT_BITS; i++) { 585 priv = chan[i].con_priv; 586 587 /* Find cases where pending was 1, but stat's bit is cleared */ 588 if (priv->pending ^ ((stat >> i) & 0x1)) { 589 BUG_ON(!priv->pending); 590 591 if (!chan->cl) { 592 dev_warn(dev, "Tx interrupt received on doorbell (%u : %u) channel not currently attached to a mailbox client\n", 593 priv->ch_wn_idx, i); 594 continue; 595 } 596 597 mbox_chan_txdone(&chan[i], 0); 598 priv->pending = 0; 599 found++; 600 } 601 } 602 603 spin_unlock_irqrestore(&mhu->doorbell_pending_lock, flags); 604 605 if (!found) { 606 /* 607 * We may have already processed the doorbell in the previous 608 * iteration if the interrupt came right after we cleared it but 609 * before we read the stat register. 610 */ 611 dev_dbg(dev, "Couldn't find the doorbell (%u) for the Tx interrupt interrupt\n", 612 priv->ch_wn_idx); 613 return IRQ_NONE; 614 } 615 616 return IRQ_HANDLED; 617 } 618 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 31565 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com> To: kbuild-all@lists.01.org Subject: drivers/mailbox/arm_mhuv2.c:506:24: sparse: sparse: incorrect type in argument 1 (different address spaces) Date: Mon, 28 Dec 2020 20:52:48 +0800 [thread overview] Message-ID: <202012282043.lQs7uMPf-lkp@intel.com> (raw) [-- Attachment #1: Type: text/plain, Size: 9244 bytes --] tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 5c8fe583cce542aa0b84adc939ce85293de36e5e commit: 5a6338cce9f4133c478d3b10b300f96dd644379a mailbox: arm_mhuv2: Add driver date: 3 weeks ago config: arm64-randconfig-s031-20201221 (attached as .config) compiler: aarch64-linux-gcc (GCC) 9.3.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.3-184-g1b896707-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5a6338cce9f4133c478d3b10b300f96dd644379a git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 5a6338cce9f4133c478d3b10b300f96dd644379a # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=arm64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> "sparse warnings: (new ones prefixed by >>)" >> drivers/mailbox/arm_mhuv2.c:506:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int [usertype] * @@ drivers/mailbox/arm_mhuv2.c:506:24: sparse: expected void const volatile [noderef] __iomem *addr drivers/mailbox/arm_mhuv2.c:506:24: sparse: got unsigned int [usertype] * >> drivers/mailbox/arm_mhuv2.c:506:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int [usertype] * @@ drivers/mailbox/arm_mhuv2.c:506:24: sparse: expected void const volatile [noderef] __iomem *addr drivers/mailbox/arm_mhuv2.c:506:24: sparse: got unsigned int [usertype] * >> drivers/mailbox/arm_mhuv2.c:506:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int [usertype] * @@ drivers/mailbox/arm_mhuv2.c:506:24: sparse: expected void const volatile [noderef] __iomem *addr drivers/mailbox/arm_mhuv2.c:506:24: sparse: got unsigned int [usertype] * >> drivers/mailbox/arm_mhuv2.c:506:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int [usertype] * @@ drivers/mailbox/arm_mhuv2.c:506:24: sparse: expected void const volatile [noderef] __iomem *addr drivers/mailbox/arm_mhuv2.c:506:24: sparse: got unsigned int [usertype] * >> drivers/mailbox/arm_mhuv2.c:506:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int [usertype] * @@ drivers/mailbox/arm_mhuv2.c:506:24: sparse: expected void const volatile [noderef] __iomem *addr drivers/mailbox/arm_mhuv2.c:506:24: sparse: got unsigned int [usertype] * >> drivers/mailbox/arm_mhuv2.c:506:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int [usertype] * @@ drivers/mailbox/arm_mhuv2.c:506:24: sparse: expected void const volatile [noderef] __iomem *addr drivers/mailbox/arm_mhuv2.c:506:24: sparse: got unsigned int [usertype] * >> drivers/mailbox/arm_mhuv2.c:547:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected unsigned int [usertype] *reg @@ got unsigned int [noderef] __iomem * @@ drivers/mailbox/arm_mhuv2.c:547:42: sparse: expected unsigned int [usertype] *reg drivers/mailbox/arm_mhuv2.c:547:42: sparse: got unsigned int [noderef] __iomem * drivers/mailbox/arm_mhuv2.c:625:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected unsigned int [usertype] *reg @@ got unsigned int [noderef] __iomem * @@ drivers/mailbox/arm_mhuv2.c:625:42: sparse: expected unsigned int [usertype] *reg drivers/mailbox/arm_mhuv2.c:625:42: sparse: got unsigned int [noderef] __iomem * >> drivers/mailbox/arm_mhuv2.c:972:24: sparse: sparse: dereference of noderef expression drivers/mailbox/arm_mhuv2.c:973:22: sparse: sparse: dereference of noderef expression drivers/mailbox/arm_mhuv2.c:993:25: sparse: sparse: dereference of noderef expression drivers/mailbox/arm_mhuv2.c:1026:24: sparse: sparse: dereference of noderef expression drivers/mailbox/arm_mhuv2.c:1027:22: sparse: sparse: dereference of noderef expression drivers/mailbox/arm_mhuv2.c:1048:17: sparse: sparse: dereference of noderef expression vim +506 drivers/mailbox/arm_mhuv2.c 498 499 static struct mbox_chan *get_irq_chan_comb(struct mhuv2 *mhu, u32 *reg) 500 { 501 struct mbox_chan *chans = mhu->mbox.chans; 502 int channel = 0, i, offset = 0, windows, protocol, ch_wn; 503 u32 stat; 504 505 for (i = 0; i < MHUV2_CMB_INT_ST_REG_CNT; i++) { > 506 stat = readl_relaxed(reg + i); 507 if (!stat) 508 continue; 509 510 ch_wn = i * MHUV2_STAT_BITS + __builtin_ctz(stat); 511 512 for (i = 0; i < mhu->length; i += 2) { 513 protocol = mhu->protocols[i]; 514 windows = mhu->protocols[i + 1]; 515 516 if (ch_wn >= offset + windows) { 517 if (protocol == DOORBELL) 518 channel += MHUV2_STAT_BITS * windows; 519 else 520 channel++; 521 522 offset += windows; 523 continue; 524 } 525 526 /* Return first chan of the window in doorbell mode */ 527 if (protocol == DOORBELL) 528 channel += MHUV2_STAT_BITS * (ch_wn - offset); 529 530 return &chans[channel]; 531 } 532 } 533 534 return ERR_PTR(-EIO); 535 } 536 537 static irqreturn_t mhuv2_sender_interrupt(int irq, void *data) 538 { 539 struct mhuv2 *mhu = data; 540 struct device *dev = mhu->mbox.dev; 541 struct mhuv2_mbox_chan_priv *priv; 542 struct mbox_chan *chan; 543 unsigned long flags; 544 int i, found = 0; 545 u32 stat; 546 > 547 chan = get_irq_chan_comb(mhu, mhu->send->chcomb_int_st); 548 if (IS_ERR(chan)) { 549 dev_warn(dev, "Failed to find channel for the Tx interrupt\n"); 550 return IRQ_NONE; 551 } 552 priv = chan->con_priv; 553 554 if (!IS_PROTOCOL_DOORBELL(priv)) { 555 writel_relaxed(1, &mhu->send->ch_wn[priv->ch_wn_idx + priv->windows - 1].int_clr); 556 557 if (chan->cl) { 558 mbox_chan_txdone(chan, 0); 559 return IRQ_HANDLED; 560 } 561 562 dev_warn(dev, "Tx interrupt Received on channel (%u) not currently attached to a mailbox client\n", 563 priv->ch_wn_idx); 564 return IRQ_NONE; 565 } 566 567 /* Clear the interrupt first, so we don't miss any doorbell later */ 568 writel_relaxed(1, &mhu->send->ch_wn[priv->ch_wn_idx].int_clr); 569 570 /* 571 * In Doorbell mode, make sure no new transitions happen while the 572 * interrupt handler is trying to find the finished doorbell tx 573 * operations, else we may think few of the transfers were complete 574 * before they actually were. 575 */ 576 spin_lock_irqsave(&mhu->doorbell_pending_lock, flags); 577 578 /* 579 * In case of doorbell mode, the first channel of the window is returned 580 * by get_irq_chan_comb(). Find all the pending channels here. 581 */ 582 stat = readl_relaxed(&mhu->send->ch_wn[priv->ch_wn_idx].stat); 583 584 for (i = 0; i < MHUV2_STAT_BITS; i++) { 585 priv = chan[i].con_priv; 586 587 /* Find cases where pending was 1, but stat's bit is cleared */ 588 if (priv->pending ^ ((stat >> i) & 0x1)) { 589 BUG_ON(!priv->pending); 590 591 if (!chan->cl) { 592 dev_warn(dev, "Tx interrupt received on doorbell (%u : %u) channel not currently attached to a mailbox client\n", 593 priv->ch_wn_idx, i); 594 continue; 595 } 596 597 mbox_chan_txdone(&chan[i], 0); 598 priv->pending = 0; 599 found++; 600 } 601 } 602 603 spin_unlock_irqrestore(&mhu->doorbell_pending_lock, flags); 604 605 if (!found) { 606 /* 607 * We may have already processed the doorbell in the previous 608 * iteration if the interrupt came right after we cleared it but 609 * before we read the stat register. 610 */ 611 dev_dbg(dev, "Couldn't find the doorbell (%u) for the Tx interrupt interrupt\n", 612 priv->ch_wn_idx); 613 return IRQ_NONE; 614 } 615 616 return IRQ_HANDLED; 617 } 618 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org [-- Attachment #2: config.gz --] [-- Type: application/gzip, Size: 31565 bytes --]
next reply other threads:[~2020-12-28 12:54 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-12-28 12:52 kernel test robot [this message] 2020-12-28 12:52 ` drivers/mailbox/arm_mhuv2.c:506:24: sparse: sparse: incorrect type in argument 1 (different address spaces) 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=202012282043.lQs7uMPf-lkp@intel.com \ --to=lkp@intel.com \ --cc=jaswinder.singh@linaro.org \ --cc=kbuild-all@lists.01.org \ --cc=linux-kernel@vger.kernel.org \ --cc=tushar.khandelwal@arm.com \ --cc=viresh.kumar@linaro.org \ /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: linkBe 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.