On Sun, 2014-05-11 at 13:45 +0530, Preeti U Murthy wrote: > + /* Don't adjust the decrementer if some irq work is pending > */ > + if (!test_irq_work_pending()) > + set_dec(evt); > + else > + set_dec(1); > > ^^^^^ your patch currently does not have this > explicit > set_dec(1) here. Will that create a problem? > > If there is any irq work pending at this point, will someone set the > decrementer to fire immediately after this point? The current code in > decrementer_set_next_event() sets set_dec(1) explicitly in case of > pending irq work.
Hrm, actually this is an interesting point. The problem isn't that *someone* will do a set_dec, nobody else should that matters. The problem is that irq_work can be triggered typically by NMIs or similar, which means that it might be queued between the test_irq_work_pending() and the set_dec(), thus causing a race. So basically Anton's original patch is fine :-) I had missed that we did a post-set_dec() test already in decrementer_next_event() so as far as I can tell, removing the pre-test, which is what Anton does, is really all we need. Cheers, Ben. _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev