All of lore.kernel.org
 help / color / mirror / Atom feed
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 v1 02/10] bus: mhi: core: Move to using high priority workqueue
Date: Fri, 18 Sep 2020 19:02:27 -0700	[thread overview]
Message-ID: <1600480955-16827-3-git-send-email-bbhatt@codeaurora.org> (raw)
In-Reply-To: <1600480955-16827-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 | 7 +++++++
 drivers/bus/mhi/core/pm.c   | 2 +-
 include/linux/mhi.h         | 2 ++
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/bus/mhi/core/init.c b/drivers/bus/mhi/core/init.c
index 1b4161e..ca32563 100644
--- a/drivers/bus/mhi/core/init.c
+++ b/drivers/bus/mhi/core/init.c
@@ -890,6 +890,11 @@ 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)
+		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);
@@ -977,10 +982,12 @@ int mhi_register_controller(struct mhi_controller *mhi_cntrl,
 
 error_alloc_dev:
 	kfree(mhi_cntrl->mhi_cmd);
+	destroy_workqueue(mhi_cntrl->hiprio_wq);
 
 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 ce4d969..9d4789d 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 fb45a0f..7677676 100644
--- a/include/linux/mhi.h
+++ b/include/linux/mhi.h
@@ -338,6 +338,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
  * @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)
@@ -421,6 +422,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


  parent reply	other threads:[~2020-09-19  2:03 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-19  2:02 [PATCH v1 00/10] Bug fixes and improvements for MHI power operations Bhaumik Bhatt
2020-09-19  2:02 ` [PATCH v1 01/10] bus: mhi: core: Use appropriate names for firmware load functions Bhaumik Bhatt
2020-10-09 15:23   ` Manivannan Sadhasivam
2020-09-19  2:02 ` Bhaumik Bhatt [this message]
2020-10-09 15:49   ` [PATCH v1 02/10] bus: mhi: core: Move to using high priority workqueue Manivannan Sadhasivam
2020-09-19  2:02 ` [PATCH v1 03/10] bus: mhi: core: Skip device wake in error or shutdown states Bhaumik Bhatt
2020-10-09 15:54   ` Manivannan Sadhasivam
2020-09-19  2:02 ` [PATCH v1 04/10] bus: mhi: core: Use the IRQF_ONESHOT flag for the BHI interrupt line Bhaumik Bhatt
2020-10-09 15:57   ` Manivannan Sadhasivam
2020-10-09 16:04     ` Jeffrey Hugo
2020-10-12 23:52       ` Bhaumik Bhatt
2020-09-19  2:02 ` [PATCH v1 05/10] bus: mhi: core: Disable IRQs when powering down Bhaumik Bhatt
2020-10-09 16:02   ` Manivannan Sadhasivam
2020-10-13  0:03     ` Bhaumik Bhatt
2020-10-10 23:45   ` Manu Gautam
2020-09-19  2:02 ` [PATCH v1 06/10] bus: mhi: core: Improve shutdown handling after link down detection Bhaumik Bhatt
2020-10-09 16:19   ` Manivannan Sadhasivam
2020-10-13 18:40     ` Bhaumik Bhatt
2020-10-11  0:06   ` Manu Gautam
2020-09-19  2:02 ` [PATCH v1 07/10] bus: mhi: core: Move to SYS_ERROR regardless of RDDM capability Bhaumik Bhatt
2020-10-09 16:32   ` Manivannan Sadhasivam
2020-10-14  1:06     ` Bhaumik Bhatt
2020-09-19  2:02 ` [PATCH v1 08/10] bus: mhi: core: Move to an error state on any firmware load failure Bhaumik Bhatt
2020-10-09 16:42   ` Manivannan Sadhasivam
2020-10-14  1:37     ` Bhaumik Bhatt
2020-09-19  2:02 ` [PATCH v1 09/10] bus: mhi: core: Move to an error state on mission mode failure Bhaumik Bhatt
2020-10-09 16:44   ` Manivannan Sadhasivam
2020-09-19  2:02 ` [PATCH v1 10/10] bus: mhi: core: Mark device inactive soon after host issues a shutdown Bhaumik Bhatt
2020-10-09 17:18   ` Manivannan Sadhasivam
2020-10-11  0:17   ` Manu Gautam

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=1600480955-16827-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.