Re: [patch] Real-Time Preemption, -RT-2.6.12-rc1-V0.7.41-07

Peter Zijlstra
2005-03-23T08:31:10Z

On Wed, 2005-03-23 at 08:16 +0100, Ingo Molnar wrote:
> * Ingo Molnar <mingo@elte.hu> wrote:
>
> > That callback will be queued on CPU#2 - while the task still keeps
> > current->rcu_data of CPU#1. It also means that CPU#2's read counter
> > did _not_ get increased - and a too short grace period may occur.
> >
> > it seems to me that that only safe method is to pick an 'RCU CPU' when
> > first entering the read section, and then sticking to it, no matter
> > where the task gets migrated to. Or to 'migrate' the +1 read count
> > from one CPU to the other, within the scheduler.
>
> i think the 'migrate read-count' method is not adequate either, because
> all callbacks queued within an RCU read section must be called after the
> lock has been dropped - while with the migration method CPU#1 would be
> free to process callbacks queued in the RCU read section still active on
> CPU#2.
>
how about keeping the rcu callback list in process context and only
splice it to a global (per cpu) list on rcu_read_unlock?

Kind regrads,

Peter Zijlstra

--
Peter Zijlstra <peter@programming.kicks-ass.net>