diff options
author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2015-02-27 00:39:21 +0100 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2015-02-28 23:46:24 +0100 |
commit | 01e04f466e12e883907937eb04a9010533363f55 (patch) | |
tree | 3c10e3c6c051d508bdf655d5e06162b328ffe7cf /drivers/cpuidle/driver.c | |
parent | Linux 4.0-rc1 (diff) | |
download | linux-01e04f466e12e883907937eb04a9010533363f55.tar.xz linux-01e04f466e12e883907937eb04a9010533363f55.zip |
idle / sleep: Avoid excessive disabling and enabling interrupts
Disabling interrupts at the end of cpuidle_enter_freeze() is not
useful, because its caller, cpuidle_idle_call(), re-enables them
right away after invoking it.
To avoid that unnecessary back and forth dance with interrupts,
make cpuidle_enter_freeze() enable interrupts after calling
enter_freeze_proper() and drop the local_irq_disable() at its
end, so that all of the code paths in it end up with interrupts
enabled. Then, cpuidle_idle_call() will not need to re-enable
interrupts after calling cpuidle_enter_freeze() any more, because
the latter will return with interrupts enabled, in analogy with
cpuidle_enter().
Reported-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Diffstat (limited to 'drivers/cpuidle/driver.c')
0 files changed, 0 insertions, 0 deletions