On Mon, Jul 29, 2013 at 09:52:53AM -0700, Paul E. McKenney wrote: > On Mon, Jul 29, 2013 at 11:36:05AM +0800, Lai Jiangshan wrote: > However, on small systems, rcu_sysidle_check_cpu() can be called from > the timekeeping CPU. I suppose that this could potentially happen > before the first grace period starts, and in that case, we could > potentially see a spurious warning. I could imagine a number of ways > to fix this: > > 1. Bind the kthread when it is created. > > 2. Bind the kthread when it first starts running, rather than just > after the grace period starts. > > 3. Suppress the warning when there is no grace period in progress. > > 4. Suppress the warning prior to the first grace period starting. > > Seems like #3 is the most straightforward approach. I just change it to: > > if (rcu_gp_in_progress(rdp->rsp)) > WARN_ON_ONCE(smp_processor_id() != tick_do_timer_cpu); > > This still gets a WARN_ON_ONCE() if someone moves the timekeeping CPU, > but Frederic tells me that it never moves. My WARN_ON_ONCE() has some > probability of complaining should some bug creep in.
It doesn't move for now but keep in mind that it will probably be able to move in the future. If we have several non full-dynticks CPUs, balancing the timekeeping duty between them, depending which one runs at a given time, may improve power savings even better. But you can ignore that for now. Your patchset is entertaining enough that we don't need to add more complications yet ;) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/