From: Bhaumik Bhatt <bbhatt@codeaurora.org>
To: manivannan.sadhasivam@linaro.org
Cc: linux-arm-msm@vger.kernel.org, hemantk@codeaurora.org,
jhugo@codeaurora.org, linux-kernel@vger.kernel.org,
Bhaumik Bhatt <bbhatt@codeaurora.org>
Subject: [PATCH v3 02/12] bus: mhi: core: Move to using high priority workqueue
Date: Thu, 29 Oct 2020 21:10:47 -0700 [thread overview]
Message-ID: <1604031057-32820-3-git-send-email-bbhatt@codeaurora.org> (raw)
In-Reply-To: <1604031057-32820-1-git-send-email-bbhatt@codeaurora.org>
MHI work is currently scheduled on the global/system workqueue and can
encounter delays on a stressed system. To avoid those unforeseen
delays which can hamper bootup or shutdown times, use a dedicated high
priority workqueue instead of the global/system workqueue.
Signed-off-by: Bhaumik Bhatt <bbhatt@codeaurora.org>
---
drivers/bus/mhi/core/init.c | 8 ++++++++
drivers/bus/mhi/core/pm.c | 2 +-
include/linux/mhi.h | 2 ++
3 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/bus/mhi/core/init.c b/drivers/bus/mhi/core/init.c
index 0ffdebd..23b6dd6 100644
--- a/drivers/bus/mhi/core/init.c
+++ b/drivers/bus/mhi/core/init.c
@@ -880,6 +880,13 @@ int mhi_register_controller(struct mhi_controller *mhi_cntrl,
INIT_WORK(&mhi_cntrl->st_worker, mhi_pm_st_worker);
init_waitqueue_head(&mhi_cntrl->state_event);
+ mhi_cntrl->hiprio_wq = alloc_ordered_workqueue
+ ("mhi_hiprio_wq", WQ_MEM_RECLAIM | WQ_HIGHPRI);
+ if (!mhi_cntrl->hiprio_wq) {
+ dev_err(mhi_cntrl->cntrl_dev, "Failed to allocate workqueue\n");
+ goto error_alloc_cmd;
+ }
+
mhi_cmd = mhi_cntrl->mhi_cmd;
for (i = 0; i < NR_OF_CMD_RINGS; i++, mhi_cmd++)
spin_lock_init(&mhi_cmd->lock);
@@ -969,6 +976,7 @@ int mhi_register_controller(struct mhi_controller *mhi_cntrl,
error_alloc_cmd:
vfree(mhi_cntrl->mhi_chan);
kfree(mhi_cntrl->mhi_event);
+ destroy_workqueue(mhi_cntrl->hiprio_wq);
return ret;
}
diff --git a/drivers/bus/mhi/core/pm.c b/drivers/bus/mhi/core/pm.c
index 3de7b16..805b6fa74 100644
--- a/drivers/bus/mhi/core/pm.c
+++ b/drivers/bus/mhi/core/pm.c
@@ -597,7 +597,7 @@ int mhi_queue_state_transition(struct mhi_controller *mhi_cntrl,
list_add_tail(&item->node, &mhi_cntrl->transition_list);
spin_unlock_irqrestore(&mhi_cntrl->transition_lock, flags);
- schedule_work(&mhi_cntrl->st_worker);
+ queue_work(mhi_cntrl->hiprio_wq, &mhi_cntrl->st_worker);
return 0;
}
diff --git a/include/linux/mhi.h b/include/linux/mhi.h
index d4841e5..8961cbc 100644
--- a/include/linux/mhi.h
+++ b/include/linux/mhi.h
@@ -337,6 +337,7 @@ struct mhi_controller_config {
* @wlock: Lock for protecting device wakeup
* @mhi_link_info: Device bandwidth info
* @st_worker: State transition worker
+ * @hiprio_wq: High priority workqueue for MHI work such as state transitions
* @state_event: State change event
* @status_cb: CB function to notify power states of the device (required)
* @wake_get: CB function to assert device wake (optional)
@@ -419,6 +420,7 @@ struct mhi_controller {
spinlock_t wlock;
struct mhi_link_info mhi_link_info;
struct work_struct st_worker;
+ struct workqueue_struct *hiprio_wq;
wait_queue_head_t state_event;
void (*status_cb)(struct mhi_controller *mhi_cntrl,
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
next prev parent reply other threads:[~2020-10-30 4:11 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-30 4:10 [PATCH v3 00/12] Bug fixes and improvements for MHI power operations Bhaumik Bhatt
2020-10-30 4:10 ` [PATCH v3 01/12] bus: mhi: core: Use appropriate names for firmware load functions Bhaumik Bhatt
2020-10-30 13:29 ` Manivannan Sadhasivam
2020-10-30 4:10 ` Bhaumik Bhatt [this message]
2020-10-30 13:35 ` [PATCH v3 02/12] bus: mhi: core: Move to using high priority workqueue Manivannan Sadhasivam
2020-10-30 4:10 ` [PATCH v3 03/12] bus: mhi: core: Skip device wake in error or shutdown states Bhaumik Bhatt
2020-10-30 4:10 ` [PATCH v3 04/12] bus: mhi: core: Move to SYS_ERROR regardless of RDDM capability Bhaumik Bhatt
2020-10-30 13:52 ` Manivannan Sadhasivam
2020-10-30 19:29 ` Bhaumik Bhatt
2020-10-30 4:10 ` [PATCH v3 05/12] bus: mhi: core: Prevent sending multiple RDDM entry callbacks Bhaumik Bhatt
2020-10-30 13:56 ` Manivannan Sadhasivam
2020-10-30 4:10 ` [PATCH v3 06/12] bus: mhi: core: Move to an error state on any firmware load failure Bhaumik Bhatt
2020-10-30 14:00 ` Manivannan Sadhasivam
2020-10-30 4:10 ` [PATCH v3 07/12] bus: mhi: core: Use appropriate label in firmware load handler API Bhaumik Bhatt
2020-10-30 14:00 ` Manivannan Sadhasivam
2020-10-30 4:10 ` [PATCH v3 08/12] bus: mhi: core: Move to an error state on mission mode failure Bhaumik Bhatt
2020-10-30 4:10 ` [PATCH v3 09/12] bus: mhi: core: Check for IRQ availability during registration Bhaumik Bhatt
2020-10-30 14:02 ` Manivannan Sadhasivam
2020-10-30 4:10 ` [PATCH v3 10/12] bus: mhi: core: Separate system error and power down handling Bhaumik Bhatt
2020-10-30 14:06 ` Manivannan Sadhasivam
2020-10-30 19:34 ` Bhaumik Bhatt
2020-10-31 6:54 ` Manivannan Sadhasivam
2020-11-02 16:52 ` Bhaumik Bhatt
2020-10-30 4:10 ` [PATCH v3 11/12] bus: mhi: core: Mark and maintain device states early on after power down Bhaumik Bhatt
2020-10-30 14:10 ` Manivannan Sadhasivam
2020-10-30 4:10 ` [PATCH v3 12/12] bus: mhi: core: Remove MHI event ring IRQ handlers when powering down Bhaumik Bhatt
2020-10-30 14:11 ` Manivannan Sadhasivam
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=1604031057-32820-3-git-send-email-bbhatt@codeaurora.org \
--to=bbhatt@codeaurora.org \
--cc=hemantk@codeaurora.org \
--cc=jhugo@codeaurora.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=manivannan.sadhasivam@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: 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.