X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=kernel%2Fpower%2Fmain.c;h=a6d9ef46009ebdcb37f5b8fc4287d81f02dd089a;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=4d403323a7bb709c6384f7a5085f3cdb0872c360;hpb=41689045f6a3cbe0550e1d34e9cc20d2e8c432ba;p=linux-2.6.git diff --git a/kernel/power/main.c b/kernel/power/main.c index 4d403323a..a6d9ef460 100644 --- a/kernel/power/main.c +++ b/kernel/power/main.c @@ -15,8 +15,7 @@ #include #include #include -#include -#include + #include "power.h" @@ -52,7 +51,7 @@ void pm_set_ops(struct pm_ops * ops) static int suspend_prepare(suspend_state_t state) { - int error; + int error = 0; unsigned int free_pages; if (!pm_ops || !pm_ops->enter) @@ -60,9 +59,12 @@ static int suspend_prepare(suspend_state_t state) pm_prepare_console(); - error = disable_nonboot_cpus(); - if (error) + disable_nonboot_cpus(); + + if (num_online_cpus() != 1) { + error = -EPERM; goto Enable_cpu; + } if (freeze_processes()) { error = -EAGAIN; @@ -84,7 +86,6 @@ static int suspend_prepare(suspend_state_t state) goto Thaw; } - suspend_console(); if ((error = device_suspend(PMSG_SUSPEND))) { printk(KERN_ERR "Some devices failed to suspend\n"); goto Finish; @@ -132,7 +133,6 @@ int suspend_enter(suspend_state_t state) static void suspend_finish(suspend_state_t state) { device_resume(); - resume_console(); thaw_processes(); enable_nonboot_cpus(); if (pm_ops && pm_ops->finish) @@ -143,7 +143,7 @@ static void suspend_finish(suspend_state_t state) -static const char * const pm_states[PM_SUSPEND_MAX] = { +static char *pm_states[PM_SUSPEND_MAX] = { [PM_SUSPEND_STANDBY] = "standby", [PM_SUSPEND_MEM] = "mem", #ifdef CONFIG_SOFTWARE_SUSPEND @@ -260,7 +260,7 @@ static ssize_t state_show(struct subsystem * subsys, char * buf) static ssize_t state_store(struct subsystem * subsys, const char * buf, size_t n) { suspend_state_t state = PM_SUSPEND_STANDBY; - const char * const *s; + char ** s; char *p; int error; int len;