• Viresh Kumar's avatar
    clockevents: Stop unused clockevent devices · d2540875
    Viresh Kumar authored
    To avoid getting spurious interrupts on a tickless CPU, clockevent
    device can now be stopped by switching to ONESHOT_STOPPED state.
    
    The natural place for handling this transition is tick_program_event().
    
    On 'expires == KTIME_MAX', we skip programming the event and so we need
    to fix such call sites as well, to always call tick_program_event()
    irrespective of the expires value.
    
    Once the clockevent device is required again, check if it was earlier
    put into ONESHOT_STOPPED state. If yes, switch its state to ONESHOT
    before programming its event.
    
    To make sure we haven't missed any corner case, add a WARN() for the
    case where we try to reprogram clockevent device while we aren't
    configured in ONESHOT_STOPPED state.
    Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
    Cc: linaro-kernel@lists.linaro.org
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Kevin Hilman <khilman@linaro.org>
    Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
    Cc: Preeti U Murthy <preeti@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/5146b07be7f0bc497e0ebae036590ec2fa73e540.1428031396.git.viresh.kumar@linaro.orgSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    d2540875
hrtimer.c 43.3 KB