]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - arch/powerpc/kernel/idle.c
powerpc: Random little legacy iSeries removal tidy ups
[karo-tx-linux.git] / arch / powerpc / kernel / idle.c
index 0a48bf5db6c84bfbf0152a9b3c52e83b9f43646d..e8e821146f3813292390e803ca07fba062e2a1cb 100644 (file)
@@ -84,7 +84,11 @@ void cpu_idle(void)
 
                                start_critical_timings();
 
-                               local_irq_enable();
+                               /* Some power_save functions return with
+                                * interrupts enabled, some don't.
+                                */
+                               if (irqs_disabled())
+                                       local_irq_enable();
                                set_thread_flag(TIF_POLLING_NRFLAG);
 
                        } else {
@@ -101,11 +105,11 @@ void cpu_idle(void)
                ppc64_runlatch_on();
                rcu_idle_exit();
                tick_nohz_idle_exit();
-               preempt_enable_no_resched();
-               if (cpu_should_die())
+               if (cpu_should_die()) {
+                       sched_preempt_enable_no_resched();
                        cpu_die();
-               schedule();
-               preempt_disable();
+               }
+               schedule_preempt_disabled();
        }
 }