diff options
author | Mark Brown <broonie@linaro.org> | 2014-06-27 10:56:53 +0100 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-06-27 10:56:53 +0100 |
commit | ee8cfc683036b6386fccfb2121d70f3d68e5a1a7 (patch) | |
tree | dc6f2a5e628d374457044fca8eaf672578cfd386 | |
parent | 57a6a7f20504a39e8ff2aa0cbeafd5c7f02a84f5 (diff) | |
parent | 65abdc9b50378783981ed2f3453a0aae090404e4 (diff) |
Merge branch 'for-lsk' of git://git.linaro.org/arm/big.LITTLE/mp into lsk-v3.10-big.LITTLE
-rw-r--r-- | kernel/sched/fair.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 26c43b463017..161da1ab3995 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -3560,10 +3560,12 @@ static enum hrtimer_restart hmp_cpu_keepalive_notify(struct hrtimer *hrtimer) * If there are any, set ns_delay to * ('target_residency of state with shortest too-big latency' - 1) * 1000. */ -static void hmp_keepalive_delay(unsigned int *ns_delay) +static void hmp_keepalive_delay(int cpu, unsigned int *ns_delay) { + struct cpuidle_device *dev = per_cpu(cpuidle_devices, cpu); struct cpuidle_driver *drv; - drv = cpuidle_driver_ref(); + + drv = cpuidle_get_cpu_driver(dev); if (drv) { unsigned int us_delay = UINT_MAX; unsigned int us_max_delay = *ns_delay / 1000; @@ -3582,7 +3584,6 @@ static void hmp_keepalive_delay(unsigned int *ns_delay) else *ns_delay = 1000 * (us_delay - 1); } - cpuidle_driver_unref(); } static void hmp_cpu_keepalive_trigger(void) @@ -3596,7 +3597,7 @@ static void hmp_cpu_keepalive_trigger(void) CLOCK_MONOTONIC, HRTIMER_MODE_REL_PINNED); keepalive->timer.function = hmp_cpu_keepalive_notify; - hmp_keepalive_delay(&ns_delay); + hmp_keepalive_delay(cpu, &ns_delay); keepalive->delay = ns_to_ktime(ns_delay); keepalive->init = true; } |