From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: Re: [PATCH] mhi_bus: core: Wait for ready state after reset
Date: Wed, 17 Feb 2021 10:58:17 +0800 [thread overview]
Message-ID: <202102171055.QDzumOqo-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 12847 bytes --]
CC: kbuild-all(a)lists.01.org
In-Reply-To: <1613508745-32324-1-git-send-email-jhugo@codeaurora.org>
References: <1613508745-32324-1-git-send-email-jhugo@codeaurora.org>
TO: Jeffrey Hugo <jhugo@codeaurora.org>
TO: manivannan.sadhasivam(a)linaro.org
TO: hemantk(a)codeaurora.org
CC: bbhatt(a)codeaurora.org
CC: linux-arm-msm(a)vger.kernel.org
CC: linux-kernel(a)vger.kernel.org
CC: Jeffrey Hugo <jhugo@codeaurora.org>
Hi Jeffrey,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on linus/master]
[also build test WARNING on v5.11 next-20210216]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Jeffrey-Hugo/mhi_bus-core-Wait-for-ready-state-after-reset/20210217-045558
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git f40ddce88593482919761f74910f42f4b84c004b
:::::: branch date: 6 hours ago
:::::: commit date: 6 hours ago
config: i386-randconfig-m021-20210215 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
drivers/bus/mhi/core/pm.c:501 mhi_pm_disable_transition() error: uninitialized symbol 'cur_state'.
vim +/cur_state +501 drivers/bus/mhi/core/pm.c
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 447
556bbb442bbb44 Bhaumik Bhatt 2020-11-09 448 /* Handle shutdown transitions */
a03c7a86e12721 Bhaumik Bhatt 2020-11-09 449 static void mhi_pm_disable_transition(struct mhi_controller *mhi_cntrl)
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 450 {
a03c7a86e12721 Bhaumik Bhatt 2020-11-09 451 enum mhi_pm_state cur_state;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 452 struct mhi_event *mhi_event;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 453 struct mhi_cmd_ctxt *cmd_ctxt;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 454 struct mhi_cmd *mhi_cmd;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 455 struct mhi_event_ctxt *er_ctxt;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 456 struct device *dev = &mhi_cntrl->mhi_dev->dev;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 457 int ret, i;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 458
a03c7a86e12721 Bhaumik Bhatt 2020-11-09 459 dev_dbg(dev, "Processing disable transition with PM state: %s\n",
a03c7a86e12721 Bhaumik Bhatt 2020-11-09 460 to_mhi_pm_state_str(mhi_cntrl->pm_state));
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 461
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 462 mutex_lock(&mhi_cntrl->pm_mutex);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 463
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 464 /* Trigger MHI RESET so that the device will not access host memory */
a03c7a86e12721 Bhaumik Bhatt 2020-11-09 465 if (!MHI_PM_IN_FATAL_STATE(mhi_cntrl->pm_state)) {
a9148d0d4715fb Jeffrey Hugo 2021-02-16 466 u32 in_reset = -1, ready = 0;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 467 unsigned long timeout = msecs_to_jiffies(mhi_cntrl->timeout_ms);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 468
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 469 dev_dbg(dev, "Triggering MHI Reset in device\n");
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 470 mhi_set_mhi_state(mhi_cntrl, MHI_STATE_RESET);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 471
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 472 /* Wait for the reset bit to be cleared by the device */
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 473 ret = wait_event_timeout(mhi_cntrl->state_event,
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 474 mhi_read_reg_field(mhi_cntrl,
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 475 mhi_cntrl->regs,
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 476 MHICTRL,
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 477 MHICTRL_RESET_MASK,
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 478 MHICTRL_RESET_SHIFT,
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 479 &in_reset) ||
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 480 !in_reset, timeout);
556bbb442bbb44 Bhaumik Bhatt 2020-11-09 481 if (!ret || in_reset)
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 482 dev_err(dev, "Device failed to exit MHI Reset state\n");
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 483
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 484 /*
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 485 * Device will clear BHI_INTVEC as a part of RESET processing,
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 486 * hence re-program it
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 487 */
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 488 mhi_write_reg(mhi_cntrl, mhi_cntrl->bhi, BHI_INTVEC, 0);
a9148d0d4715fb Jeffrey Hugo 2021-02-16 489
a9148d0d4715fb Jeffrey Hugo 2021-02-16 490 if (!MHI_IN_PBL(mhi_get_exec_env(mhi_cntrl))) {
a9148d0d4715fb Jeffrey Hugo 2021-02-16 491 /* wait for ready to be set */
a9148d0d4715fb Jeffrey Hugo 2021-02-16 492 ret = wait_event_timeout(mhi_cntrl->state_event,
a9148d0d4715fb Jeffrey Hugo 2021-02-16 493 mhi_read_reg_field(mhi_cntrl,
a9148d0d4715fb Jeffrey Hugo 2021-02-16 494 mhi_cntrl->regs,
a9148d0d4715fb Jeffrey Hugo 2021-02-16 495 MHISTATUS,
a9148d0d4715fb Jeffrey Hugo 2021-02-16 496 MHISTATUS_READY_MASK,
a9148d0d4715fb Jeffrey Hugo 2021-02-16 497 MHISTATUS_READY_SHIFT,
a9148d0d4715fb Jeffrey Hugo 2021-02-16 498 &ready)
a9148d0d4715fb Jeffrey Hugo 2021-02-16 499 || ready, timeout);
a9148d0d4715fb Jeffrey Hugo 2021-02-16 500 if ((!ret || !ready) &&
a9148d0d4715fb Jeffrey Hugo 2021-02-16 @501 cur_state == MHI_PM_SYS_ERR_PROCESS) {
a9148d0d4715fb Jeffrey Hugo 2021-02-16 502 dev_err(dev,
a9148d0d4715fb Jeffrey Hugo 2021-02-16 503 "Device failed to enter READY state\n");
a9148d0d4715fb Jeffrey Hugo 2021-02-16 504 mutex_unlock(&mhi_cntrl->pm_mutex);
a9148d0d4715fb Jeffrey Hugo 2021-02-16 505 return;
a9148d0d4715fb Jeffrey Hugo 2021-02-16 506 }
a9148d0d4715fb Jeffrey Hugo 2021-02-16 507 }
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 508 }
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 509
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 510 dev_dbg(dev,
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 511 "Waiting for all pending event ring processing to complete\n");
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 512 mhi_event = mhi_cntrl->mhi_event;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 513 for (i = 0; i < mhi_cntrl->total_ev_rings; i++, mhi_event++) {
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 514 if (mhi_event->offload_ev)
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 515 continue;
6cc1716102b554 Bhaumik Bhatt 2020-11-09 516 free_irq(mhi_cntrl->irq[mhi_event->irq], mhi_event);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 517 tasklet_kill(&mhi_event->task);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 518 }
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 519
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 520 /* Release lock and wait for all pending threads to complete */
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 521 mutex_unlock(&mhi_cntrl->pm_mutex);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 522 dev_dbg(dev, "Waiting for all pending threads to complete\n");
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 523 wake_up_all(&mhi_cntrl->state_event);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 524
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 525 dev_dbg(dev, "Reset all active channels and remove MHI devices\n");
10ea8bcda5ae54 Loic Poulain 2020-11-25 526 device_for_each_child(&mhi_cntrl->mhi_dev->dev, NULL, mhi_destroy_device);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 527
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 528 mutex_lock(&mhi_cntrl->pm_mutex);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 529
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 530 WARN_ON(atomic_read(&mhi_cntrl->dev_wake));
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 531 WARN_ON(atomic_read(&mhi_cntrl->pending_pkts));
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 532
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 533 /* Reset the ev rings and cmd rings */
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 534 dev_dbg(dev, "Resetting EV CTXT and CMD CTXT\n");
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 535 mhi_cmd = mhi_cntrl->mhi_cmd;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 536 cmd_ctxt = mhi_cntrl->mhi_ctxt->cmd_ctxt;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 537 for (i = 0; i < NR_OF_CMD_RINGS; i++, mhi_cmd++, cmd_ctxt++) {
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 538 struct mhi_ring *ring = &mhi_cmd->ring;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 539
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 540 ring->rp = ring->base;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 541 ring->wp = ring->base;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 542 cmd_ctxt->rp = cmd_ctxt->rbase;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 543 cmd_ctxt->wp = cmd_ctxt->rbase;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 544 }
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 545
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 546 mhi_event = mhi_cntrl->mhi_event;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 547 er_ctxt = mhi_cntrl->mhi_ctxt->er_ctxt;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 548 for (i = 0; i < mhi_cntrl->total_ev_rings; i++, er_ctxt++,
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 549 mhi_event++) {
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 550 struct mhi_ring *ring = &mhi_event->ring;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 551
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 552 /* Skip offload events */
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 553 if (mhi_event->offload_ev)
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 554 continue;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 555
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 556 ring->rp = ring->base;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 557 ring->wp = ring->base;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 558 er_ctxt->rp = er_ctxt->rbase;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 559 er_ctxt->wp = er_ctxt->rbase;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 560 }
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 561
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 562 /* Move to disable state */
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 563 write_lock_irq(&mhi_cntrl->pm_lock);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 564 cur_state = mhi_tryset_pm_state(mhi_cntrl, MHI_PM_DISABLE);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 565 write_unlock_irq(&mhi_cntrl->pm_lock);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 566 if (unlikely(cur_state != MHI_PM_DISABLE))
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 567 dev_err(dev, "Error moving from PM state: %s to: %s\n",
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 568 to_mhi_pm_state_str(cur_state),
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 569 to_mhi_pm_state_str(MHI_PM_DISABLE));
556bbb442bbb44 Bhaumik Bhatt 2020-11-09 570
556bbb442bbb44 Bhaumik Bhatt 2020-11-09 571 dev_dbg(dev, "Exiting with PM state: %s, MHI state: %s\n",
556bbb442bbb44 Bhaumik Bhatt 2020-11-09 572 to_mhi_pm_state_str(mhi_cntrl->pm_state),
556bbb442bbb44 Bhaumik Bhatt 2020-11-09 573 TO_MHI_STATE_STR(mhi_cntrl->dev_state));
556bbb442bbb44 Bhaumik Bhatt 2020-11-09 574
556bbb442bbb44 Bhaumik Bhatt 2020-11-09 575 mutex_unlock(&mhi_cntrl->pm_mutex);
556bbb442bbb44 Bhaumik Bhatt 2020-11-09 576 }
556bbb442bbb44 Bhaumik Bhatt 2020-11-09 577
---
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: 38046 bytes --]
next reply other threads:[~2021-02-17 2:58 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-17 2:58 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2021-02-16 20:52 [PATCH] mhi_bus: core: Wait for ready state after reset Jeffrey Hugo
2021-02-17 0:36 ` kernel test robot
2021-02-17 0:36 ` kernel test robot
2021-02-19 8:37 ` Dan Carpenter
2021-02-19 8:37 ` Dan Carpenter
2021-02-19 8:37 ` Dan Carpenter
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=202102171055.QDzumOqo-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild@lists.01.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: 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.