|
@@ -51,9 +51,10 @@ static int snooze_loop(struct cpuidle_device *dev,
|
|
{
|
|
{
|
|
u64 snooze_exit_time;
|
|
u64 snooze_exit_time;
|
|
|
|
|
|
- local_irq_enable();
|
|
|
|
set_thread_flag(TIF_POLLING_NRFLAG);
|
|
set_thread_flag(TIF_POLLING_NRFLAG);
|
|
|
|
|
|
|
|
+ local_irq_enable();
|
|
|
|
+
|
|
snooze_exit_time = get_tb() + snooze_timeout;
|
|
snooze_exit_time = get_tb() + snooze_timeout;
|
|
ppc64_runlatch_off();
|
|
ppc64_runlatch_off();
|
|
HMT_very_low();
|
|
HMT_very_low();
|
|
@@ -66,6 +67,7 @@ static int snooze_loop(struct cpuidle_device *dev,
|
|
ppc64_runlatch_on();
|
|
ppc64_runlatch_on();
|
|
clear_thread_flag(TIF_POLLING_NRFLAG);
|
|
clear_thread_flag(TIF_POLLING_NRFLAG);
|
|
smp_mb();
|
|
smp_mb();
|
|
|
|
+
|
|
return index;
|
|
return index;
|
|
}
|
|
}
|
|
|
|
|