diff options
-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)); |