• Thomas Gleixner's avatar
    NOHZ: fix thinko in the timer restart code path · c4bd822e
    Thomas Gleixner authored
    commit fb02fbc1 (NOHZ: restart tick
    device from irq_enter())
    
    solves the problem of stale jiffies when long running softirqs happen
    in a long idle sleep period, but it has a major thinko in it:
    
    When the interrupt which came in _is_ the timer interrupt which should
    expire ts->sched_timer then we cancel and rearm the timer _before_ it
    gets expired in hrtimer_interrupt() to the next period. That means the
    call back function is not called. This game can go on for ever :(
    
    Prevent this by making sure to only rearm the timer when the expiry
    time is more than one tick_period away. Otherwise keep it running as
    it is either already expired or will expiry at the right point to
    update jiffies.
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Tested-by: default avatarVenkatesch Pallipadi <venkatesh.pallipadi@intel.com>
    c4bd822e
tick-sched.c 18.8 KB