• Stephen Boyd's avatar
    clockevents: Switch into oneshot mode even if broadcast registered late · c038c1c4
    Stephen Boyd authored
    tick_oneshot_notify() is used to notify a particular CPU to try
    to switch into oneshot mode after a oneshot capable tick device
    is registered and tick_clock_notify() is used to notify all CPUs
    to try to switch into oneshot mode after a high res clocksource
    is registered. There is one caveat; if the tick devices suffer
    from FEAT_C3_STOP we don't try to switch into oneshot mode unless
    we have a oneshot capable broadcast device already registered.
    
    If the broadcast device is registered after the tick devices that
    have FEAT_C3_STOP we'll never try to switch into oneshot mode
    again, causing us to be stuck in periodic mode forever. Avoid
    this scenario by calling tick_clock_notify() after we register
    the broadcast device so that we try to switch into oneshot mode
    on all CPUs one more time.
    
    [ tglx: Adopted to timers/core and added a comment ]
    Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
    Link: http://lkml.kernel.org/r/1366219566-29783-1-git-send-email-sboyd@codeaurora.orgSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    c038c1c4
tick-broadcast.c 20.3 KB