diff options
Diffstat (limited to 'drivers/xen/manage.c')
| -rw-r--r-- | drivers/xen/manage.c | 10 | 
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/xen/manage.c b/drivers/xen/manage.c index db8c4c4ac88..24177272bcb 100644 --- a/drivers/xen/manage.c +++ b/drivers/xen/manage.c @@ -37,11 +37,19 @@ static enum shutdown_state shutting_down = SHUTDOWN_INVALID;  #ifdef CONFIG_PM_SLEEP  static int xen_hvm_suspend(void *data)  { +	int err;  	struct sched_shutdown r = { .reason = SHUTDOWN_suspend };  	int *cancelled = data;  	BUG_ON(!irqs_disabled()); +	err = sysdev_suspend(PMSG_SUSPEND); +	if (err) { +		printk(KERN_ERR "xen_hvm_suspend: sysdev_suspend failed: %d\n", +		       err); +		return err; +	} +  	*cancelled = HYPERVISOR_sched_op(SCHEDOP_shutdown, &r);  	xen_hvm_post_suspend(*cancelled); @@ -53,6 +61,8 @@ static int xen_hvm_suspend(void *data)  		xen_timer_resume();  	} +	sysdev_resume(); +  	return 0;  }  |