[PATCH] swsusp: Use suspend_console
[powerpc.git] / kernel / power / user.c
index 72825c8..d991d3b 100644 (file)
@@ -19,6 +19,7 @@
 #include <linux/swapops.h>
 #include <linux/pm.h>
 #include <linux/fs.h>
+#include <linux/console.h>
 #include <linux/cpu.h>
 
 #include <asm/uaccess.h>
@@ -145,10 +146,10 @@ static int snapshot_ioctl(struct inode *inode, struct file *filp,
                        error = freeze_processes();
                        if (error) {
                                thaw_processes();
+                               enable_nonboot_cpus();
                                error = -EBUSY;
                        }
                }
-               enable_nonboot_cpus();
                up(&pm_sem);
                if (!error)
                        data->frozen = 1;
@@ -173,12 +174,14 @@ static int snapshot_ioctl(struct inode *inode, struct file *filp,
                /* Free memory before shutting down devices. */
                error = swsusp_shrink_memory();
                if (!error) {
+                       suspend_console();
                        error = device_suspend(PMSG_FREEZE);
                        if (!error) {
                                in_suspend = 1;
                                error = swsusp_suspend();
                                device_resume();
                        }
+                       resume_console();
                }
                up(&pm_sem);
                if (!error)
@@ -196,11 +199,13 @@ static int snapshot_ioctl(struct inode *inode, struct file *filp,
                snapshot_free_unused_memory(&data->handle);
                down(&pm_sem);
                pm_prepare_console();
+               suspend_console();
                error = device_suspend(PMSG_PRETHAW);
                if (!error) {
                        error = swsusp_resume();
                        device_resume();
                }
+               resume_console();
                pm_restore_console();
                up(&pm_sem);
                break;
@@ -289,6 +294,7 @@ static int snapshot_ioctl(struct inode *inode, struct file *filp,
                }
 
                /* Put devices to sleep */
+               suspend_console();
                error = device_suspend(PMSG_SUSPEND);
                if (error) {
                        printk(KERN_ERR "Failed to suspend some devices.\n");
@@ -299,7 +305,7 @@ static int snapshot_ioctl(struct inode *inode, struct file *filp,
                        /* Wake up devices */
                        device_resume();
                }
-
+               resume_console();
                if (pm_ops->finish)
                        pm_ops->finish(PM_SUSPEND_MEM);