diff options
Diffstat (limited to 'drivers/xen')
| -rw-r--r-- | drivers/xen/manage.c | 28 | 
1 files changed, 11 insertions, 17 deletions
| diff --git a/drivers/xen/manage.c b/drivers/xen/manage.c index 2ac4440e7b08..07e857b0de13 100644 --- a/drivers/xen/manage.c +++ b/drivers/xen/manage.c @@ -80,12 +80,6 @@ static void do_suspend(void)  	shutting_down = SHUTDOWN_SUSPEND; -	err = stop_machine_create(); -	if (err) { -		printk(KERN_ERR "xen suspend: failed to setup stop_machine %d\n", err); -		goto out; -	} -  #ifdef CONFIG_PREEMPT  	/* If the kernel is preemptible, we need to freeze all the processes  	   to prevent them from being in the middle of a pagetable update @@ -93,7 +87,7 @@ static void do_suspend(void)  	err = freeze_processes();  	if (err) {  		printk(KERN_ERR "xen suspend: freeze failed %d\n", err); -		goto out_destroy_sm; +		goto out;  	}  #endif @@ -136,12 +130,8 @@ out_resume:  out_thaw:  #ifdef CONFIG_PREEMPT  	thaw_processes(); - -out_destroy_sm: -#endif -	stop_machine_destroy(); -  out: +#endif  	shutting_down = SHUTDOWN_INVALID;  }  #endif	/* CONFIG_PM_SLEEP */ @@ -195,6 +185,7 @@ static void shutdown_handler(struct xenbus_watch *watch,  	kfree(str);  } +#ifdef CONFIG_MAGIC_SYSRQ  static void sysrq_handler(struct xenbus_watch *watch, const char **vec,  			  unsigned int len)  { @@ -224,15 +215,16 @@ static void sysrq_handler(struct xenbus_watch *watch, const char **vec,  		handle_sysrq(sysrq_key, NULL);  } -static struct xenbus_watch shutdown_watch = { -	.node = "control/shutdown", -	.callback = shutdown_handler -}; -  static struct xenbus_watch sysrq_watch = {  	.node = "control/sysrq",  	.callback = sysrq_handler  }; +#endif + +static struct xenbus_watch shutdown_watch = { +	.node = "control/shutdown", +	.callback = shutdown_handler +};  static int setup_shutdown_watcher(void)  { @@ -244,11 +236,13 @@ static int setup_shutdown_watcher(void)  		return err;  	} +#ifdef CONFIG_MAGIC_SYSRQ  	err = register_xenbus_watch(&sysrq_watch);  	if (err) {  		printk(KERN_ERR "Failed to set sysrq watcher\n");  		return err;  	} +#endif  	return 0;  } | 
