Messages in this thread | | | Date | Wed, 14 Dec 2011 12:48:53 -0800 | From | "Paul E. McKenney" <> | Subject | Re: [GIT PULL rcu/next] RCU commits for 3.3 |
| |
On Wed, Dec 14, 2011 at 06:47:38PM +0100, Frederic Weisbecker wrote: > On Wed, Dec 14, 2011 at 05:30:11PM +0100, Frederic Weisbecker wrote: > > On Wed, Dec 14, 2011 at 04:47:36PM +0100, Ingo Molnar wrote: > > > * Paul E. McKenney <paulmck@linux.vnet.ibm.com> wrote:
[ . . . ]
> > > Pulled into tip:core/rcu, thanks a lot Paul! > > > > > > Note that this commit from Frederic: > > > > > > 69e1e811dcc4: sched, nohz: Track nr_busy_cpus in the sched_group_power > > > > > > conflicted with this commit from Suresh in sched/core: > > > > > > 69e1e811dcc4: sched, nohz: Track nr_busy_cpus in the sched_group_power > > > > > > I resolved it by making the set_cpu_sd_state_idle() call > > > unconditional within the newly decoupled > > > tick_nohz_stop_sched_tick() function - please double check that > > > it's the right resolution. > > > > After a quick look, I believe this should rather be under tick_nohz_idle_enter(), > > (This is the equivalent of the old tick_nohz_stop_sched_tick(1)) > > This wants to be set only once we enter idle, not everytime we have an idle > > interrupt. > > I don't know how you plan to fix the conflict, by redoing the merge or by > applying a patch on tip/master. > > In any case, here is a patch you can use. Feel free to apply it as is > or to just refer to its diff to redo the merge: > > (Outrageously only compile tested)
I have started up a short rcutorture test of this patch on top of tip/master, will let you know how it goes.
Thanx, Paul
> --- > From: Frederic Weisbecker <fweisbec@gmail.com> > Date: Wed, 14 Dec 2011 18:36:00 +0100 > Subject: [PATCH] sched: Only update the CPU idleness in the domain > hierarchy from idle loop entry > > We don't need to inform the sched domain hierarchy about the > CPU idleness everytime we call tick_nohz_stop_sched_tick() as this > includes both idle loop entry and idle interrupt exit. > > Doing it once from the idle loop entry is enough, call > set_cpu_sd_state_idle() only from tick_nohz_idle_enter() instead > to fix this. > > Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> > Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com> > Cc: Suresh Siddha <suresh.b.siddha@intel.com> > Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> > --- > kernel/time/tick-sched.c | 16 ++++++++-------- > 1 files changed, 8 insertions(+), 8 deletions(-) > > diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c > index 1f6dc515..696c997 100644 > --- a/kernel/time/tick-sched.c > +++ b/kernel/time/tick-sched.c > @@ -289,14 +289,6 @@ static void tick_nohz_stop_sched_tick(struct tick_sched *ts) > now = tick_nohz_start_idle(cpu, ts); > > /* > - * Update the idle state in the scheduler domain hierarchy > - * when tick_nohz_stop_sched_tick() is called from the idle loop. > - * State will be updated to busy during the first busy tick after > - * exiting idle. > - */ > - set_cpu_sd_state_idle(); > - > - /* > * If this cpu is offline and it is the one which updates > * jiffies, then give up the assignment and let it be taken by > * the cpu which runs the tick timer next. If we don't drop > @@ -483,6 +475,14 @@ void tick_nohz_idle_enter(void) > * update of the idle time accounting in tick_nohz_start_idle(). > */ > ts->inidle = 1; > + > + /* > + * Update the idle state in the scheduler domain hierarchy > + * when tick_nohz_idle_enter() is called from the idle loop. > + * State will be updated to busy during the first busy tick after > + * exiting idle. > + */ > + set_cpu_sd_state_idle(); > tick_nohz_stop_sched_tick(ts); > > local_irq_enable(); > -- > 1.7.5.4 > >
| |