aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/xen/manage.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/xen/manage.c')
-rw-r--r--drivers/xen/manage.c43
1 files changed, 1 insertions, 42 deletions
diff --git a/drivers/xen/manage.c b/drivers/xen/manage.c
index 5b7a0a9402e7..ebb292859b59 100644
--- a/drivers/xen/manage.c
+++ b/drivers/xen/manage.c
@@ -62,44 +62,6 @@ static void xen_post_suspend(int cancelled)
62} 62}
63 63
64#ifdef CONFIG_PM_SLEEP 64#ifdef CONFIG_PM_SLEEP
65static int xen_hvm_suspend(void *data)
66{
67 struct suspend_info *si = data;
68 int err;
69
70 BUG_ON(!irqs_disabled());
71
72 err = sysdev_suspend(PMSG_SUSPEND);
73 if (err) {
74 printk(KERN_ERR "xen_hvm_suspend: sysdev_suspend failed: %d\n",
75 err);
76 return err;
77 }
78
79 if (si->pre)
80 si->pre();
81
82 /*
83 * This hypercall returns 1 if suspend was cancelled
84 * or the domain was merely checkpointed, and 0 if it
85 * is resuming in a new domain.
86 */
87 si->cancelled = HYPERVISOR_suspend(si->arg);
88
89 if (si->post)
90 si->post(si->cancelled);
91
92 if (!si->cancelled) {
93 xen_irq_resume();
94 xen_console_resume();
95 xen_timer_resume();
96 }
97
98 sysdev_resume();
99
100 return 0;
101}
102
103static int xen_suspend(void *data) 65static int xen_suspend(void *data)
104{ 66{
105 struct suspend_info *si = data; 67 struct suspend_info *si = data;
@@ -183,10 +145,7 @@ static void do_suspend(void)
183 si.post = &xen_post_suspend; 145 si.post = &xen_post_suspend;
184 } 146 }
185 147
186 if (xen_hvm_domain()) 148 err = stop_machine(xen_suspend, &si, cpumask_of(0));
187 err = stop_machine(xen_hvm_suspend, &si, cpumask_of(0));
188 else
189 err = stop_machine(xen_suspend, &si, cpumask_of(0));
190 149
191 dpm_resume_noirq(PMSG_RESUME); 150 dpm_resume_noirq(PMSG_RESUME);
192 151