summaryrefslogtreecommitdiffstats
path: root/drivers/cpuidle
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2015-05-10 01:18:46 +0200
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2015-05-14 21:37:47 +0200
commit827a5aefc542b8fb17c00de06118e5cd0e3800f2 (patch)
tree5728ec6fb8a0b67057e35d131ed2a2d7d67b2a69 /drivers/cpuidle
parentfaad38492814112e3e7ce94d90123bbe301fff33 (diff)
downloadlinux-827a5aefc542b8fb17c00de06118e5cd0e3800f2.tar.gz
linux-827a5aefc542b8fb17c00de06118e5cd0e3800f2.tar.bz2
linux-827a5aefc542b8fb17c00de06118e5cd0e3800f2.zip
sched / idle: Call default_idle_call() from cpuidle_enter_state()
The check of the cpuidle_enter() return value against -EBUSY made in call_cpuidle() will not be necessary any more if cpuidle_enter_state() calls default_idle_call() directly when it is about to return -EBUSY, so make that happen and eliminate the check. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Preeti U Murthy <preeti@linux.vnet.ibm.com> Tested-by: Preeti U Murthy <preeti@linux.vnet.ibm.com> Tested-by: Sudeep Holla <sudeep.holla@arm.com> Acked-by: Kevin Hilman <khilman@linaro.org>
Diffstat (limited to 'drivers/cpuidle')
-rw-r--r--drivers/cpuidle/cpuidle.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
index 9306dd5f460e..a7b9e679a2ef 100644
--- a/drivers/cpuidle/cpuidle.c
+++ b/drivers/cpuidle/cpuidle.c
@@ -167,8 +167,10 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
* local timer will be shut down. If a local timer is used from another
* CPU as a broadcast timer, this call may fail if it is not available.
*/
- if (broadcast && tick_broadcast_enter())
+ if (broadcast && tick_broadcast_enter()) {
+ default_idle_call();
return -EBUSY;
+ }
/* Take note of the planned idle state. */
sched_idle_set_state(target_state);