diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-12 22:42:15 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-12 22:42:15 -0400 |
commit | b2e09f633a3994ee97fa6bc734b533d9c8e6ea0f (patch) | |
tree | 8f398d3f7ac19a4f4d64862086597f335d977203 /drivers/cpuidle | |
parent | 3737a12761636ebde0f09ef49daebb8eed18cc8a (diff) | |
parent | 535560d841b2d54f31280e05e9c6ffd19da0c4e7 (diff) |
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull more scheduler updates from Ingo Molnar:
"Second round of scheduler changes:
- try-to-wakeup and IPI reduction speedups, from Andy Lutomirski
- continued power scheduling cleanups and refactorings, from Nicolas
Pitre
- misc fixes and enhancements"
* 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
sched/deadline: Delete extraneous extern for to_ratio()
sched/idle: Optimize try-to-wake-up IPI
sched/idle: Simplify wake_up_idle_cpu()
sched/idle: Clear polling before descheduling the idle thread
sched, trace: Add a tracepoint for IPI-less remote wakeups
cpuidle: Set polling in poll_idle
sched: Remove redundant assignment to "rt_rq" in update_curr_rt(...)
sched: Rename capacity related flags
sched: Final power vs. capacity cleanups
sched: Remove remaining dubious usage of "power"
sched: Let 'struct sched_group_power' care about CPU capacity
sched/fair: Disambiguate existing/remaining "capacity" usage
sched/fair: Change "has_capacity" to "has_free_capacity"
sched/fair: Remove "power" from 'struct numa_stats'
sched: Fix signedness bug in yield_to()
sched/fair: Use time_after() in record_wakee()
sched/balancing: Reduce the rate of needless idle load balancing
sched/fair: Fix unlocked reads of some cfs_b->quota/period
Diffstat (limited to 'drivers/cpuidle')
-rw-r--r-- | drivers/cpuidle/driver.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/cpuidle/driver.c b/drivers/cpuidle/driver.c index 136d6a283e0a..9634f20e3926 100644 --- a/drivers/cpuidle/driver.c +++ b/drivers/cpuidle/driver.c | |||
@@ -187,8 +187,11 @@ static int poll_idle(struct cpuidle_device *dev, | |||
187 | 187 | ||
188 | t1 = ktime_get(); | 188 | t1 = ktime_get(); |
189 | local_irq_enable(); | 189 | local_irq_enable(); |
190 | while (!need_resched()) | 190 | if (!current_set_polling_and_test()) { |
191 | cpu_relax(); | 191 | while (!need_resched()) |
192 | cpu_relax(); | ||
193 | } | ||
194 | current_clr_polling(); | ||
192 | 195 | ||
193 | t2 = ktime_get(); | 196 | t2 = ktime_get(); |
194 | diff = ktime_to_us(ktime_sub(t2, t1)); | 197 | diff = ktime_to_us(ktime_sub(t2, t1)); |