diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2008-05-30 20:33:03 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-06-02 07:25:44 -0400 |
commit | d07af1f0e3a3e378074fc36322dd7b0e72d9a3e2 (patch) | |
tree | 03bdfcd4bc079704eae010e6006301f801c9eefc /arch/x86/xen/time.c | |
parent | 9c7a794209f8a91f47697c3be20597eb60531e6d (diff) |
xen: resume timers on all vcpus
On resume, the vcpu timer modes will not be restored. The timer
infrastructure doesn't do this for us, since it assumes the cpus
are offline. We can just poke the other vcpus into the right mode
directly though.
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/xen/time.c')
-rw-r--r-- | arch/x86/xen/time.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/x86/xen/time.c b/arch/x86/xen/time.c index c39e1a5aa241..ea137fb660c0 100644 --- a/arch/x86/xen/time.c +++ b/arch/x86/xen/time.c | |||
@@ -572,6 +572,19 @@ void xen_setup_cpu_clockevents(void) | |||
572 | clockevents_register_device(&__get_cpu_var(xen_clock_events)); | 572 | clockevents_register_device(&__get_cpu_var(xen_clock_events)); |
573 | } | 573 | } |
574 | 574 | ||
575 | void xen_timer_resume(void) | ||
576 | { | ||
577 | int cpu; | ||
578 | |||
579 | if (xen_clockevent != &xen_vcpuop_clockevent) | ||
580 | return; | ||
581 | |||
582 | for_each_online_cpu(cpu) { | ||
583 | if (HYPERVISOR_vcpu_op(VCPUOP_stop_periodic_timer, cpu, NULL)) | ||
584 | BUG(); | ||
585 | } | ||
586 | } | ||
587 | |||
575 | __init void xen_time_init(void) | 588 | __init void xen_time_init(void) |
576 | { | 589 | { |
577 | int cpu = smp_processor_id(); | 590 | int cpu = smp_processor_id(); |