From 2d0017f99c6ded80374ff46b02d8fd3b54dc24d2 Mon Sep 17 00:00:00 2001 From: Jeremy Fitzhardinge Date: Mon, 26 May 2008 23:31:28 +0100 Subject: [PATCH] --- yaml --- r: 99560 b: refs/heads/master c: 359cdd3f866b6219a6729e313faf2221397f3278 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/x86/xen/time.c | 8 -------- trunk/drivers/xen/manage.c | 15 ++++++++++++--- trunk/include/xen/xen-ops.h | 3 --- 4 files changed, 13 insertions(+), 15 deletions(-) diff --git a/[refs] b/[refs] index 186d786bcf89..7971b2a4711e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0e91398f2a5d4eb6b07df8115917d0d1cf3e9b58 +refs/heads/master: 359cdd3f866b6219a6729e313faf2221397f3278 diff --git a/trunk/arch/x86/xen/time.c b/trunk/arch/x86/xen/time.c index 0bef256e5f2d..c39e1a5aa241 100644 --- a/trunk/arch/x86/xen/time.c +++ b/trunk/arch/x86/xen/time.c @@ -572,14 +572,6 @@ void xen_setup_cpu_clockevents(void) clockevents_register_device(&__get_cpu_var(xen_clock_events)); } -void xen_time_suspend(void) -{ -} - -void xen_time_resume(void) -{ -} - __init void xen_time_init(void) { int cpu = smp_processor_id(); diff --git a/trunk/drivers/xen/manage.c b/trunk/drivers/xen/manage.c index ba85fa2cff33..675c3dd23962 100644 --- a/trunk/drivers/xen/manage.c +++ b/trunk/drivers/xen/manage.c @@ -34,14 +34,21 @@ static enum shutdown_state shutting_down = SHUTDOWN_INVALID; static int xen_suspend(void *data) { int *cancelled = data; + int err; BUG_ON(!irqs_disabled()); load_cr3(swapper_pg_dir); + err = device_power_down(PMSG_SUSPEND); + if (err) { + printk(KERN_ERR "xen_suspend: device_power_down failed: %d\n", + err); + return err; + } + xen_mm_pin_all(); gnttab_suspend(); - xen_time_suspend(); xen_pre_suspend(); /* @@ -52,10 +59,11 @@ static int xen_suspend(void *data) *cancelled = HYPERVISOR_suspend(virt_to_mfn(xen_start_info)); xen_post_suspend(*cancelled); - xen_time_resume(); gnttab_resume(); xen_mm_unpin_all(); + device_power_up(); + if (!*cancelled) { xen_irq_resume(); xen_console_resume(); @@ -105,7 +113,8 @@ static void do_suspend(void) device_resume(); - + /* Make sure timer events get retriggered on all CPUs */ + clock_was_set(); out: #ifdef CONFIG_PREEMPT thaw_processes(); diff --git a/trunk/include/xen/xen-ops.h b/trunk/include/xen/xen-ops.h index 5d7a6db54a8c..a706d6a78960 100644 --- a/trunk/include/xen/xen-ops.h +++ b/trunk/include/xen/xen-ops.h @@ -11,7 +11,4 @@ void xen_post_suspend(int suspend_cancelled); void xen_mm_pin_all(void); void xen_mm_unpin_all(void); -void xen_time_suspend(void); -void xen_time_resume(void); - #endif /* INCLUDE_XEN_OPS_H */