• David Vrabel's avatar
    hrtimers: Support resuming with two or more CPUs online (but stopped) · 7c4c3a0f
    David Vrabel authored
    hrtimers_resume() only reprograms the timers for the current CPU as it
    assumes that all other CPUs are offline at this point in the resume
    process. If other CPUs are online then their timers will not be
    corrected and they may fire at the wrong time.
    
    When running as a Xen guest, this assumption is not true.  Non-boot
    CPUs are only stopped with IRQs disabled instead of offlining them.
    This is a performance optimization as disabling the CPUs would add an
    unacceptable amount of additional downtime during a live migration (>
    200 ms for a 4 VCPU guest).
    
    hrtimers_resume() cannot call on_each_cpu(retrigger_next_event,...)
    as the other CPUs will be stopped with IRQs disabled.  Instead, defer
    the call to the next softirq.
    
    [ tglx: Separated the xen change out ]
    Signed-off-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
    Cc: Konrad Rzeszutek Wilk  <konrad.wilk@oracle.com>
    Cc: John Stultz  <john.stultz@linaro.org>
    Cc: <xen-devel@lists.xen.org>
    Link: http://lkml.kernel.org/r/1372329348-20841-2-git-send-email-david.vrabel@citrix.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    7c4c3a0f
hrtimer.c 48.2 KB