lkml.org 
[lkml]   [2006]   [Aug]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC][PATCH 1/3] swsusp: Use suspend_console
    Date
    Add suspend_console() and resume_console() to the suspend-to-disk code paths
    so that the users of netconsole can use swsusp with it.

    Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
    ---
    kernel/power/disk.c | 8 ++++++++
    kernel/power/user.c | 8 +++++++-
    2 files changed, 15 insertions(+), 1 deletion(-)

    Index: linux-2.6.18-rc4-mm1/kernel/power/disk.c
    ===================================================================
    --- linux-2.6.18-rc4-mm1.orig/kernel/power/disk.c 2006-08-16 11:51:35.000000000 +0200
    +++ linux-2.6.18-rc4-mm1/kernel/power/disk.c 2006-08-16 11:58:01.000000000 +0200
    @@ -18,6 +18,7 @@
    #include <linux/fs.h>
    #include <linux/mount.h>
    #include <linux/pm.h>
    +#include <linux/console.h>
    #include <linux/cpu.h>

    #include "power.h"
    @@ -119,8 +120,10 @@ int pm_suspend_disk(void)
    if (error)
    return error;

    + suspend_console();
    error = device_suspend(PMSG_FREEZE);
    if (error) {
    + resume_console();
    printk("Some devices failed to suspend\n");
    unprepare_processes();
    return error;
    @@ -133,6 +136,7 @@ int pm_suspend_disk(void)

    if (in_suspend) {
    device_resume();
    + resume_console();
    pr_debug("PM: writing image.\n");
    error = swsusp_write();
    if (!error)
    @@ -148,6 +152,7 @@ int pm_suspend_disk(void)
    swsusp_free();
    Done:
    device_resume();
    + resume_console();
    unprepare_processes();
    return error;
    }
    @@ -212,7 +217,9 @@ static int software_resume(void)

    pr_debug("PM: Preparing devices for restore.\n");

    + suspend_console();
    if ((error = device_suspend(PMSG_PRETHAW))) {
    + resume_console();
    printk("Some devices failed to suspend\n");
    swsusp_free();
    goto Thaw;
    @@ -224,6 +231,7 @@ static int software_resume(void)
    swsusp_resume();
    pr_debug("PM: Restore failed, recovering.n");
    device_resume();
    + resume_console();
    Thaw:
    unprepare_processes();
    Done:
    Index: linux-2.6.18-rc4-mm1/kernel/power/user.c
    ===================================================================
    --- linux-2.6.18-rc4-mm1.orig/kernel/power/user.c 2006-08-16 11:51:35.000000000 +0200
    +++ linux-2.6.18-rc4-mm1/kernel/power/user.c 2006-08-16 11:58:01.000000000 +0200
    @@ -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>
    @@ -173,12 +174,14 @@ static int snapshot_ioctl(struct inode *
    /* 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 *
    }
    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 *
    }

    /* 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 *
    /* Wake up devices */
    device_resume();
    }
    -
    + resume_console();
    if (pm_ops->finish)
    pm_ops->finish(PM_SUSPEND_MEM);

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-08-16 13:13    [W:7.929 / U:0.216 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site