* [PATCH 0/7] Suspend and hibernation code cleanups (rev. 2)
@ 2007-11-28 0:13 Rafael J. Wysocki
2007-11-28 0:15 ` [PATCH 1/7] Suspend: Fix compilation warning for CONFIG_SUSPEND unset Rafael J. Wysocki
` (6 more replies)
0 siblings, 7 replies; 12+ messages in thread
From: Rafael J. Wysocki @ 2007-11-28 0:13 UTC (permalink / raw)
To: pm list; +Cc: LKML, Pavel Machek
Hi,
This is the second revision of the series of suspend and hibernation cleanup
patches I sent yesterday.
The patches are on top of the suspend branch of the linux-acpi-2.6 tree.
Please review.
Greetings,
Rafael
^ permalink raw reply [flat|nested] 12+ messages in thread* [PATCH 1/7] Suspend: Fix compilation warning for CONFIG_SUSPEND unset 2007-11-28 0:13 [PATCH 0/7] Suspend and hibernation code cleanups (rev. 2) Rafael J. Wysocki @ 2007-11-28 0:15 ` Rafael J. Wysocki 2007-11-28 0:26 ` [PATCH 2/7] Hibernation: Move low level resume to disk.c Rafael J. Wysocki ` (5 subsequent siblings) 6 siblings, 0 replies; 12+ messages in thread From: Rafael J. Wysocki @ 2007-11-28 0:15 UTC (permalink / raw) To: pm list; +Cc: LKML, Pavel Machek From: Rafael J. Wysocki <rjw@sisk.pl> Make the new suspend debug facility code depend on CONFIG_SUSPEND, as appropriate, to remove the compiler warning printed when CONFIG_PM is set and CONFIG_SUSPEND is not set. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Acked-by: Pavel Machek <pavel@ucw.cz> --- kernel/power/main.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) Index: linux-2.6/kernel/power/main.c =================================================================== --- linux-2.6.orig/kernel/power/main.c +++ linux-2.6/kernel/power/main.c @@ -52,6 +52,8 @@ int pm_notifier_call_chain(unsigned long #endif /* CONFIG_PM_SLEEP */ +#ifdef CONFIG_SUSPEND + #ifdef CONFIG_PM_DEBUG int pm_test_level = TEST_NONE; @@ -125,9 +127,6 @@ power_attr(pm_test); static inline int suspend_test(int level) { return 0; } #endif /* !CONFIG_PM_DEBUG */ - -#ifdef CONFIG_SUSPEND - /* This is just an arbitrary number */ #define FREE_PAGE_NUMBER (100) ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/7] Hibernation: Move low level resume to disk.c 2007-11-28 0:13 [PATCH 0/7] Suspend and hibernation code cleanups (rev. 2) Rafael J. Wysocki 2007-11-28 0:15 ` [PATCH 1/7] Suspend: Fix compilation warning for CONFIG_SUSPEND unset Rafael J. Wysocki @ 2007-11-28 0:26 ` Rafael J. Wysocki 2007-11-28 0:27 ` [PATCH 3/7] Suspend: Fix comment in main.c Rafael J. Wysocki ` (4 subsequent siblings) 6 siblings, 0 replies; 12+ messages in thread From: Rafael J. Wysocki @ 2007-11-28 0:26 UTC (permalink / raw) To: pm list; +Cc: LKML, Pavel Machek From: Rafael J. Wysocki <rjw@sisk.pl> Move the low level restore code to kernel/power/disk.c , since the corresponding low level hibernation code is already there. Make restore fail if device_power_down(PMSG_PRETHAW) returns an error. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Acked-by: Pavel Machek <pavel@ucw.cz> --- kernel/power/disk.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- kernel/power/power.h | 1 - kernel/power/swsusp.c | 35 ----------------------------------- 3 files changed, 48 insertions(+), 37 deletions(-) Index: linux-2.6/kernel/power/disk.c =================================================================== --- linux-2.6.orig/kernel/power/disk.c +++ linux-2.6/kernel/power/disk.c @@ -275,6 +275,53 @@ int hibernation_snapshot(int platform_mo } /** + * resume_target_kernel - prepare devices that need to be suspended with + * interrupts off, restore the contents of highmem that have not been + * restored yet from the image and run the low level code that will restore + * the remaining contents of memory and switch to the just restored target + * kernel. + */ + +static int resume_target_kernel(void) +{ + int error; + + local_irq_disable(); + error = device_power_down(PMSG_PRETHAW); + if (error) { + printk(KERN_ERR "Some devices failed to power down, " + "aborting resume\n"); + goto Enable_irqs; + } + /* We'll ignore saved state, but this gets preempt count (etc) right */ + save_processor_state(); + error = restore_highmem(); + if (!error) { + error = swsusp_arch_resume(); + /* + * The code below is only ever reached in case of a failure. + * Otherwise execution continues at place where + * swsusp_arch_suspend() was called + */ + BUG_ON(!error); + /* This call to restore_highmem() undos the previous one */ + restore_highmem(); + } + /* + * The only reason why swsusp_arch_resume() can fail is memory being + * very tight, so we have to free it as soon as we can to avoid + * subsequent failures + */ + swsusp_free(); + restore_processor_state(); + touch_softlockup_watchdog(); + device_power_up(); + Enable_irqs: + local_irq_enable(); + return error; +} + +/** * hibernation_restore - quiesce devices and restore the hibernation * snapshot image. If successful, control returns in hibernation_snaphot() * @platform_mode - if set, use the platform driver, if available, to @@ -297,7 +344,7 @@ int hibernation_restore(int platform_mod if (!error) { error = disable_nonboot_cpus(); if (!error) - error = swsusp_resume(); + error = resume_target_kernel(); enable_nonboot_cpus(); } platform_restore_cleanup(platform_mode); Index: linux-2.6/kernel/power/swsusp.c =================================================================== --- linux-2.6.orig/kernel/power/swsusp.c +++ linux-2.6/kernel/power/swsusp.c @@ -261,38 +261,3 @@ int swsusp_shrink_memory(void) return 0; } - -int swsusp_resume(void) -{ - int error; - - local_irq_disable(); - /* NOTE: device_power_down() is just a suspend() with irqs off; - * it has no special "power things down" semantics - */ - if (device_power_down(PMSG_PRETHAW)) - printk(KERN_ERR "Some devices failed to power down, very bad\n"); - /* We'll ignore saved state, but this gets preempt count (etc) right */ - save_processor_state(); - error = restore_highmem(); - if (!error) { - error = swsusp_arch_resume(); - /* The code below is only ever reached in case of a failure. - * Otherwise execution continues at place where - * swsusp_arch_suspend() was called - */ - BUG_ON(!error); - /* This call to restore_highmem() undos the previous one */ - restore_highmem(); - } - /* The only reason why swsusp_arch_resume() can fail is memory being - * very tight, so we have to free it as soon as we can to avoid - * subsequent failures - */ - swsusp_free(); - restore_processor_state(); - touch_softlockup_watchdog(); - device_power_up(); - local_irq_enable(); - return error; -} Index: linux-2.6/kernel/power/power.h =================================================================== --- linux-2.6.orig/kernel/power/power.h +++ linux-2.6/kernel/power/power.h @@ -154,7 +154,6 @@ extern int swsusp_swap_in_use(void); extern int swsusp_check(void); extern int swsusp_shrink_memory(void); extern void swsusp_free(void); -extern int swsusp_resume(void); extern int swsusp_read(unsigned int *flags_p); extern int swsusp_write(unsigned int flags); extern void swsusp_close(void); ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 3/7] Suspend: Fix comment in main.c 2007-11-28 0:13 [PATCH 0/7] Suspend and hibernation code cleanups (rev. 2) Rafael J. Wysocki 2007-11-28 0:15 ` [PATCH 1/7] Suspend: Fix compilation warning for CONFIG_SUSPEND unset Rafael J. Wysocki 2007-11-28 0:26 ` [PATCH 2/7] Hibernation: Move low level resume to disk.c Rafael J. Wysocki @ 2007-11-28 0:27 ` Rafael J. Wysocki 2007-11-28 0:28 ` [PATCH 4/7] Hibernation: Fix comment in disk.c Rafael J. Wysocki ` (3 subsequent siblings) 6 siblings, 0 replies; 12+ messages in thread From: Rafael J. Wysocki @ 2007-11-28 0:27 UTC (permalink / raw) To: pm list; +Cc: LKML, Pavel Machek From: Rafael J. Wysocki <rjw@sisk.pl> Fix a comment in kernel/power/main.c so that it doesn't contain lines longer that 80 characters. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Acked-by: Pavel Machek <pavel@ucw.cz> --- kernel/power/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) Index: linux-2.6/kernel/power/main.c =================================================================== --- linux-2.6.orig/kernel/power/main.c +++ linux-2.6/kernel/power/main.c @@ -242,8 +242,8 @@ static int suspend_enter(suspend_state_t } /** - * suspend_devices_and_enter - suspend devices and enter the desired system sleep - * state. + * suspend_devices_and_enter - suspend devices and enter the desired system + * sleep state. * @state: state to enter */ int suspend_devices_and_enter(suspend_state_t state) ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 4/7] Hibernation: Fix comment in disk.c 2007-11-28 0:13 [PATCH 0/7] Suspend and hibernation code cleanups (rev. 2) Rafael J. Wysocki ` (2 preceding siblings ...) 2007-11-28 0:27 ` [PATCH 3/7] Suspend: Fix comment in main.c Rafael J. Wysocki @ 2007-11-28 0:28 ` Rafael J. Wysocki 2007-11-28 10:08 ` Pavel Machek 2007-11-28 0:29 ` [PATCH 5/7] Hibernation: Remove unnecessary variable declaration Rafael J. Wysocki ` (2 subsequent siblings) 6 siblings, 1 reply; 12+ messages in thread From: Rafael J. Wysocki @ 2007-11-28 0:28 UTC (permalink / raw) To: pm list; +Cc: LKML, Pavel Machek From: Rafael J. Wysocki <rjw@sisk.pl> Fix a comment in kernel/power/disk.c so that it doesn't contain lines longer that 80 characters. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> --- kernel/power/disk.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) Index: linux-2.6/kernel/power/disk.c =================================================================== --- linux-2.6.orig/kernel/power/disk.c +++ linux-2.6/kernel/power/disk.c @@ -568,8 +568,8 @@ static int software_resume(void) if (noresume) { /** - * FIXME: If noresume is specified, we need to find the partition - * and reset it back to normal swap space. + * FIXME: If noresume is specified, we need to find the + * partition and reset it back to normal swap space. */ mutex_unlock(&pm_mutex); return 0; ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 4/7] Hibernation: Fix comment in disk.c 2007-11-28 0:28 ` [PATCH 4/7] Hibernation: Fix comment in disk.c Rafael J. Wysocki @ 2007-11-28 10:08 ` Pavel Machek 0 siblings, 0 replies; 12+ messages in thread From: Pavel Machek @ 2007-11-28 10:08 UTC (permalink / raw) To: Rafael J. Wysocki; +Cc: pm list, LKML On Wed 2007-11-28 01:28:18, Rafael J. Wysocki wrote: > From: Rafael J. Wysocki <rjw@sisk.pl> > > Fix a comment in kernel/power/disk.c so that it doesn't contain lines > longer that 80 characters. > > Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> ACK. -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 5/7] Hibernation: Remove unnecessary variable declaration 2007-11-28 0:13 [PATCH 0/7] Suspend and hibernation code cleanups (rev. 2) Rafael J. Wysocki ` (3 preceding siblings ...) 2007-11-28 0:28 ` [PATCH 4/7] Hibernation: Fix comment in disk.c Rafael J. Wysocki @ 2007-11-28 0:29 ` Rafael J. Wysocki 2007-11-28 10:09 ` Pavel Machek 2007-11-28 0:30 ` [PATCH 6/7] Suspend: Use common prefix in messages Rafael J. Wysocki 2007-11-28 0:37 ` [PATCH 7/7] Hibernation: Update messages Rafael J. Wysocki 6 siblings, 1 reply; 12+ messages in thread From: Rafael J. Wysocki @ 2007-11-28 0:29 UTC (permalink / raw) To: pm list; +Cc: LKML, Pavel Machek From: Rafael J. Wysocki <rjw@sisk.pl> Remove the unnecessary extern declaration of resume_file[] from kernel/power/swap.c . Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> --- kernel/power/swap.c | 2 -- 1 file changed, 2 deletions(-) Index: linux-2.6/kernel/power/swap.c =================================================================== --- linux-2.6.orig/kernel/power/swap.c +++ linux-2.6/kernel/power/swap.c @@ -28,8 +28,6 @@ #include "power.h" -extern char resume_file[]; - #define SWSUSP_SIG "S1SUSPEND" struct swsusp_header { ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 5/7] Hibernation: Remove unnecessary variable declaration 2007-11-28 0:29 ` [PATCH 5/7] Hibernation: Remove unnecessary variable declaration Rafael J. Wysocki @ 2007-11-28 10:09 ` Pavel Machek 0 siblings, 0 replies; 12+ messages in thread From: Pavel Machek @ 2007-11-28 10:09 UTC (permalink / raw) To: Rafael J. Wysocki; +Cc: pm list, LKML On Wed 2007-11-28 01:29:21, Rafael J. Wysocki wrote: > From: Rafael J. Wysocki <rjw@sisk.pl> > > Remove the unnecessary extern declaration of resume_file[] > from kernel/power/swap.c . > > Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> ACK (and thanks). Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 6/7] Suspend: Use common prefix in messages 2007-11-28 0:13 [PATCH 0/7] Suspend and hibernation code cleanups (rev. 2) Rafael J. Wysocki ` (4 preceding siblings ...) 2007-11-28 0:29 ` [PATCH 5/7] Hibernation: Remove unnecessary variable declaration Rafael J. Wysocki @ 2007-11-28 0:30 ` Rafael J. Wysocki 2007-11-28 10:09 ` Pavel Machek 2007-11-28 0:37 ` [PATCH 7/7] Hibernation: Update messages Rafael J. Wysocki 6 siblings, 1 reply; 12+ messages in thread From: Rafael J. Wysocki @ 2007-11-28 0:30 UTC (permalink / raw) To: pm list; +Cc: LKML, Pavel Machek From: Rafael J. Wysocki <rjw@sisk.pl> Make suspend messages start with one common prefix "PM: ". Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> --- kernel/power/main.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) Index: linux-2.6/kernel/power/main.c =================================================================== --- linux-2.6.orig/kernel/power/main.c +++ linux-2.6/kernel/power/main.c @@ -227,7 +227,7 @@ static int suspend_enter(suspend_state_t BUG_ON(!irqs_disabled()); if ((error = device_power_down(PMSG_SUSPEND))) { - printk(KERN_ERR "Some devices failed to power down\n"); + printk(KERN_ERR "PM: Some devices failed to power down\n"); goto Done; } @@ -261,7 +261,7 @@ int suspend_devices_and_enter(suspend_st suspend_console(); error = device_suspend(PMSG_SUSPEND); if (error) { - printk(KERN_ERR "Some devices failed to suspend\n"); + printk(KERN_ERR "PM: Some devices failed to suspend\n"); goto Resume_console; } @@ -344,7 +344,7 @@ static int enter_state(suspend_state_t s if (!mutex_trylock(&pm_mutex)) return -EBUSY; - printk("Syncing filesystems ... "); + printk(KERN_INFO "PM: Syncing filesystems ... "); sys_sync(); printk("done.\n"); ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 6/7] Suspend: Use common prefix in messages 2007-11-28 0:30 ` [PATCH 6/7] Suspend: Use common prefix in messages Rafael J. Wysocki @ 2007-11-28 10:09 ` Pavel Machek 0 siblings, 0 replies; 12+ messages in thread From: Pavel Machek @ 2007-11-28 10:09 UTC (permalink / raw) To: Rafael J. Wysocki; +Cc: pm list, LKML On Wed 2007-11-28 01:30:24, Rafael J. Wysocki wrote: > From: Rafael J. Wysocki <rjw@sisk.pl> > > Make suspend messages start with one common prefix "PM: ". > > Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> ACK. -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 7/7] Hibernation: Update messages 2007-11-28 0:13 [PATCH 0/7] Suspend and hibernation code cleanups (rev. 2) Rafael J. Wysocki ` (5 preceding siblings ...) 2007-11-28 0:30 ` [PATCH 6/7] Suspend: Use common prefix in messages Rafael J. Wysocki @ 2007-11-28 0:37 ` Rafael J. Wysocki 2007-11-28 10:14 ` Pavel Machek 6 siblings, 1 reply; 12+ messages in thread From: Rafael J. Wysocki @ 2007-11-28 0:37 UTC (permalink / raw) To: pm list; +Cc: LKML, Pavel Machek From: Rafael J. Wysocki <rjw@sisk.pl> Make hibernation messages start with one common prefix "PM: " and use the word "hibernation" in messages as a synonym of "suspend to disk". Turn some KERN_INFO messages into debug ones. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> --- kernel/power/disk.c | 28 +++++++++++++++------------- kernel/power/snapshot.c | 23 ++++++++++++----------- kernel/power/swap.c | 31 +++++++++++++++++-------------- kernel/power/swsusp.c | 5 +++-- 4 files changed, 47 insertions(+), 40 deletions(-) Index: linux-2.6/kernel/power/disk.c =================================================================== --- linux-2.6.orig/kernel/power/disk.c +++ linux-2.6/kernel/power/disk.c @@ -191,8 +191,8 @@ int create_image(int platform_mode) */ error = device_power_down(PMSG_FREEZE); if (error) { - printk(KERN_ERR "Some devices failed to power down, " - KERN_ERR "aborting suspend\n"); + printk(KERN_ERR "PM: Some devices failed to power down, " + "aborting hibernation\n"); goto Enable_irqs; } @@ -203,7 +203,8 @@ int create_image(int platform_mode) save_processor_state(); error = swsusp_arch_suspend(); if (error) - printk(KERN_ERR "Error %d while creating the image\n", error); + printk(KERN_ERR "PM: Error %d creating hibernation image\n", + error); /* Restore control flow magically appears here */ restore_processor_state(); if (!in_suspend) @@ -289,7 +290,7 @@ static int resume_target_kernel(void) local_irq_disable(); error = device_power_down(PMSG_PRETHAW); if (error) { - printk(KERN_ERR "Some devices failed to power down, " + printk(KERN_ERR "PM: Some devices failed to power down, " "aborting resume\n"); goto Enable_irqs; } @@ -438,7 +439,7 @@ static void power_down(void) * Valid image is on the disk, if we continue we risk serious data * corruption after resume. */ - printk(KERN_CRIT "Please power me down manually\n"); + printk(KERN_CRIT "PM: Please power down manually\n"); while(1); } @@ -484,7 +485,7 @@ int hibernate(void) if (error) goto Exit; - printk("Syncing filesystems ... "); + printk(KERN_INFO "PM: Syncing filesystems ... "); sys_sync(); printk("done.\n"); @@ -560,10 +561,11 @@ static int software_resume(void) return -ENOENT; } swsusp_resume_device = name_to_dev_t(resume_file); - pr_debug("swsusp: Resume From Partition %s\n", resume_file); + pr_debug("PM: Resume from partition %s\n", resume_file); } else { - pr_debug("swsusp: Resume From Partition %d:%d\n", - MAJOR(swsusp_resume_device), MINOR(swsusp_resume_device)); + pr_debug("PM: Resume from partition %d:%d\n", + MAJOR(swsusp_resume_device), + MINOR(swsusp_resume_device)); } if (noresume) { @@ -575,7 +577,7 @@ static int software_resume(void) return 0; } - pr_debug("PM: Checking swsusp image.\n"); + pr_debug("PM: Checking hibernation image.\n"); error = swsusp_check(); if (error) goto Unlock; @@ -601,7 +603,7 @@ static int software_resume(void) goto Done; } - pr_debug("PM: Reading swsusp image.\n"); + pr_debug("PM: Reading hibernation image.\n"); error = swsusp_read(&flags); if (!error) @@ -726,7 +728,7 @@ static ssize_t disk_store(struct kset *k error = -EINVAL; if (!error) - pr_debug("PM: suspend-to-disk mode set to '%s'\n", + pr_debug("PM: Hibernation mode set to '%s'\n", hibernation_modes[mode]); mutex_unlock(&pm_mutex); return error ? error : n; @@ -756,7 +758,7 @@ static ssize_t resume_store(struct kset mutex_lock(&pm_mutex); swsusp_resume_device = res; mutex_unlock(&pm_mutex); - printk("Attempting manual resume\n"); + printk(KERN_INFO "PM: Starting manual resume from disk\n"); noresume = 0; software_resume(); ret = n; Index: linux-2.6/kernel/power/snapshot.c =================================================================== --- linux-2.6.orig/kernel/power/snapshot.c +++ linux-2.6/kernel/power/snapshot.c @@ -635,7 +635,7 @@ __register_nosave_region(unsigned long s region->end_pfn = end_pfn; list_add_tail(®ion->list, &nosave_regions); Report: - printk("swsusp: Registered nosave memory region: %016lx - %016lx\n", + printk(KERN_INFO "PM: Registered nosave memory: %016lx - %016lx\n", start_pfn << PAGE_SHIFT, end_pfn << PAGE_SHIFT); } @@ -704,7 +704,7 @@ static void mark_nosave_pages(struct mem list_for_each_entry(region, &nosave_regions, list) { unsigned long pfn; - printk("swsusp: Marking nosave pages: %016lx - %016lx\n", + pr_debug("PM: Marking nosave pages: %016lx - %016lx\n", region->start_pfn << PAGE_SHIFT, region->end_pfn << PAGE_SHIFT); @@ -749,7 +749,7 @@ int create_basic_memory_bitmaps(void) free_pages_map = bm2; mark_nosave_pages(forbidden_pages_map); - printk("swsusp: Basic memory bitmaps created\n"); + pr_debug("PM: Basic memory bitmaps created\n"); return 0; @@ -784,7 +784,7 @@ void free_basic_memory_bitmaps(void) memory_bm_free(bm2, PG_UNSAFE_CLEAR); kfree(bm2); - printk("swsusp: Basic memory bitmaps freed\n"); + pr_debug("PM: Basic memory bitmaps freed\n"); } /** @@ -1088,7 +1088,7 @@ static int enough_free_mem(unsigned int } nr_pages += count_pages_for_highmem(nr_highmem); - pr_debug("swsusp: Normal pages needed: %u + %u + %u, available pages: %u\n", + pr_debug("PM: Normal pages needed: %u + %u + %u, available pages: %u\n", nr_pages, PAGES_FOR_IO, meta, free); return free > nr_pages + PAGES_FOR_IO + meta; @@ -1201,20 +1201,20 @@ asmlinkage int swsusp_save(void) { unsigned int nr_pages, nr_highmem; - printk("swsusp: critical section: \n"); + printk(KERN_INFO "PM: Creating hibernation image: \n"); drain_local_pages(); nr_pages = count_data_pages(); nr_highmem = count_highmem_pages(); - printk("swsusp: Need to copy %u pages\n", nr_pages + nr_highmem); + printk(KERN_INFO "PM: Need to copy %u pages\n", nr_pages + nr_highmem); if (!enough_free_mem(nr_pages, nr_highmem)) { - printk(KERN_ERR "swsusp: Not enough free memory\n"); + printk(KERN_ERR "PM: Not enough free memory\n"); return -ENOMEM; } if (swsusp_alloc(&orig_bm, ©_bm, nr_pages, nr_highmem)) { - printk(KERN_ERR "swsusp: Memory allocation failed\n"); + printk(KERN_ERR "PM: Memory allocation failed\n"); return -ENOMEM; } @@ -1234,7 +1234,8 @@ asmlinkage int swsusp_save(void) nr_copy_pages = nr_pages; nr_meta_pages = DIV_ROUND_UP(nr_pages * sizeof(long), PAGE_SIZE); - printk("swsusp: critical section: done (%d pages copied)\n", nr_pages); + printk(KERN_INFO "PM: Hibernation image created (%d pages copied)\n", + nr_pages); return 0; } @@ -1433,7 +1434,7 @@ static int check_header(struct swsusp_in if (!reason && info->num_physpages != num_physpages) reason = "memory size"; if (reason) { - printk(KERN_ERR "swsusp: Resume mismatch: %s\n", reason); + printk(KERN_ERR "PM: Image mismatch: %s\n", reason); return -EPERM; } return 0; Index: linux-2.6/kernel/power/swap.c =================================================================== --- linux-2.6.orig/kernel/power/swap.c +++ linux-2.6/kernel/power/swap.c @@ -71,7 +71,8 @@ static int submit(int rw, pgoff_t page_o bio->bi_end_io = end_swap_bio_read; if (bio_add_page(bio, page, PAGE_SIZE, 0) < PAGE_SIZE) { - printk("swsusp: ERROR: adding page to bio at %ld\n", page_off); + printk(KERN_ERR "PM: Adding page to bio failed at %ld\n", + page_off); bio_put(bio); return -EFAULT; } @@ -151,7 +152,7 @@ static int mark_swapfiles(sector_t start error = bio_write_page(swsusp_resume_block, swsusp_header, NULL); } else { - printk(KERN_ERR "swsusp: Swap header not found!\n"); + printk(KERN_ERR "PM: Swap header not found!\n"); error = -ENODEV; } return error; @@ -323,7 +324,8 @@ static int save_image(struct swap_map_ha struct timeval start; struct timeval stop; - printk("Saving image data pages (%u pages) ... ", nr_to_write); + printk(KERN_INFO "PM: Saving image data pages (%u pages) ... ", + nr_to_write); m = nr_to_write / 100; if (!m) m = 1; @@ -363,7 +365,7 @@ static int enough_swap(unsigned int nr_p { unsigned int free_swap = count_swap_pages(root_swap, 1); - pr_debug("swsusp: free swap pages: %u\n", free_swap); + pr_debug("PM: Free swap pages: %u\n", free_swap); return free_swap > nr_pages + PAGES_FOR_IO; } @@ -386,7 +388,7 @@ int swsusp_write(unsigned int flags) error = swsusp_swap_check(); if (error) { - printk(KERN_ERR "swsusp: Cannot find swap device, try " + printk(KERN_ERR "PM: Cannot find swap device, try " "swapon -a.\n"); return error; } @@ -400,7 +402,7 @@ int swsusp_write(unsigned int flags) } header = (struct swsusp_info *)data_of(snapshot); if (!enough_swap(header->pages)) { - printk(KERN_ERR "swsusp: Not enough free swap\n"); + printk(KERN_ERR "PM: Not enough free swap\n"); error = -ENOSPC; goto out; } @@ -415,7 +417,7 @@ int swsusp_write(unsigned int flags) if (!error) { flush_swap_writer(&handle); - printk("S"); + printk(KERN_INFO "PM: S"); error = mark_swapfiles(start, flags); printk("|\n"); } @@ -505,7 +507,8 @@ static int load_image(struct swap_map_ha int err2; unsigned nr_pages; - printk("Loading image data pages (%u pages) ... ", nr_to_read); + printk(KERN_INFO "PM: Loading image data pages (%u pages) ... ", + nr_to_read); m = nr_to_read / 100; if (!m) m = 1; @@ -556,7 +559,7 @@ int swsusp_read(unsigned int *flags_p) *flags_p = swsusp_header->flags; if (IS_ERR(resume_bdev)) { - pr_debug("swsusp: block device not initialised\n"); + pr_debug("PM: Image device not initialised\n"); return PTR_ERR(resume_bdev); } @@ -575,9 +578,9 @@ int swsusp_read(unsigned int *flags_p) blkdev_put(resume_bdev); if (!error) - pr_debug("swsusp: Reading resume file was successful\n"); + pr_debug("PM: Image successfully loaded\n"); else - pr_debug("swsusp: Error %d resuming\n", error); + pr_debug("PM: Error %d resuming\n", error); return error; } @@ -609,13 +612,13 @@ int swsusp_check(void) if (error) blkdev_put(resume_bdev); else - pr_debug("swsusp: Signature found, resuming\n"); + pr_debug("PM: Signature found, resuming\n"); } else { error = PTR_ERR(resume_bdev); } if (error) - pr_debug("swsusp: Error %d check for resume file\n", error); + pr_debug("PM: Error %d checking image file\n", error); return error; } @@ -627,7 +630,7 @@ int swsusp_check(void) void swsusp_close(void) { if (IS_ERR(resume_bdev)) { - pr_debug("swsusp: block device not initialised\n"); + pr_debug("PM: Image device not initialised\n"); return; } Index: linux-2.6/kernel/power/swsusp.c =================================================================== --- linux-2.6.orig/kernel/power/swsusp.c +++ linux-2.6/kernel/power/swsusp.c @@ -188,7 +188,8 @@ void swsusp_show_speed(struct timeval *s centisecs = 1; /* avoid div-by-zero */ k = nr_pages * (PAGE_SIZE / 1024); kps = (k * 100) / centisecs; - printk("%s %d kbytes in %d.%02d seconds (%d.%02d MB/s)\n", msg, k, + printk(KERN_INFO "PM: %s %d kbytes in %d.%02d seconds (%d.%02d MB/s)\n", + msg, k, centisecs / 100, centisecs % 100, kps / 1000, (kps % 1000) / 10); } @@ -219,7 +220,7 @@ int swsusp_shrink_memory(void) char *p = "-\\|/"; struct timeval start, stop; - printk("Shrinking memory... "); + printk(KERN_INFO "PM: Shrinking memory... "); do_gettimeofday(&start); do { long size, highmem_size; ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 7/7] Hibernation: Update messages 2007-11-28 0:37 ` [PATCH 7/7] Hibernation: Update messages Rafael J. Wysocki @ 2007-11-28 10:14 ` Pavel Machek 0 siblings, 0 replies; 12+ messages in thread From: Pavel Machek @ 2007-11-28 10:14 UTC (permalink / raw) To: Rafael J. Wysocki; +Cc: pm list, LKML Hi! > Make hibernation messages start with one common prefix "PM: " and use > the word "hibernation" in messages as a synonym of "suspend to disk". > > Turn some KERN_INFO messages into debug ones. > > Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> ACK. Whole series looks good. Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2007-11-28 10:14 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-11-28 0:13 [PATCH 0/7] Suspend and hibernation code cleanups (rev. 2) Rafael J. Wysocki 2007-11-28 0:15 ` [PATCH 1/7] Suspend: Fix compilation warning for CONFIG_SUSPEND unset Rafael J. Wysocki 2007-11-28 0:26 ` [PATCH 2/7] Hibernation: Move low level resume to disk.c Rafael J. Wysocki 2007-11-28 0:27 ` [PATCH 3/7] Suspend: Fix comment in main.c Rafael J. Wysocki 2007-11-28 0:28 ` [PATCH 4/7] Hibernation: Fix comment in disk.c Rafael J. Wysocki 2007-11-28 10:08 ` Pavel Machek 2007-11-28 0:29 ` [PATCH 5/7] Hibernation: Remove unnecessary variable declaration Rafael J. Wysocki 2007-11-28 10:09 ` Pavel Machek 2007-11-28 0:30 ` [PATCH 6/7] Suspend: Use common prefix in messages Rafael J. Wysocki 2007-11-28 10:09 ` Pavel Machek 2007-11-28 0:37 ` [PATCH 7/7] Hibernation: Update messages Rafael J. Wysocki 2007-11-28 10:14 ` Pavel Machek
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox