diff options
| author | Anil Kumar Mamidala <amami@codeaurora.org> | 2016-03-23 20:44:18 +0530 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-11-24 21:42:52 -0800 |
| commit | 625eb1943593795e8a3a5768d801ff3cc541857b (patch) | |
| tree | 25fcd79ba737d56e4e82f251a2634d91eeedb2de /kernel/power/qos.c | |
| parent | bee274711e8d2ddb97fb1e80a18f295e9f97fa87 (diff) | |
qos: wake up cores based on the qos updated cpu mask
If the qos value is increased only for a subset of cpu's
aggregated qos for those cpu's is still the previous value.
This is because the qos request list is maintained per
request and not per cpu. In this case as there is no change
in aggregated qos value, these cpu's are not wokenup to
take the new qos value into effect.
So wakeup cpu's even if the aggregated qos value does not change
but the cpumask changes.
Change-Id: If5a4a100108e85e04beb77e5249bd6c452672edf
Signed-off-by: Anil Kumar Mamidala <amami@codeaurora.org>
Diffstat (limited to 'kernel/power/qos.c')
| -rw-r--r-- | kernel/power/qos.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/kernel/power/qos.c b/kernel/power/qos.c index 69c32c42080f..b822206ac811 100644 --- a/kernel/power/qos.c +++ b/kernel/power/qos.c @@ -358,7 +358,11 @@ int pm_qos_update_target(struct pm_qos_constraints *c, spin_unlock_irqrestore(&pm_qos_lock, flags); trace_pm_qos_update_target(action, prev_value, curr_value); - if (prev_value != curr_value) { + /* + * if cpu mask bits are set, call the notifier call chain + * to update the new qos restriction for the cores + */ + if (!cpumask_empty(&cpus)) { ret = 1; if (c->notifiers) blocking_notifier_call_chain(c->notifiers, |
