cpuidle: Clean up fallback handling in cpuidle_idle_call()
Move the fallback code path in cpuidle_idle_call() to the end of the function to avoid jumping to a label in an if () branch. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
31a3409065
commit
dfcacc154f
@ -124,20 +124,8 @@ static void cpuidle_idle_call(void)
|
|||||||
* Fall back to the default arch idle method on errors.
|
* Fall back to the default arch idle method on errors.
|
||||||
*/
|
*/
|
||||||
next_state = cpuidle_select(drv, dev);
|
next_state = cpuidle_select(drv, dev);
|
||||||
if (next_state < 0) {
|
if (next_state < 0)
|
||||||
use_default:
|
goto use_default;
|
||||||
/*
|
|
||||||
* We can't use the cpuidle framework, let's use the default
|
|
||||||
* idle routine.
|
|
||||||
*/
|
|
||||||
if (current_clr_polling_and_test())
|
|
||||||
local_irq_enable();
|
|
||||||
else
|
|
||||||
arch_cpu_idle();
|
|
||||||
|
|
||||||
goto exit_idle;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The idle task must be scheduled, it is pointless to
|
* The idle task must be scheduled, it is pointless to
|
||||||
@ -195,6 +183,19 @@ exit_idle:
|
|||||||
|
|
||||||
rcu_idle_exit();
|
rcu_idle_exit();
|
||||||
start_critical_timings();
|
start_critical_timings();
|
||||||
|
return;
|
||||||
|
|
||||||
|
use_default:
|
||||||
|
/*
|
||||||
|
* We can't use the cpuidle framework, let's use the default
|
||||||
|
* idle routine.
|
||||||
|
*/
|
||||||
|
if (current_clr_polling_and_test())
|
||||||
|
local_irq_enable();
|
||||||
|
else
|
||||||
|
arch_cpu_idle();
|
||||||
|
|
||||||
|
goto exit_idle;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user