Re: [PATCH, RFC, tip/core/rcu] v3 scalable classic RCU implementation

From: Manfred Spraul
Date: Sun Aug 31 2008 - 14:18:59 EST


Paul E. McKenney wrote:
On Sun, Aug 31, 2008 at 07:45:02PM +0200, Manfred Spraul wrote:
Paul E. McKenney wrote:
Assuming that the ordering of processing pending irqs and marking the
CPU offline in cpu_online_mask can be resolved as noted above, it should
work fine -- if a CPU's bit is clear, we can safely ignore it. The race
can be resolved by checking the CPU's bit in force_quiescent_state().

Or am I missing something?
Yes, that would work:
Rule 1: after CPU_DEAD, a cpu is gone. The cpu is quiet, rcu callbacks must be moved to other cpus, ...
Rule 2: if a cpu is not listed in cpu_online_mask, then it can be considered as outside a read-side critical section.

The problem with rule 2 is that it means someone [force_quiescent_state()] must poll the cpu_online_mask and look for changes.
I'd really prefer a notifier. CPU_DYING is nearly the correct thing, it only has to be moved down 3 lines ;-)
(I want to kill the bitmaps, not add a hierarchical bitmap polling system!)

But some later CPU_DYING notifier might decide that the CPU cannot be
removed after all, which would mean bringing the CPU back. And then
whatever the CPU was needed for might have actually happened in the
meantime, which does not sound good to me...
CPU_DYING must not fail, the current code doesn't support that.

--
Manfred
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/