On Tue, 14 Mar 2017 14:57:20 +1100 Benjamin Herrenschmidt <b...@kernel.crashing.org> wrote:
> On Tue, 2017-03-14 at 12:53 +1000, Nicholas Piggin wrote: > > > - Load all > > > - For each byte if set > > > - clear byte > > > - then call handler > > > > Yes. I think that will be okay because we shouldn't get any load-hit- > > store > > issues. I'll do some benchmarking anyway. > > We might need a sync still between clearing the byte and calling the > handler no ? Or at least a smp_wmb() to ensure that the clear is > visible before any action of the handler. Yes I have exactly that (smp_wmb). At first I checked and cleared each byte then did a single smp_wmb, but I changed my mind because most of the time the IPI will fire with only one message set, so it does not seem like it's worth the extra branches to avoid a lwsync in the rare case of 2 messages. Thanks, Nick