Messages in this thread | | | Date | Wed, 14 Oct 2009 08:37:18 +0800 | From | Lai Jiangshan <> | Subject | Re: [PATCH RFC tip/core/rcu 1/3] rcu: The Bloatwatch Edition, v7 |
| |
Paul E. McKenney wrote: >> It's an old issue. >> It's not only about RCUTINY, it's also about other rcu implementations: >> >> rcu_enter_nohz()/rcu_exit_nohz() are not called in pairs. >> >> irq_exit() calls tick_nohz_stop_sched_tick() which calls rcu_enter_nohz(), >> where is the corresponding rcu_exit_nohz()? >> (or tick_nohz_restart_sched_tick())? > > The tick_nohz_restart_sched_tick() function is called from the various > per-architecture cpu_idle() functions (or default_idle() or whatever > name that the architecture uses). For example, in: > > arch/x86/kernel/process_64.c > > the cpu_idle() function invokes tick_nohz_restart_sched_tick() just > before invoking schedule() to exit the idle loop. > > And, as you say, tick_nohz_restart_sched_tick() invokes rcu_exit_nohz(). > > Thanx, Paul > >
These tick_nohz_restart_sched_tick() which are called from the various per-architecture cpu_idle() functions are not the opposite of the tick_nohz_stop_sched_tick() in *irq_exit()*. So I figure that rcu_enter_nohz()/rcu_exit_nohz() are not called in pairs.
| |