From 625eb1943593795e8a3a5768d801ff3cc541857b Mon Sep 17 00:00:00 2001 From: Anil Kumar Mamidala Date: Wed, 23 Mar 2016 20:44:18 +0530 Subject: 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 --- kernel/power/qos.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'kernel') 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, -- cgit v1.2.3