summaryrefslogtreecommitdiff
path: root/drivers/platform/msm
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 /drivers/platform/msm
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>
Diffstat (limited to 'drivers/platform/msm')
-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);