On 05/11/2014 02:33 PM, Benjamin Herrenschmidt wrote: > On Sun, 2014-05-11 at 14:13 +0530, Preeti U Murthy wrote: >> >> Isn't this patch required too? >> >> @@ -503,12 +503,13 @@ void __timer_interrupt(void) >> now = *next_tb - now; >> if (now <= DECREMENTER_MAX) >> set_dec((int)now); >> - /* We may have raced with new irq work */ >> - if (test_irq_work_pending()) >> - set_dec(1); >> __get_cpu_var(irq_stat).timer_irqs_others++; >> } >> >> + /* We may have raced with new irq work */ >> + if (test_irq_work_pending()) >> + set_dec(1); >> + >> >> The event_handler cannot be relied upon to call >> decrementer_set_next_event() all the time. This is in the case where >> there are no pending timers. In that case we need to have the check on >> irq work pending at the end of __timer_interrupt() no? > > I don't think we need to move the test no. If there's a pending > irq_work, at that point, it will have done set_dec when being queued up. > So we only care about cases where we might change the decrementer. > > If the event handler doesn't call decrementer_set_next_event() then > nothing will modify the decrementer and it will still trigger soon.
Hmm ok. Then Anton's patch covers all cases :) Thanks! Reviewed-by: Preeti U Murthy <pre...@linux.vnet.ibm.com> Regards Preeti U Murthy > > Cheers, > Ben. > > _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev