• Paul Mackerras's avatar
    powerpc/time: Sanity check of decrementer expiration is necessary · 860aed25
    Paul Mackerras authored
    This reverts 68568add ("powerpc/time: Remove unnecessary sanity check
    of decrementer expiration").  We do need to check whether we have reached
    the expiration time of the next event, because we sometimes get an early
    decrementer interrupt, most notably when we set the decrementer to 1 in
    arch_irq_work_raise().  The effect of not having the sanity check is that
    if timer_interrupt() gets called early, we leave the decrementer set to
    its maximum value, which means we then don't get any more decrementer
    interrupts for about 4 seconds (or longer, depending on timebase
    frequency).  I saw these pauses as a consequence of getting a stray
    hypervisor decrementer interrupt left over from exiting a KVM guest.
    
    This isn't quite a straight revert because of changes to the surrounding
    code, but it restores the same algorithm as was previously used.
    
    Cc: stable@vger.kernel.org
    Acked-by: default avatarAnton Blanchard <anton@samba.org>
    Acked-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    860aed25
time.c 26.1 KB