Messages in this thread | | | Subject | Re: [PATCH 2/2] smp_call_function: use rwlocks on queues rather than rcu | From | Peter Zijlstra <> | Date | Mon, 25 Aug 2008 17:51:32 +0200 |
| |
On Mon, 2008-08-25 at 10:46 -0500, Christoph Lameter wrote: > Peter Zijlstra wrote: > > > > If we combine these two cases, and flip the counter as soon as we've > > enqueued one callback, unless we're already waiting for a grace period > > to end - which gives us a longer window to collect callbacks. > > > > And then the rcu_read_unlock() can do: > > > > if (dec_and_zero(my_counter) && my_index == dying) > > raise_softirq(RCU) > > > > to fire off the callback stuff. > > > > /me ponders - there must be something wrong with that... > > > > Aaah, yes, the dec_and_zero is non trivial due to the fact that its a > > distributed counter. Bugger.. > > Then lets make it per cpu. If we get the cpu ops in then dec_and_zero would be > very cheap.
Hmm, perhaps that might work for classic RCU, as that disables preemption and thus the counters should always be balanced.
| |