]> git.baikalelectronics.ru Git - kernel.git/commit
hrtimers: Support resuming with two or more CPUs online (but stopped)
authorDavid Vrabel <david.vrabel@citrix.com>
Thu, 27 Jun 2013 10:35:44 +0000 (11:35 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Fri, 28 Jun 2013 21:15:06 +0000 (23:15 +0200)
commit565469d5c6333dcc05f34ee36b6eae3fc96f1f93
tree553f2901ae4fd0fede367ece9ec9c30106ff744f
parent5d39a22b0db4a38661e58f9dab32ac274236c643
hrtimers: Support resuming with two or more CPUs online (but stopped)

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: David 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.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/hrtimer.c