summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSridhar Ancha <sancha@codeaurora.org>2016-06-22 15:16:52 +0530
committerKyle Yan <kyan@codeaurora.org>2016-07-05 15:28:23 -0700
commitfabcd63ec020a7e99a1015fc467f36fb98f03c05 (patch)
tree47d69c9df6026947bdfd44f8a5046955ddb07c78
parentefeed9cca468fb4261c0c407231c0b6fa55b0035 (diff)
msm: ipa: Fix queuing the inactive timer work on perf cluster
Using schedule_delayed_work will cause work queues to be scheduled on the CPU where the timer expires. This can make work to be scheduled on perf cluster resulting in power issues. Make changes to use queue_delayed_work on an unbound workqueue so that the work gets scheduled based on the load and mostly it gets scheduled in power cluster. Change-Id: I13605eea5fb3e7eeece1d8c81334981ea7de9cb9 Acked-by: Chaitanya Pratapa <cpratapa@qti.qualcomm.com> Signed-off-by: Sridhar Ancha <sancha@codeaurora.org>
-rw-r--r--drivers/platform/msm/ipa/ipa_rm_inactivity_timer.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/platform/msm/ipa/ipa_rm_inactivity_timer.c b/drivers/platform/msm/ipa/ipa_rm_inactivity_timer.c
index 2f2cef05441d..8e33d7164dd6 100644
--- a/drivers/platform/msm/ipa/ipa_rm_inactivity_timer.c
+++ b/drivers/platform/msm/ipa/ipa_rm_inactivity_timer.c
@@ -78,7 +78,7 @@ static void ipa_rm_inactivity_timer_func(struct work_struct *work)
if (ipa_rm_it_handles[me->resource_name].reschedule_work) {
IPA_RM_DBG_LOW("%s: setting delayed work\n", __func__);
ipa_rm_it_handles[me->resource_name].reschedule_work = false;
- schedule_delayed_work(
+ queue_delayed_work(system_unbound_wq,
&ipa_rm_it_handles[me->resource_name].work,
ipa_rm_it_handles[me->resource_name].jiffies);
} else if (ipa_rm_it_handles[me->resource_name].resource_requested) {
@@ -262,7 +262,8 @@ int ipa_rm_inactivity_timer_release_resource(
ipa_rm_it_handles[resource_name].work_in_progress = true;
ipa_rm_it_handles[resource_name].reschedule_work = false;
IPA_RM_DBG_LOW("%s: setting delayed work\n", __func__);
- schedule_delayed_work(&ipa_rm_it_handles[resource_name].work,
+ queue_delayed_work(system_unbound_wq,
+ &ipa_rm_it_handles[resource_name].work,
ipa_rm_it_handles[resource_name].jiffies);
spin_unlock_irqrestore(&ipa_rm_it_handles[resource_name].lock, flags);