--- linux-2.6.35.noarch/kernel/rcutree.c~ 2011-08-22 10:46:35.518079924 -0400 +++ linux-2.6.35.noarch/kernel/rcutree.c 2011-08-22 10:46:47.151040660 -0400 @@ -1376,9 +1376,6 @@ static void rcu_process_callbacks(struct * grace-period manipulations above. */ smp_mb(); /* See above block comment. */ - - /* If we are last CPU on way to dyntick-idle mode, accelerate it. */ - rcu_needs_cpu_flush(); } static void --- linux-2.6.35.noarch/kernel/rcutree.h~ 2011-08-22 10:48:36.063675727 -0400 +++ linux-2.6.35.noarch/kernel/rcutree.h 2011-08-22 10:48:43.639650514 -0400 @@ -384,6 +384,5 @@ static int rcu_preempt_needs_cpu(int cpu static void __cpuinit rcu_preempt_init_percpu_data(int cpu); static void rcu_preempt_send_cbs_to_orphanage(void); static void __init __rcu_init_preempt(void); -static void rcu_needs_cpu_flush(void); #endif /* #ifndef RCU_TREE_NONCORE */ --- a/kernel/rcutree_plugin.h +++ a/kernel/rcutree_plugin.h @@ -1954,15 +1954,6 @@ int rcu_needs_cpu(int cpu) return rcu_needs_cpu_quick_check(cpu); } -/* - * Check to see if we need to continue a callback-flush operations to - * allow the last CPU to enter dyntick-idle mode. But fast dyntick-idle - * entry is not configured, so we never do need to. - */ -static void rcu_needs_cpu_flush(void) -{ -} - #else /* #if !defined(CONFIG_RCU_FAST_NO_HZ) */ #define RCU_NEEDS_CPU_FLUSHES 5 @@ -2039,20 +2030,4 @@ int rcu_needs_cpu(int cpu) return c; } -/* - * Check to see if we need to continue a callback-flush operations to - * allow the last CPU to enter dyntick-idle mode. - */ -static void rcu_needs_cpu_flush(void) -{ - int cpu = smp_processor_id(); - unsigned long flags; - - if (per_cpu(rcu_dyntick_drain, cpu) <= 0) - return; - local_irq_save(flags); - (void)rcu_needs_cpu(cpu); - local_irq_restore(flags); -} - #endif /* #else #if !defined(CONFIG_RCU_FAST_NO_HZ) */