|
@@ -558,20 +558,21 @@ void tick_nohz_idle_exit(void)
|
|
|
|
|
|
local_irq_disable();
|
|
|
|
|
|
- if (ts->idle_active || (ts->inidle && ts->tick_stopped))
|
|
|
+ WARN_ON_ONCE(!ts->inidle);
|
|
|
+
|
|
|
+ ts->inidle = 0;
|
|
|
+
|
|
|
+ if (ts->idle_active || ts->tick_stopped)
|
|
|
now = ktime_get();
|
|
|
|
|
|
if (ts->idle_active)
|
|
|
tick_nohz_stop_idle(cpu, now);
|
|
|
|
|
|
- if (!ts->inidle || !ts->tick_stopped) {
|
|
|
- ts->inidle = 0;
|
|
|
+ if (!ts->tick_stopped) {
|
|
|
local_irq_enable();
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- ts->inidle = 0;
|
|
|
-
|
|
|
/* Update jiffies first */
|
|
|
select_nohz_load_balancer(0);
|
|
|
tick_do_update_jiffies64(now);
|