]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - arch/frv/kernel/process.c
[PATCH] sched: disable preempt in idle tasks
[net-next-2.6.git] / arch / frv / kernel / process.c
index 3001b82b1514856efed7204f6b09e0345a8cb974..54a452136f00e8f93cabd0bcdf8e5a450d662b26 100644 (file)
@@ -77,16 +77,20 @@ void (*idle)(void) = core_sleep_idle;
  */
 void cpu_idle(void)
 {
+       int cpu = smp_processor_id();
+
        /* endless idle loop with no priority at all */
        while (1) {
                while (!need_resched()) {
-                       irq_stat[smp_processor_id()].idle_timestamp = jiffies;
+                       irq_stat[cpu].idle_timestamp = jiffies;
 
                        if (!frv_dma_inprogress && idle)
                                idle();
                }
 
+               preempt_enable_no_resched();
                schedule();
+               preempt_disable();
        }
 }