diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/xen/suspend.c | 1 | ||||
-rw-r--r-- | arch/x86/xen/time.c | 13 | ||||
-rw-r--r-- | arch/x86/xen/xen-ops.h | 1 |
3 files changed, 15 insertions, 0 deletions
diff --git a/arch/x86/xen/suspend.c b/arch/x86/xen/suspend.c index 7ab10f6b39a5..251669a932d4 100644 --- a/arch/x86/xen/suspend.c +++ b/arch/x86/xen/suspend.c | |||
@@ -38,6 +38,7 @@ void xen_post_suspend(int suspend_cancelled) | |||
38 | xen_cpu_initialized_map = cpu_online_map; | 38 | xen_cpu_initialized_map = cpu_online_map; |
39 | #endif | 39 | #endif |
40 | xen_vcpu_restore(); | 40 | xen_vcpu_restore(); |
41 | xen_timer_resume(); | ||
41 | } | 42 | } |
42 | 43 | ||
43 | } | 44 | } |
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(); |
diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h index a457e03e1b21..9a055592a307 100644 --- a/arch/x86/xen/xen-ops.h +++ b/arch/x86/xen/xen-ops.h | |||
@@ -37,6 +37,7 @@ void __init xen_time_init(void); | |||
37 | unsigned long xen_get_wallclock(void); | 37 | unsigned long xen_get_wallclock(void); |
38 | int xen_set_wallclock(unsigned long time); | 38 | int xen_set_wallclock(unsigned long time); |
39 | unsigned long long xen_sched_clock(void); | 39 | unsigned long long xen_sched_clock(void); |
40 | void xen_timer_resume(void); | ||
40 | 41 | ||
41 | irqreturn_t xen_debug_interrupt(int irq, void *dev_id); | 42 | irqreturn_t xen_debug_interrupt(int irq, void *dev_id); |
42 | 43 | ||