Re: [PATCH 07/13] powerpc: Preemptible mmu_gather

Peter Zijlstra
2010-04-14T13:51:48Z

On Tue, 2010-04-13 at 11:23 +1000, Benjamin Herrenschmidt wrote:
> > + * If there are, but we fail to batch, we need to IPI (all?) CPUs so as
> > + * to serialize against the IRQ disable. In case we do batch, the RCU
> > + * grace period is at least long enough to cover IRQ disabled sections
> > + * (XXX assumption, not strictly true).
>
> Yeah well ... I'm not that familiar with RCU anymore. Back when I wrote
> that, iirc, I would more or less be safe against a CPU that doesn't
> schedule, but things may have well changed.
>
> We are trying to be safe against another CPU walking page tables in the
> asm lockless hash miss or TLB miss code. Note that sparc64 has a similar
> issue. This is highly optimized asm code that -cannot- call into things
> like rcu_read_lock().

Right, so Paul has been working hard to remove certain implementation
artifact from RCU, such as the preempt-disable == rcu_read_lock thing.

Now, even Preemptible RCU has IRQ-disabled == rcu_read_lock, simply
because the RCU grace period state machine is driven from an interrupt.

But there is no such requirement on RCU at all, so in the interest of
removing assumptions and code validating we're trying to remove such
things.