]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - arch/s390/kernel/process.c
[PATCH] sched: disable preempt in idle tasks
[net-next-2.6.git] / arch / s390 / kernel / process.c
index 9f3dff6c0b72286a7c769787dcb0d9046bc29d93..66ca5757e3686c7c837d7a415acaebe0f4266f06 100644 (file)
@@ -102,7 +102,6 @@ void default_idle(void)
        local_irq_disable();
         if (need_resched()) {
                local_irq_enable();
-                schedule();
                 return;
         }
 
@@ -139,8 +138,14 @@ void default_idle(void)
 
 void cpu_idle(void)
 {
-       for (;;)
-               default_idle();
+       for (;;) {
+               while (!need_resched())
+                       default_idle();
+
+               preempt_enable_no_resched();
+               schedule();
+               preempt_disable();
+       }
 }
 
 void show_regs(struct pt_regs *regs)