All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] Hibernate cleanups
@ 2011-05-21 12:08 ` Rafael J. Wysocki
  0 siblings, 0 replies; 29+ messages in thread
From: Rafael J. Wysocki @ 2011-05-21 12:08 UTC (permalink / raw)
  To: Linux PM mailing list, Frank Hofmann
  Cc: LKML, linux-sh, Ralf Baechle, Benjamin Herrenschmidt

Hi,

Following are three hibernate patches I didn't have the time to
work on before.

[1/3] - Update comments in kernel/power/hibernate.c
[2/3] - Remove arch_prepare_suspend()
[3/3] - Update kerneldoc comments in kernel/power/hibernate.c

Since they don't make any functional changes, I don't think it makes sense
to wait with them for the next merge window, so I'd like to push them
for 2.6.40 if no one objects.

Thanks,
Rafael


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH 0/3] Hibernate cleanups
@ 2011-05-21 12:08 ` Rafael J. Wysocki
  0 siblings, 0 replies; 29+ messages in thread
From: Rafael J. Wysocki @ 2011-05-21 12:08 UTC (permalink / raw)
  To: Linux PM mailing list, Frank Hofmann
  Cc: LKML, linux-sh, Ralf Baechle, Benjamin Herrenschmidt

Hi,

Following are three hibernate patches I didn't have the time to
work on before.

[1/3] - Update comments in kernel/power/hibernate.c
[2/3] - Remove arch_prepare_suspend()
[3/3] - Update kerneldoc comments in kernel/power/hibernate.c

Since they don't make any functional changes, I don't think it makes sense
to wait with them for the next merge window, so I'd like to push them
for 2.6.40 if no one objects.

Thanks,
Rafael


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH 1/3] PM / Hibernate: Update some comments in core hibernate code
  2011-05-21 12:08 ` Rafael J. Wysocki
@ 2011-05-21 12:09   ` Rafael J. Wysocki
  -1 siblings, 0 replies; 29+ messages in thread
From: Rafael J. Wysocki @ 2011-05-21 12:09 UTC (permalink / raw)
  To: Linux PM mailing list
  Cc: Frank Hofmann, LKML, linux-sh, Ralf Baechle, Benjamin Herrenschmidt

From: Rafael J. Wysocki <rjw@sisk.pl>

Some comments in the core hibernate code are outdated, some aren't
necessary any more and at least one of them is plain wrong.  Remove
those comments or update them.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 kernel/power/hibernate.c |   21 +++++++--------------
 1 file changed, 7 insertions(+), 14 deletions(-)

Index: linux-2.6/kernel/power/hibernate.c
=================================--- linux-2.6.orig/kernel/power/hibernate.c
+++ linux-2.6/kernel/power/hibernate.c
@@ -248,12 +248,6 @@ static int create_image(int platform_mod
 	if (error)
 		return error;
 
-	/* At this point, dpm_suspend_start() has been called, but *not*
-	 * dpm_suspend_noirq(). We *must* call dpm_suspend_noirq() now.
-	 * Otherwise, drivers for some devices (e.g. interrupt controllers)
-	 * become desynchronized with the actual state of the hardware
-	 * at resume time, and evil weirdness ensues.
-	 */
 	error = dpm_suspend_noirq(PMSG_FREEZE);
 	if (error) {
 		printk(KERN_ERR "PM: Some devices failed to power down, "
@@ -297,9 +291,6 @@ static int create_image(int platform_mod
 
  Power_up:
 	syscore_resume();
-	/* NOTE:  dpm_resume_noirq() is just a resume() for devices
-	 * that suspended with irqs off ... no overall powerup.
-	 */
 
  Enable_irqs:
 	local_irq_enable();
@@ -416,24 +407,26 @@ static int resume_target_kernel(bool pla
 	if (error)
 		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
+		 * Otherwise, execution continues at the place where
+		 * swsusp_arch_suspend() was called.
 		 */
 		BUG_ON(!error);
-		/* This call to restore_highmem() undos the previous one */
+		/*
+		 * This call to restore_highmem() reverts the changes made by
+		 * 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
+	 * subsequent failures.
 	 */
 	swsusp_free();
 	restore_processor_state();


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH 1/3] PM / Hibernate: Update some comments in core hibernate code
@ 2011-05-21 12:09   ` Rafael J. Wysocki
  0 siblings, 0 replies; 29+ messages in thread
From: Rafael J. Wysocki @ 2011-05-21 12:09 UTC (permalink / raw)
  To: Linux PM mailing list
  Cc: Frank Hofmann, LKML, linux-sh, Ralf Baechle, Benjamin Herrenschmidt

From: Rafael J. Wysocki <rjw@sisk.pl>

Some comments in the core hibernate code are outdated, some aren't
necessary any more and at least one of them is plain wrong.  Remove
those comments or update them.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 kernel/power/hibernate.c |   21 +++++++--------------
 1 file changed, 7 insertions(+), 14 deletions(-)

Index: linux-2.6/kernel/power/hibernate.c
===================================================================
--- linux-2.6.orig/kernel/power/hibernate.c
+++ linux-2.6/kernel/power/hibernate.c
@@ -248,12 +248,6 @@ static int create_image(int platform_mod
 	if (error)
 		return error;
 
-	/* At this point, dpm_suspend_start() has been called, but *not*
-	 * dpm_suspend_noirq(). We *must* call dpm_suspend_noirq() now.
-	 * Otherwise, drivers for some devices (e.g. interrupt controllers)
-	 * become desynchronized with the actual state of the hardware
-	 * at resume time, and evil weirdness ensues.
-	 */
 	error = dpm_suspend_noirq(PMSG_FREEZE);
 	if (error) {
 		printk(KERN_ERR "PM: Some devices failed to power down, "
@@ -297,9 +291,6 @@ static int create_image(int platform_mod
 
  Power_up:
 	syscore_resume();
-	/* NOTE:  dpm_resume_noirq() is just a resume() for devices
-	 * that suspended with irqs off ... no overall powerup.
-	 */
 
  Enable_irqs:
 	local_irq_enable();
@@ -416,24 +407,26 @@ static int resume_target_kernel(bool pla
 	if (error)
 		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
+		 * Otherwise, execution continues at the place where
+		 * swsusp_arch_suspend() was called.
 		 */
 		BUG_ON(!error);
-		/* This call to restore_highmem() undos the previous one */
+		/*
+		 * This call to restore_highmem() reverts the changes made by
+		 * 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
+	 * subsequent failures.
 	 */
 	swsusp_free();
 	restore_processor_state();


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH 1/3] PM / Hibernate: Update some comments in core hibernate code
  2011-05-21 12:08 ` Rafael J. Wysocki
  (?)
@ 2011-05-21 12:09 ` Rafael J. Wysocki
  -1 siblings, 0 replies; 29+ messages in thread
From: Rafael J. Wysocki @ 2011-05-21 12:09 UTC (permalink / raw)
  To: Linux PM mailing list; +Cc: Frank Hofmann, LKML, Ralf Baechle, linux-sh

From: Rafael J. Wysocki <rjw@sisk.pl>

Some comments in the core hibernate code are outdated, some aren't
necessary any more and at least one of them is plain wrong.  Remove
those comments or update them.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 kernel/power/hibernate.c |   21 +++++++--------------
 1 file changed, 7 insertions(+), 14 deletions(-)

Index: linux-2.6/kernel/power/hibernate.c
===================================================================
--- linux-2.6.orig/kernel/power/hibernate.c
+++ linux-2.6/kernel/power/hibernate.c
@@ -248,12 +248,6 @@ static int create_image(int platform_mod
 	if (error)
 		return error;
 
-	/* At this point, dpm_suspend_start() has been called, but *not*
-	 * dpm_suspend_noirq(). We *must* call dpm_suspend_noirq() now.
-	 * Otherwise, drivers for some devices (e.g. interrupt controllers)
-	 * become desynchronized with the actual state of the hardware
-	 * at resume time, and evil weirdness ensues.
-	 */
 	error = dpm_suspend_noirq(PMSG_FREEZE);
 	if (error) {
 		printk(KERN_ERR "PM: Some devices failed to power down, "
@@ -297,9 +291,6 @@ static int create_image(int platform_mod
 
  Power_up:
 	syscore_resume();
-	/* NOTE:  dpm_resume_noirq() is just a resume() for devices
-	 * that suspended with irqs off ... no overall powerup.
-	 */
 
  Enable_irqs:
 	local_irq_enable();
@@ -416,24 +407,26 @@ static int resume_target_kernel(bool pla
 	if (error)
 		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
+		 * Otherwise, execution continues at the place where
+		 * swsusp_arch_suspend() was called.
 		 */
 		BUG_ON(!error);
-		/* This call to restore_highmem() undos the previous one */
+		/*
+		 * This call to restore_highmem() reverts the changes made by
+		 * 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
+	 * subsequent failures.
 	 */
 	swsusp_free();
 	restore_processor_state();

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH 2/3] PM / Hibernate: Remove arch_prepare_suspend()
  2011-05-21 12:08 ` Rafael J. Wysocki
@ 2011-05-21 12:10   ` Rafael J. Wysocki
  -1 siblings, 0 replies; 29+ messages in thread
From: Rafael J. Wysocki @ 2011-05-21 12:10 UTC (permalink / raw)
  To: Linux PM mailing list
  Cc: Frank Hofmann, LKML, linux-sh, Ralf Baechle, Benjamin Herrenschmidt

From: Rafael J. Wysocki <rjw@sisk.pl>

All architectures supporting hibernation define
arch_prepare_suspend() as an empty function, so remove it.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 arch/frv/include/asm/suspend.h       |   20 --------------------
 arch/mips/include/asm/suspend.h      |    2 --
 arch/powerpc/include/asm/suspend.h   |    6 ------
 arch/s390/include/asm/suspend.h      |   10 ----------
 arch/sh/include/asm/suspend.h        |    1 -
 arch/unicore32/include/asm/suspend.h |    1 -
 arch/x86/include/asm/suspend_32.h    |    2 --
 arch/x86/include/asm/suspend_64.h    |    5 -----
 kernel/power/hibernate.c             |    4 ----
 9 files changed, 51 deletions(-)

Index: linux-2.6/arch/frv/include/asm/suspend.h
=================================--- linux-2.6.orig/arch/frv/include/asm/suspend.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* suspend.h: suspension stuff
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_SUSPEND_H
-#define _ASM_SUSPEND_H
-
-static inline int arch_prepare_suspend(void)
-{
-	return 0;
-}
-
-#endif /* _ASM_SUSPEND_H */
Index: linux-2.6/arch/s390/include/asm/suspend.h
=================================--- linux-2.6.orig/arch/s390/include/asm/suspend.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef __ASM_S390_SUSPEND_H
-#define __ASM_S390_SUSPEND_H
-
-static inline int arch_prepare_suspend(void)
-{
-	return 0;
-}
-
-#endif
-
Index: linux-2.6/arch/sh/include/asm/suspend.h
=================================--- linux-2.6.orig/arch/sh/include/asm/suspend.h
+++ linux-2.6/arch/sh/include/asm/suspend.h
@@ -3,7 +3,6 @@
 
 #ifndef __ASSEMBLY__
 #include <linux/notifier.h>
-static inline int arch_prepare_suspend(void) { return 0; }
 
 #include <asm/ptrace.h>
 
Index: linux-2.6/arch/mips/include/asm/suspend.h
=================================--- linux-2.6.orig/arch/mips/include/asm/suspend.h
+++ linux-2.6/arch/mips/include/asm/suspend.h
@@ -1,8 +1,6 @@
 #ifndef __ASM_SUSPEND_H
 #define __ASM_SUSPEND_H
 
-static inline int arch_prepare_suspend(void) { return 0; }
-
 /* References to section boundaries */
 extern const void __nosave_begin, __nosave_end;
 
Index: linux-2.6/arch/powerpc/include/asm/suspend.h
=================================--- linux-2.6.orig/arch/powerpc/include/asm/suspend.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef __ASM_POWERPC_SUSPEND_H
-#define __ASM_POWERPC_SUSPEND_H
-
-static inline int arch_prepare_suspend(void) { return 0; }
-
-#endif /* __ASM_POWERPC_SUSPEND_H */
Index: linux-2.6/arch/unicore32/include/asm/suspend.h
=================================--- linux-2.6.orig/arch/unicore32/include/asm/suspend.h
+++ linux-2.6/arch/unicore32/include/asm/suspend.h
@@ -14,7 +14,6 @@
 #define __UNICORE_SUSPEND_H__
 
 #ifndef __ASSEMBLY__
-static inline int arch_prepare_suspend(void) { return 0; }
 
 #include <asm/ptrace.h>
 
Index: linux-2.6/arch/x86/include/asm/suspend_32.h
=================================--- linux-2.6.orig/arch/x86/include/asm/suspend_32.h
+++ linux-2.6/arch/x86/include/asm/suspend_32.h
@@ -9,8 +9,6 @@
 #include <asm/desc.h>
 #include <asm/i387.h>
 
-static inline int arch_prepare_suspend(void) { return 0; }
-
 /* image of the saved processor state */
 struct saved_context {
 	u16 es, fs, gs, ss;
Index: linux-2.6/arch/x86/include/asm/suspend_64.h
=================================--- linux-2.6.orig/arch/x86/include/asm/suspend_64.h
+++ linux-2.6/arch/x86/include/asm/suspend_64.h
@@ -9,11 +9,6 @@
 #include <asm/desc.h>
 #include <asm/i387.h>
 
-static inline int arch_prepare_suspend(void)
-{
-	return 0;
-}
-
 /*
  * Image of the saved processor state, used by the low level ACPI suspend to
  * RAM code and by the low level hibernation code.
Index: linux-2.6/kernel/power/hibernate.c
=================================--- linux-2.6.orig/kernel/power/hibernate.c
+++ linux-2.6/kernel/power/hibernate.c
@@ -244,10 +244,6 @@ static int create_image(int platform_mod
 {
 	int error;
 
-	error = arch_prepare_suspend();
-	if (error)
-		return error;
-
 	error = dpm_suspend_noirq(PMSG_FREEZE);
 	if (error) {
 		printk(KERN_ERR "PM: Some devices failed to power down, "


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH 2/3] PM / Hibernate: Remove arch_prepare_suspend()
@ 2011-05-21 12:10   ` Rafael J. Wysocki
  0 siblings, 0 replies; 29+ messages in thread
From: Rafael J. Wysocki @ 2011-05-21 12:10 UTC (permalink / raw)
  To: Linux PM mailing list
  Cc: Frank Hofmann, LKML, linux-sh, Ralf Baechle, Benjamin Herrenschmidt

From: Rafael J. Wysocki <rjw@sisk.pl>

All architectures supporting hibernation define
arch_prepare_suspend() as an empty function, so remove it.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 arch/frv/include/asm/suspend.h       |   20 --------------------
 arch/mips/include/asm/suspend.h      |    2 --
 arch/powerpc/include/asm/suspend.h   |    6 ------
 arch/s390/include/asm/suspend.h      |   10 ----------
 arch/sh/include/asm/suspend.h        |    1 -
 arch/unicore32/include/asm/suspend.h |    1 -
 arch/x86/include/asm/suspend_32.h    |    2 --
 arch/x86/include/asm/suspend_64.h    |    5 -----
 kernel/power/hibernate.c             |    4 ----
 9 files changed, 51 deletions(-)

Index: linux-2.6/arch/frv/include/asm/suspend.h
===================================================================
--- linux-2.6.orig/arch/frv/include/asm/suspend.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* suspend.h: suspension stuff
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_SUSPEND_H
-#define _ASM_SUSPEND_H
-
-static inline int arch_prepare_suspend(void)
-{
-	return 0;
-}
-
-#endif /* _ASM_SUSPEND_H */
Index: linux-2.6/arch/s390/include/asm/suspend.h
===================================================================
--- linux-2.6.orig/arch/s390/include/asm/suspend.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef __ASM_S390_SUSPEND_H
-#define __ASM_S390_SUSPEND_H
-
-static inline int arch_prepare_suspend(void)
-{
-	return 0;
-}
-
-#endif
-
Index: linux-2.6/arch/sh/include/asm/suspend.h
===================================================================
--- linux-2.6.orig/arch/sh/include/asm/suspend.h
+++ linux-2.6/arch/sh/include/asm/suspend.h
@@ -3,7 +3,6 @@
 
 #ifndef __ASSEMBLY__
 #include <linux/notifier.h>
-static inline int arch_prepare_suspend(void) { return 0; }
 
 #include <asm/ptrace.h>
 
Index: linux-2.6/arch/mips/include/asm/suspend.h
===================================================================
--- linux-2.6.orig/arch/mips/include/asm/suspend.h
+++ linux-2.6/arch/mips/include/asm/suspend.h
@@ -1,8 +1,6 @@
 #ifndef __ASM_SUSPEND_H
 #define __ASM_SUSPEND_H
 
-static inline int arch_prepare_suspend(void) { return 0; }
-
 /* References to section boundaries */
 extern const void __nosave_begin, __nosave_end;
 
Index: linux-2.6/arch/powerpc/include/asm/suspend.h
===================================================================
--- linux-2.6.orig/arch/powerpc/include/asm/suspend.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef __ASM_POWERPC_SUSPEND_H
-#define __ASM_POWERPC_SUSPEND_H
-
-static inline int arch_prepare_suspend(void) { return 0; }
-
-#endif /* __ASM_POWERPC_SUSPEND_H */
Index: linux-2.6/arch/unicore32/include/asm/suspend.h
===================================================================
--- linux-2.6.orig/arch/unicore32/include/asm/suspend.h
+++ linux-2.6/arch/unicore32/include/asm/suspend.h
@@ -14,7 +14,6 @@
 #define __UNICORE_SUSPEND_H__
 
 #ifndef __ASSEMBLY__
-static inline int arch_prepare_suspend(void) { return 0; }
 
 #include <asm/ptrace.h>
 
Index: linux-2.6/arch/x86/include/asm/suspend_32.h
===================================================================
--- linux-2.6.orig/arch/x86/include/asm/suspend_32.h
+++ linux-2.6/arch/x86/include/asm/suspend_32.h
@@ -9,8 +9,6 @@
 #include <asm/desc.h>
 #include <asm/i387.h>
 
-static inline int arch_prepare_suspend(void) { return 0; }
-
 /* image of the saved processor state */
 struct saved_context {
 	u16 es, fs, gs, ss;
Index: linux-2.6/arch/x86/include/asm/suspend_64.h
===================================================================
--- linux-2.6.orig/arch/x86/include/asm/suspend_64.h
+++ linux-2.6/arch/x86/include/asm/suspend_64.h
@@ -9,11 +9,6 @@
 #include <asm/desc.h>
 #include <asm/i387.h>
 
-static inline int arch_prepare_suspend(void)
-{
-	return 0;
-}
-
 /*
  * Image of the saved processor state, used by the low level ACPI suspend to
  * RAM code and by the low level hibernation code.
Index: linux-2.6/kernel/power/hibernate.c
===================================================================
--- linux-2.6.orig/kernel/power/hibernate.c
+++ linux-2.6/kernel/power/hibernate.c
@@ -244,10 +244,6 @@ static int create_image(int platform_mod
 {
 	int error;
 
-	error = arch_prepare_suspend();
-	if (error)
-		return error;
-
 	error = dpm_suspend_noirq(PMSG_FREEZE);
 	if (error) {
 		printk(KERN_ERR "PM: Some devices failed to power down, "


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH 2/3] PM / Hibernate: Remove arch_prepare_suspend()
  2011-05-21 12:08 ` Rafael J. Wysocki
                   ` (3 preceding siblings ...)
  (?)
@ 2011-05-21 12:10 ` Rafael J. Wysocki
  -1 siblings, 0 replies; 29+ messages in thread
From: Rafael J. Wysocki @ 2011-05-21 12:10 UTC (permalink / raw)
  To: Linux PM mailing list; +Cc: Frank Hofmann, LKML, Ralf Baechle, linux-sh

From: Rafael J. Wysocki <rjw@sisk.pl>

All architectures supporting hibernation define
arch_prepare_suspend() as an empty function, so remove it.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 arch/frv/include/asm/suspend.h       |   20 --------------------
 arch/mips/include/asm/suspend.h      |    2 --
 arch/powerpc/include/asm/suspend.h   |    6 ------
 arch/s390/include/asm/suspend.h      |   10 ----------
 arch/sh/include/asm/suspend.h        |    1 -
 arch/unicore32/include/asm/suspend.h |    1 -
 arch/x86/include/asm/suspend_32.h    |    2 --
 arch/x86/include/asm/suspend_64.h    |    5 -----
 kernel/power/hibernate.c             |    4 ----
 9 files changed, 51 deletions(-)

Index: linux-2.6/arch/frv/include/asm/suspend.h
===================================================================
--- linux-2.6.orig/arch/frv/include/asm/suspend.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* suspend.h: suspension stuff
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_SUSPEND_H
-#define _ASM_SUSPEND_H
-
-static inline int arch_prepare_suspend(void)
-{
-	return 0;
-}
-
-#endif /* _ASM_SUSPEND_H */
Index: linux-2.6/arch/s390/include/asm/suspend.h
===================================================================
--- linux-2.6.orig/arch/s390/include/asm/suspend.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef __ASM_S390_SUSPEND_H
-#define __ASM_S390_SUSPEND_H
-
-static inline int arch_prepare_suspend(void)
-{
-	return 0;
-}
-
-#endif
-
Index: linux-2.6/arch/sh/include/asm/suspend.h
===================================================================
--- linux-2.6.orig/arch/sh/include/asm/suspend.h
+++ linux-2.6/arch/sh/include/asm/suspend.h
@@ -3,7 +3,6 @@
 
 #ifndef __ASSEMBLY__
 #include <linux/notifier.h>
-static inline int arch_prepare_suspend(void) { return 0; }
 
 #include <asm/ptrace.h>
 
Index: linux-2.6/arch/mips/include/asm/suspend.h
===================================================================
--- linux-2.6.orig/arch/mips/include/asm/suspend.h
+++ linux-2.6/arch/mips/include/asm/suspend.h
@@ -1,8 +1,6 @@
 #ifndef __ASM_SUSPEND_H
 #define __ASM_SUSPEND_H
 
-static inline int arch_prepare_suspend(void) { return 0; }
-
 /* References to section boundaries */
 extern const void __nosave_begin, __nosave_end;
 
Index: linux-2.6/arch/powerpc/include/asm/suspend.h
===================================================================
--- linux-2.6.orig/arch/powerpc/include/asm/suspend.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef __ASM_POWERPC_SUSPEND_H
-#define __ASM_POWERPC_SUSPEND_H
-
-static inline int arch_prepare_suspend(void) { return 0; }
-
-#endif /* __ASM_POWERPC_SUSPEND_H */
Index: linux-2.6/arch/unicore32/include/asm/suspend.h
===================================================================
--- linux-2.6.orig/arch/unicore32/include/asm/suspend.h
+++ linux-2.6/arch/unicore32/include/asm/suspend.h
@@ -14,7 +14,6 @@
 #define __UNICORE_SUSPEND_H__
 
 #ifndef __ASSEMBLY__
-static inline int arch_prepare_suspend(void) { return 0; }
 
 #include <asm/ptrace.h>
 
Index: linux-2.6/arch/x86/include/asm/suspend_32.h
===================================================================
--- linux-2.6.orig/arch/x86/include/asm/suspend_32.h
+++ linux-2.6/arch/x86/include/asm/suspend_32.h
@@ -9,8 +9,6 @@
 #include <asm/desc.h>
 #include <asm/i387.h>
 
-static inline int arch_prepare_suspend(void) { return 0; }
-
 /* image of the saved processor state */
 struct saved_context {
 	u16 es, fs, gs, ss;
Index: linux-2.6/arch/x86/include/asm/suspend_64.h
===================================================================
--- linux-2.6.orig/arch/x86/include/asm/suspend_64.h
+++ linux-2.6/arch/x86/include/asm/suspend_64.h
@@ -9,11 +9,6 @@
 #include <asm/desc.h>
 #include <asm/i387.h>
 
-static inline int arch_prepare_suspend(void)
-{
-	return 0;
-}
-
 /*
  * Image of the saved processor state, used by the low level ACPI suspend to
  * RAM code and by the low level hibernation code.
Index: linux-2.6/kernel/power/hibernate.c
===================================================================
--- linux-2.6.orig/kernel/power/hibernate.c
+++ linux-2.6/kernel/power/hibernate.c
@@ -244,10 +244,6 @@ static int create_image(int platform_mod
 {
 	int error;
 
-	error = arch_prepare_suspend();
-	if (error)
-		return error;
-
 	error = dpm_suspend_noirq(PMSG_FREEZE);
 	if (error) {
 		printk(KERN_ERR "PM: Some devices failed to power down, "

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH 3/3] PM / Hibernate: Update kerneldoc comments in hibernate.c
  2011-05-21 12:08 ` Rafael J. Wysocki
@ 2011-05-21 12:12   ` Rafael J. Wysocki
  -1 siblings, 0 replies; 29+ messages in thread
From: Rafael J. Wysocki @ 2011-05-21 12:12 UTC (permalink / raw)
  To: Linux PM mailing list
  Cc: Frank Hofmann, LKML, linux-sh, Ralf Baechle,
	Benjamin Herrenschmidt, Randy Dunlap

From: Rafael J. Wysocki <rjw@sisk.pl>

Some of the kerneldoc comments in kernel/power/hibernate.c are
outdated and some of them don't adhere to the kernel's standards.
Update them and make them look in a consistent way.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 kernel/power/hibernate.c |  184 ++++++++++++++++++++++++-----------------------
 1 file changed, 94 insertions(+), 90 deletions(-)

Index: linux-2.6/kernel/power/hibernate.c
=================================--- linux-2.6.orig/kernel/power/hibernate.c
+++ linux-2.6/kernel/power/hibernate.c
@@ -55,10 +55,9 @@ static int hibernation_mode = HIBERNATIO
 static const struct platform_hibernation_ops *hibernation_ops;
 
 /**
- * hibernation_set_ops - set the global hibernate operations
- * @ops: the hibernation operations to use in subsequent hibernation transitions
+ * hibernation_set_ops - Set the global hibernate operations.
+ * @ops: Hibernation operations to use in subsequent hibernation transitions.
  */
-
 void hibernation_set_ops(const struct platform_hibernation_ops *ops)
 {
 	if (ops && !(ops->begin && ops->end &&  ops->pre_snapshot
@@ -115,10 +114,8 @@ static int hibernation_test(int level) {
 #endif /* !CONFIG_PM_DEBUG */
 
 /**
- *	platform_begin - tell the platform driver that we're starting
- *	hibernation
+ * platform_begin - Use platform driver to start hibernation.
  */
-
 static int platform_begin(int platform_mode)
 {
 	return (platform_mode && hibernation_ops) ?
@@ -126,10 +123,8 @@ static int platform_begin(int platform_m
 }
 
 /**
- *	platform_end - tell the platform driver that we've entered the
- *	working state
+ * platform_end - Use platform driver to finish transition to the working state.
  */
-
 static void platform_end(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -137,8 +132,10 @@ static void platform_end(int platform_mo
 }
 
 /**
- *	platform_pre_snapshot - prepare the machine for hibernation using the
- *	platform driver if so configured and return an error code if it fails
+ * platform_pre_snapshot - Call platform to prepare the machine for hibernation.
+ *
+ * Use the platform driver to prepare the system for creating a hibernate image,
+ * if so configured, and return an error code if that fails.
  */
 
 static int platform_pre_snapshot(int platform_mode)
@@ -148,10 +145,13 @@ static int platform_pre_snapshot(int pla
 }
 
 /**
- *	platform_leave - prepare the machine for switching to the normal mode
- *	of operation using the platform driver (called with interrupts disabled)
+ * platform_leave - Use platform to prepare a transition to the working state.
+ *
+ * Use the platform driver prepare to prepare the machine for switching to the
+ * normal mode of operation.
+ *
+ * This routine is called on one CPU with interrupts disabled.
  */
-
 static void platform_leave(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -159,10 +159,13 @@ static void platform_leave(int platform_
 }
 
 /**
- *	platform_finish - switch the machine to the normal mode of operation
- *	using the platform driver (must be called after platform_prepare())
+ * platform_finish - Use platform to switch the system to the working state.
+ *
+ * Use the platform driver to switch the machine to the normal mode of
+ * operation.
+ *
+ * This routine must be called after platform_prepare().
  */
-
 static void platform_finish(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -170,11 +173,14 @@ static void platform_finish(int platform
 }
 
 /**
- *	platform_pre_restore - prepare the platform for the restoration from a
- *	hibernation image.  If the restore fails after this function has been
- *	called, platform_restore_cleanup() must be called.
+ * platform_pre_restore - Prepare for hibernate image restoration.
+ *
+ * Use the platform driver to prepare the system for resume from a hibernation
+ * image.
+ *
+ * If the restore fails after this function has been called,
+ * platform_restore_cleanup() must be called.
  */
-
 static int platform_pre_restore(int platform_mode)
 {
 	return (platform_mode && hibernation_ops) ?
@@ -182,12 +188,15 @@ static int platform_pre_restore(int plat
 }
 
 /**
- *	platform_restore_cleanup - switch the platform to the normal mode of
- *	operation after a failing restore.  If platform_pre_restore() has been
- *	called before the failing restore, this function must be called too,
- *	regardless of the result of platform_pre_restore().
+ * platform_restore_cleanup - Switch to the working state after failing restore.
+ *
+ * Use the platform driver to switch the system to the normal mode of operation
+ * after a failing restore.
+ *
+ * If platform_pre_restore() has been called before the failing restore, this
+ * function must be called too, regardless of the result of
+ * platform_pre_restore().
  */
-
 static void platform_restore_cleanup(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -195,10 +204,8 @@ static void platform_restore_cleanup(int
 }
 
 /**
- *	platform_recover - recover the platform from a failure to suspend
- *	devices.
+ * platform_recover - Recover the platform from a failure to suspend devices.
  */
-
 static void platform_recover(int platform_mode)
 {
 	if (platform_mode && hibernation_ops && hibernation_ops->recover)
@@ -206,13 +213,12 @@ static void platform_recover(int platfor
 }
 
 /**
- *	swsusp_show_speed - print the time elapsed between two events.
- *	@start: Starting event.
- *	@stop: Final event.
- *	@nr_pages -	number of pages processed between @start and @stop
- *	@msg -		introductory message to print
+ * swsusp_show_speed - Print time elapsed between two events during hibernation.
+ * @start: Starting event.
+ * @stop: Final event.
+ * @nr_pages: Number of memory pages processed between @start and @stop.
+ * @msg: Additional diagnostic message to print.
  */
-
 void swsusp_show_speed(struct timeval *start, struct timeval *stop,
 			unsigned nr_pages, char *msg)
 {
@@ -235,11 +241,13 @@ void swsusp_show_speed(struct timeval *s
 }
 
 /**
- *	create_image - freeze devices that need to be frozen with interrupts
- *	off, create the hibernation image and thaw those devices.  Control
- *	reappears in this routine after a restore.
+ * create_image - Create a hibernation image.
+ *
+ * Execute device drivers' .freeze_noirq() callbacks, create a hibernation image
+ * and execute the drivers' .thaw_noirq() callbacks.
+ *
+ * Control reappears in this routine after the subsequent restore.
  */
-
 static int create_image(int platform_mode)
 {
 	int error;
@@ -304,14 +312,11 @@ static int create_image(int platform_mod
 }
 
 /**
- *	hibernation_snapshot - quiesce devices and create the hibernation
- *	snapshot image.
- *	@platform_mode - if set, use the platform driver, if available, to
- *			 prepare the platform firmware for the power transition.
+ * hibernation_snapshot - Quiesce devices and create a hibernation image.
+ * @platform_mode: If set, use platform driver to prepare for the transition.
  *
- *	Must be called with pm_mutex held
+ * This routine must be called with pm_mutex held.
  */
-
 int hibernation_snapshot(int platform_mode)
 {
 	pm_message_t msg = PMSG_RECOVER;
@@ -371,13 +376,13 @@ 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.
+ * resume_target_kernel - Restore system state from a hibernation image.
+ *
+ * Execute device drivers' .freeze_noirq() callbacks, 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(bool platform_mode)
 {
 	int error;
@@ -445,14 +450,12 @@ static int resume_target_kernel(bool pla
 }
 
 /**
- *	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
- *			 prepare the platform firmware for the transition.
+ * hibernation_restore - Quiesce devices and restore from a hibernation image.
+ * @platform_mode: If set, use platform driver to prepare for the transition.
  *
- *	Must be called with pm_mutex held
+ * This routine must be called with pm_mutex held.  If it is successful, control
+ * reappears in the restored target kernel in hibernation_snaphot().
  */
-
 int hibernation_restore(int platform_mode)
 {
 	int error;
@@ -472,10 +475,8 @@ int hibernation_restore(int platform_mod
 }
 
 /**
- *	hibernation_platform_enter - enter the hibernation state using the
- *	platform driver (if available)
+ * hibernation_platform_enter - Power off the system using the platform driver.
  */
-
 int hibernation_platform_enter(void)
 {
 	int error;
@@ -546,12 +547,12 @@ int hibernation_platform_enter(void)
 }
 
 /**
- *	power_down - Shut the machine down for hibernation.
+ * power_down - Shut the machine down for hibernation.
  *
- *	Use the platform driver, if configured so; otherwise try
- *	to power off or reboot.
+ * Use the platform driver, if configured, to put the system into the sleep
+ * state corresponding to hibernation, or try to power it off or reboot,
+ * depending on the value of hibernation_mode.
  */
-
 static void power_down(void)
 {
 	switch (hibernation_mode) {
@@ -588,9 +589,8 @@ static int prepare_processes(void)
 }
 
 /**
- *	hibernate - The granpappy of the built-in hibernation management
+ * hibernate - Carry out system hibernation, including saving the image.
  */
-
 int hibernate(void)
 {
 	int error;
@@ -668,17 +668,20 @@ int hibernate(void)
 
 
 /**
- *	software_resume - Resume from a saved image.
+ * software_resume - Resume from a saved hibernation image.
+ *
+ * This routine is called as a late initcall, when all devices have been
+ * discovered and initialized already.
  *
- *	Called as a late_initcall (so all devices are discovered and
- *	initialized), we call swsusp to see if we have a saved image or not.
- *	If so, we quiesce devices, the restore the saved image. We will
- *	return above (in hibernate() ) if everything goes well.
- *	Otherwise, we fail gracefully and return to the normally
- *	scheduled program.
+ * The image reading code is called to see if there is a hibernation image
+ * available for reading.  If that is the case, devices are quiesced and the
+ * contents of memory is restored from the saved image.
  *
+ * If this is successful, control reappears in the restored target kernel in
+ * hibernation_snaphot() which returns to hibernate().  Otherwise, the routine
+ * attempts to recover gracefully and make the kernel return to the normal mode
+ * of operation.
  */
-
 static int software_resume(void)
 {
 	int error;
@@ -808,21 +811,17 @@ static const char * const hibernation_mo
 	[HIBERNATION_TESTPROC]	= "testproc",
 };
 
-/**
- *	disk - Control hibernation mode
+/*
+ * /sys/power/disk - Control hibernation mode.
  *
- *	Suspend-to-disk can be handled in several ways. We have a few options
- *	for putting the system to sleep - using the platform driver (e.g. ACPI
- *	or other hibernation_ops), powering off the system or rebooting the
- *	system (for testing) as well as the two test modes.
- *
- *	The system can support 'platform', and that is known a priori (and
- *	encoded by the presence of hibernation_ops). However, the user may
- *	choose 'shutdown' or 'reboot' as alternatives, as well as one fo the
- *	test modes, 'test' or 'testproc'.
+ * Hibernation can be handled in several ways.  There are a few different ways
+ * to put the system into the sleep state: using the platform driver (e.g. ACPI
+ * or other hibernation_ops), powering it off or rebooting it (for testing
+ * mostly), or using one of the two available test modes.
  *
- *	show() will display what the mode is currently set to.
- *	store() will accept one of
+ * The sysfs file /sys/power/disk provides an interface for selecting the
+ * hibernation mode to use.  Reading from this file causes the available modes
+ * to be printed.  There are 5 modes that can be supported:
  *
  *	'platform'
  *	'shutdown'
@@ -830,8 +829,14 @@ static const char * const hibernation_mo
  *	'test'
  *	'testproc'
  *
- *	It will only change to 'platform' if the system
- *	supports it (as determined by having hibernation_ops).
+ * If a platform hibernation driver is in use, 'platform' will be supported
+ * and will be used by default.  Otherwise, 'shutdown' will be used by default.
+ * The selected option (i.e. the one corresponding to the current value of
+ * hibernation_mode) is enclosed by a square bracket.
+ *
+ * To select a given hibernation mode it is necessary to write the mode's
+ * string representation (as returned by reading from /sys/power/disk) back
+ * into /sys/power/disk.
  */
 
 static ssize_t disk_show(struct kobject *kobj, struct kobj_attribute *attr,
@@ -864,7 +869,6 @@ static ssize_t disk_show(struct kobject
 	return buf-start;
 }
 
-
 static ssize_t disk_store(struct kobject *kobj, struct kobj_attribute *attr,
 			  const char *buf, size_t n)
 {


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH 3/3] PM / Hibernate: Update kerneldoc comments in hibernate.c
@ 2011-05-21 12:12   ` Rafael J. Wysocki
  0 siblings, 0 replies; 29+ messages in thread
From: Rafael J. Wysocki @ 2011-05-21 12:12 UTC (permalink / raw)
  To: Linux PM mailing list
  Cc: Frank Hofmann, LKML, linux-sh, Ralf Baechle,
	Benjamin Herrenschmidt, Randy Dunlap

From: Rafael J. Wysocki <rjw@sisk.pl>

Some of the kerneldoc comments in kernel/power/hibernate.c are
outdated and some of them don't adhere to the kernel's standards.
Update them and make them look in a consistent way.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 kernel/power/hibernate.c |  184 ++++++++++++++++++++++++-----------------------
 1 file changed, 94 insertions(+), 90 deletions(-)

Index: linux-2.6/kernel/power/hibernate.c
===================================================================
--- linux-2.6.orig/kernel/power/hibernate.c
+++ linux-2.6/kernel/power/hibernate.c
@@ -55,10 +55,9 @@ static int hibernation_mode = HIBERNATIO
 static const struct platform_hibernation_ops *hibernation_ops;
 
 /**
- * hibernation_set_ops - set the global hibernate operations
- * @ops: the hibernation operations to use in subsequent hibernation transitions
+ * hibernation_set_ops - Set the global hibernate operations.
+ * @ops: Hibernation operations to use in subsequent hibernation transitions.
  */
-
 void hibernation_set_ops(const struct platform_hibernation_ops *ops)
 {
 	if (ops && !(ops->begin && ops->end &&  ops->pre_snapshot
@@ -115,10 +114,8 @@ static int hibernation_test(int level) {
 #endif /* !CONFIG_PM_DEBUG */
 
 /**
- *	platform_begin - tell the platform driver that we're starting
- *	hibernation
+ * platform_begin - Use platform driver to start hibernation.
  */
-
 static int platform_begin(int platform_mode)
 {
 	return (platform_mode && hibernation_ops) ?
@@ -126,10 +123,8 @@ static int platform_begin(int platform_m
 }
 
 /**
- *	platform_end - tell the platform driver that we've entered the
- *	working state
+ * platform_end - Use platform driver to finish transition to the working state.
  */
-
 static void platform_end(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -137,8 +132,10 @@ static void platform_end(int platform_mo
 }
 
 /**
- *	platform_pre_snapshot - prepare the machine for hibernation using the
- *	platform driver if so configured and return an error code if it fails
+ * platform_pre_snapshot - Call platform to prepare the machine for hibernation.
+ *
+ * Use the platform driver to prepare the system for creating a hibernate image,
+ * if so configured, and return an error code if that fails.
  */
 
 static int platform_pre_snapshot(int platform_mode)
@@ -148,10 +145,13 @@ static int platform_pre_snapshot(int pla
 }
 
 /**
- *	platform_leave - prepare the machine for switching to the normal mode
- *	of operation using the platform driver (called with interrupts disabled)
+ * platform_leave - Use platform to prepare a transition to the working state.
+ *
+ * Use the platform driver prepare to prepare the machine for switching to the
+ * normal mode of operation.
+ *
+ * This routine is called on one CPU with interrupts disabled.
  */
-
 static void platform_leave(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -159,10 +159,13 @@ static void platform_leave(int platform_
 }
 
 /**
- *	platform_finish - switch the machine to the normal mode of operation
- *	using the platform driver (must be called after platform_prepare())
+ * platform_finish - Use platform to switch the system to the working state.
+ *
+ * Use the platform driver to switch the machine to the normal mode of
+ * operation.
+ *
+ * This routine must be called after platform_prepare().
  */
-
 static void platform_finish(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -170,11 +173,14 @@ static void platform_finish(int platform
 }
 
 /**
- *	platform_pre_restore - prepare the platform for the restoration from a
- *	hibernation image.  If the restore fails after this function has been
- *	called, platform_restore_cleanup() must be called.
+ * platform_pre_restore - Prepare for hibernate image restoration.
+ *
+ * Use the platform driver to prepare the system for resume from a hibernation
+ * image.
+ *
+ * If the restore fails after this function has been called,
+ * platform_restore_cleanup() must be called.
  */
-
 static int platform_pre_restore(int platform_mode)
 {
 	return (platform_mode && hibernation_ops) ?
@@ -182,12 +188,15 @@ static int platform_pre_restore(int plat
 }
 
 /**
- *	platform_restore_cleanup - switch the platform to the normal mode of
- *	operation after a failing restore.  If platform_pre_restore() has been
- *	called before the failing restore, this function must be called too,
- *	regardless of the result of platform_pre_restore().
+ * platform_restore_cleanup - Switch to the working state after failing restore.
+ *
+ * Use the platform driver to switch the system to the normal mode of operation
+ * after a failing restore.
+ *
+ * If platform_pre_restore() has been called before the failing restore, this
+ * function must be called too, regardless of the result of
+ * platform_pre_restore().
  */
-
 static void platform_restore_cleanup(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -195,10 +204,8 @@ static void platform_restore_cleanup(int
 }
 
 /**
- *	platform_recover - recover the platform from a failure to suspend
- *	devices.
+ * platform_recover - Recover the platform from a failure to suspend devices.
  */
-
 static void platform_recover(int platform_mode)
 {
 	if (platform_mode && hibernation_ops && hibernation_ops->recover)
@@ -206,13 +213,12 @@ static void platform_recover(int platfor
 }
 
 /**
- *	swsusp_show_speed - print the time elapsed between two events.
- *	@start: Starting event.
- *	@stop: Final event.
- *	@nr_pages -	number of pages processed between @start and @stop
- *	@msg -		introductory message to print
+ * swsusp_show_speed - Print time elapsed between two events during hibernation.
+ * @start: Starting event.
+ * @stop: Final event.
+ * @nr_pages: Number of memory pages processed between @start and @stop.
+ * @msg: Additional diagnostic message to print.
  */
-
 void swsusp_show_speed(struct timeval *start, struct timeval *stop,
 			unsigned nr_pages, char *msg)
 {
@@ -235,11 +241,13 @@ void swsusp_show_speed(struct timeval *s
 }
 
 /**
- *	create_image - freeze devices that need to be frozen with interrupts
- *	off, create the hibernation image and thaw those devices.  Control
- *	reappears in this routine after a restore.
+ * create_image - Create a hibernation image.
+ *
+ * Execute device drivers' .freeze_noirq() callbacks, create a hibernation image
+ * and execute the drivers' .thaw_noirq() callbacks.
+ *
+ * Control reappears in this routine after the subsequent restore.
  */
-
 static int create_image(int platform_mode)
 {
 	int error;
@@ -304,14 +312,11 @@ static int create_image(int platform_mod
 }
 
 /**
- *	hibernation_snapshot - quiesce devices and create the hibernation
- *	snapshot image.
- *	@platform_mode - if set, use the platform driver, if available, to
- *			 prepare the platform firmware for the power transition.
+ * hibernation_snapshot - Quiesce devices and create a hibernation image.
+ * @platform_mode: If set, use platform driver to prepare for the transition.
  *
- *	Must be called with pm_mutex held
+ * This routine must be called with pm_mutex held.
  */
-
 int hibernation_snapshot(int platform_mode)
 {
 	pm_message_t msg = PMSG_RECOVER;
@@ -371,13 +376,13 @@ 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.
+ * resume_target_kernel - Restore system state from a hibernation image.
+ *
+ * Execute device drivers' .freeze_noirq() callbacks, 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(bool platform_mode)
 {
 	int error;
@@ -445,14 +450,12 @@ static int resume_target_kernel(bool pla
 }
 
 /**
- *	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
- *			 prepare the platform firmware for the transition.
+ * hibernation_restore - Quiesce devices and restore from a hibernation image.
+ * @platform_mode: If set, use platform driver to prepare for the transition.
  *
- *	Must be called with pm_mutex held
+ * This routine must be called with pm_mutex held.  If it is successful, control
+ * reappears in the restored target kernel in hibernation_snaphot().
  */
-
 int hibernation_restore(int platform_mode)
 {
 	int error;
@@ -472,10 +475,8 @@ int hibernation_restore(int platform_mod
 }
 
 /**
- *	hibernation_platform_enter - enter the hibernation state using the
- *	platform driver (if available)
+ * hibernation_platform_enter - Power off the system using the platform driver.
  */
-
 int hibernation_platform_enter(void)
 {
 	int error;
@@ -546,12 +547,12 @@ int hibernation_platform_enter(void)
 }
 
 /**
- *	power_down - Shut the machine down for hibernation.
+ * power_down - Shut the machine down for hibernation.
  *
- *	Use the platform driver, if configured so; otherwise try
- *	to power off or reboot.
+ * Use the platform driver, if configured, to put the system into the sleep
+ * state corresponding to hibernation, or try to power it off or reboot,
+ * depending on the value of hibernation_mode.
  */
-
 static void power_down(void)
 {
 	switch (hibernation_mode) {
@@ -588,9 +589,8 @@ static int prepare_processes(void)
 }
 
 /**
- *	hibernate - The granpappy of the built-in hibernation management
+ * hibernate - Carry out system hibernation, including saving the image.
  */
-
 int hibernate(void)
 {
 	int error;
@@ -668,17 +668,20 @@ int hibernate(void)
 
 
 /**
- *	software_resume - Resume from a saved image.
+ * software_resume - Resume from a saved hibernation image.
+ *
+ * This routine is called as a late initcall, when all devices have been
+ * discovered and initialized already.
  *
- *	Called as a late_initcall (so all devices are discovered and
- *	initialized), we call swsusp to see if we have a saved image or not.
- *	If so, we quiesce devices, the restore the saved image. We will
- *	return above (in hibernate() ) if everything goes well.
- *	Otherwise, we fail gracefully and return to the normally
- *	scheduled program.
+ * The image reading code is called to see if there is a hibernation image
+ * available for reading.  If that is the case, devices are quiesced and the
+ * contents of memory is restored from the saved image.
  *
+ * If this is successful, control reappears in the restored target kernel in
+ * hibernation_snaphot() which returns to hibernate().  Otherwise, the routine
+ * attempts to recover gracefully and make the kernel return to the normal mode
+ * of operation.
  */
-
 static int software_resume(void)
 {
 	int error;
@@ -808,21 +811,17 @@ static const char * const hibernation_mo
 	[HIBERNATION_TESTPROC]	= "testproc",
 };
 
-/**
- *	disk - Control hibernation mode
+/*
+ * /sys/power/disk - Control hibernation mode.
  *
- *	Suspend-to-disk can be handled in several ways. We have a few options
- *	for putting the system to sleep - using the platform driver (e.g. ACPI
- *	or other hibernation_ops), powering off the system or rebooting the
- *	system (for testing) as well as the two test modes.
- *
- *	The system can support 'platform', and that is known a priori (and
- *	encoded by the presence of hibernation_ops). However, the user may
- *	choose 'shutdown' or 'reboot' as alternatives, as well as one fo the
- *	test modes, 'test' or 'testproc'.
+ * Hibernation can be handled in several ways.  There are a few different ways
+ * to put the system into the sleep state: using the platform driver (e.g. ACPI
+ * or other hibernation_ops), powering it off or rebooting it (for testing
+ * mostly), or using one of the two available test modes.
  *
- *	show() will display what the mode is currently set to.
- *	store() will accept one of
+ * The sysfs file /sys/power/disk provides an interface for selecting the
+ * hibernation mode to use.  Reading from this file causes the available modes
+ * to be printed.  There are 5 modes that can be supported:
  *
  *	'platform'
  *	'shutdown'
@@ -830,8 +829,14 @@ static const char * const hibernation_mo
  *	'test'
  *	'testproc'
  *
- *	It will only change to 'platform' if the system
- *	supports it (as determined by having hibernation_ops).
+ * If a platform hibernation driver is in use, 'platform' will be supported
+ * and will be used by default.  Otherwise, 'shutdown' will be used by default.
+ * The selected option (i.e. the one corresponding to the current value of
+ * hibernation_mode) is enclosed by a square bracket.
+ *
+ * To select a given hibernation mode it is necessary to write the mode's
+ * string representation (as returned by reading from /sys/power/disk) back
+ * into /sys/power/disk.
  */
 
 static ssize_t disk_show(struct kobject *kobj, struct kobj_attribute *attr,
@@ -864,7 +869,6 @@ static ssize_t disk_show(struct kobject
 	return buf-start;
 }
 
-
 static ssize_t disk_store(struct kobject *kobj, struct kobj_attribute *attr,
 			  const char *buf, size_t n)
 {


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH 3/3] PM / Hibernate: Update kerneldoc comments in hibernate.c
  2011-05-21 12:08 ` Rafael J. Wysocki
                   ` (5 preceding siblings ...)
  (?)
@ 2011-05-21 12:12 ` Rafael J. Wysocki
  -1 siblings, 0 replies; 29+ messages in thread
From: Rafael J. Wysocki @ 2011-05-21 12:12 UTC (permalink / raw)
  To: Linux PM mailing list
  Cc: Randy Dunlap, linux-sh, LKML, Ralf Baechle, Frank Hofmann

From: Rafael J. Wysocki <rjw@sisk.pl>

Some of the kerneldoc comments in kernel/power/hibernate.c are
outdated and some of them don't adhere to the kernel's standards.
Update them and make them look in a consistent way.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 kernel/power/hibernate.c |  184 ++++++++++++++++++++++++-----------------------
 1 file changed, 94 insertions(+), 90 deletions(-)

Index: linux-2.6/kernel/power/hibernate.c
===================================================================
--- linux-2.6.orig/kernel/power/hibernate.c
+++ linux-2.6/kernel/power/hibernate.c
@@ -55,10 +55,9 @@ static int hibernation_mode = HIBERNATIO
 static const struct platform_hibernation_ops *hibernation_ops;
 
 /**
- * hibernation_set_ops - set the global hibernate operations
- * @ops: the hibernation operations to use in subsequent hibernation transitions
+ * hibernation_set_ops - Set the global hibernate operations.
+ * @ops: Hibernation operations to use in subsequent hibernation transitions.
  */
-
 void hibernation_set_ops(const struct platform_hibernation_ops *ops)
 {
 	if (ops && !(ops->begin && ops->end &&  ops->pre_snapshot
@@ -115,10 +114,8 @@ static int hibernation_test(int level) {
 #endif /* !CONFIG_PM_DEBUG */
 
 /**
- *	platform_begin - tell the platform driver that we're starting
- *	hibernation
+ * platform_begin - Use platform driver to start hibernation.
  */
-
 static int platform_begin(int platform_mode)
 {
 	return (platform_mode && hibernation_ops) ?
@@ -126,10 +123,8 @@ static int platform_begin(int platform_m
 }
 
 /**
- *	platform_end - tell the platform driver that we've entered the
- *	working state
+ * platform_end - Use platform driver to finish transition to the working state.
  */
-
 static void platform_end(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -137,8 +132,10 @@ static void platform_end(int platform_mo
 }
 
 /**
- *	platform_pre_snapshot - prepare the machine for hibernation using the
- *	platform driver if so configured and return an error code if it fails
+ * platform_pre_snapshot - Call platform to prepare the machine for hibernation.
+ *
+ * Use the platform driver to prepare the system for creating a hibernate image,
+ * if so configured, and return an error code if that fails.
  */
 
 static int platform_pre_snapshot(int platform_mode)
@@ -148,10 +145,13 @@ static int platform_pre_snapshot(int pla
 }
 
 /**
- *	platform_leave - prepare the machine for switching to the normal mode
- *	of operation using the platform driver (called with interrupts disabled)
+ * platform_leave - Use platform to prepare a transition to the working state.
+ *
+ * Use the platform driver prepare to prepare the machine for switching to the
+ * normal mode of operation.
+ *
+ * This routine is called on one CPU with interrupts disabled.
  */
-
 static void platform_leave(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -159,10 +159,13 @@ static void platform_leave(int platform_
 }
 
 /**
- *	platform_finish - switch the machine to the normal mode of operation
- *	using the platform driver (must be called after platform_prepare())
+ * platform_finish - Use platform to switch the system to the working state.
+ *
+ * Use the platform driver to switch the machine to the normal mode of
+ * operation.
+ *
+ * This routine must be called after platform_prepare().
  */
-
 static void platform_finish(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -170,11 +173,14 @@ static void platform_finish(int platform
 }
 
 /**
- *	platform_pre_restore - prepare the platform for the restoration from a
- *	hibernation image.  If the restore fails after this function has been
- *	called, platform_restore_cleanup() must be called.
+ * platform_pre_restore - Prepare for hibernate image restoration.
+ *
+ * Use the platform driver to prepare the system for resume from a hibernation
+ * image.
+ *
+ * If the restore fails after this function has been called,
+ * platform_restore_cleanup() must be called.
  */
-
 static int platform_pre_restore(int platform_mode)
 {
 	return (platform_mode && hibernation_ops) ?
@@ -182,12 +188,15 @@ static int platform_pre_restore(int plat
 }
 
 /**
- *	platform_restore_cleanup - switch the platform to the normal mode of
- *	operation after a failing restore.  If platform_pre_restore() has been
- *	called before the failing restore, this function must be called too,
- *	regardless of the result of platform_pre_restore().
+ * platform_restore_cleanup - Switch to the working state after failing restore.
+ *
+ * Use the platform driver to switch the system to the normal mode of operation
+ * after a failing restore.
+ *
+ * If platform_pre_restore() has been called before the failing restore, this
+ * function must be called too, regardless of the result of
+ * platform_pre_restore().
  */
-
 static void platform_restore_cleanup(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -195,10 +204,8 @@ static void platform_restore_cleanup(int
 }
 
 /**
- *	platform_recover - recover the platform from a failure to suspend
- *	devices.
+ * platform_recover - Recover the platform from a failure to suspend devices.
  */
-
 static void platform_recover(int platform_mode)
 {
 	if (platform_mode && hibernation_ops && hibernation_ops->recover)
@@ -206,13 +213,12 @@ static void platform_recover(int platfor
 }
 
 /**
- *	swsusp_show_speed - print the time elapsed between two events.
- *	@start: Starting event.
- *	@stop: Final event.
- *	@nr_pages -	number of pages processed between @start and @stop
- *	@msg -		introductory message to print
+ * swsusp_show_speed - Print time elapsed between two events during hibernation.
+ * @start: Starting event.
+ * @stop: Final event.
+ * @nr_pages: Number of memory pages processed between @start and @stop.
+ * @msg: Additional diagnostic message to print.
  */
-
 void swsusp_show_speed(struct timeval *start, struct timeval *stop,
 			unsigned nr_pages, char *msg)
 {
@@ -235,11 +241,13 @@ void swsusp_show_speed(struct timeval *s
 }
 
 /**
- *	create_image - freeze devices that need to be frozen with interrupts
- *	off, create the hibernation image and thaw those devices.  Control
- *	reappears in this routine after a restore.
+ * create_image - Create a hibernation image.
+ *
+ * Execute device drivers' .freeze_noirq() callbacks, create a hibernation image
+ * and execute the drivers' .thaw_noirq() callbacks.
+ *
+ * Control reappears in this routine after the subsequent restore.
  */
-
 static int create_image(int platform_mode)
 {
 	int error;
@@ -304,14 +312,11 @@ static int create_image(int platform_mod
 }
 
 /**
- *	hibernation_snapshot - quiesce devices and create the hibernation
- *	snapshot image.
- *	@platform_mode - if set, use the platform driver, if available, to
- *			 prepare the platform firmware for the power transition.
+ * hibernation_snapshot - Quiesce devices and create a hibernation image.
+ * @platform_mode: If set, use platform driver to prepare for the transition.
  *
- *	Must be called with pm_mutex held
+ * This routine must be called with pm_mutex held.
  */
-
 int hibernation_snapshot(int platform_mode)
 {
 	pm_message_t msg = PMSG_RECOVER;
@@ -371,13 +376,13 @@ 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.
+ * resume_target_kernel - Restore system state from a hibernation image.
+ *
+ * Execute device drivers' .freeze_noirq() callbacks, 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(bool platform_mode)
 {
 	int error;
@@ -445,14 +450,12 @@ static int resume_target_kernel(bool pla
 }
 
 /**
- *	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
- *			 prepare the platform firmware for the transition.
+ * hibernation_restore - Quiesce devices and restore from a hibernation image.
+ * @platform_mode: If set, use platform driver to prepare for the transition.
  *
- *	Must be called with pm_mutex held
+ * This routine must be called with pm_mutex held.  If it is successful, control
+ * reappears in the restored target kernel in hibernation_snaphot().
  */
-
 int hibernation_restore(int platform_mode)
 {
 	int error;
@@ -472,10 +475,8 @@ int hibernation_restore(int platform_mod
 }
 
 /**
- *	hibernation_platform_enter - enter the hibernation state using the
- *	platform driver (if available)
+ * hibernation_platform_enter - Power off the system using the platform driver.
  */
-
 int hibernation_platform_enter(void)
 {
 	int error;
@@ -546,12 +547,12 @@ int hibernation_platform_enter(void)
 }
 
 /**
- *	power_down - Shut the machine down for hibernation.
+ * power_down - Shut the machine down for hibernation.
  *
- *	Use the platform driver, if configured so; otherwise try
- *	to power off or reboot.
+ * Use the platform driver, if configured, to put the system into the sleep
+ * state corresponding to hibernation, or try to power it off or reboot,
+ * depending on the value of hibernation_mode.
  */
-
 static void power_down(void)
 {
 	switch (hibernation_mode) {
@@ -588,9 +589,8 @@ static int prepare_processes(void)
 }
 
 /**
- *	hibernate - The granpappy of the built-in hibernation management
+ * hibernate - Carry out system hibernation, including saving the image.
  */
-
 int hibernate(void)
 {
 	int error;
@@ -668,17 +668,20 @@ int hibernate(void)
 
 
 /**
- *	software_resume - Resume from a saved image.
+ * software_resume - Resume from a saved hibernation image.
+ *
+ * This routine is called as a late initcall, when all devices have been
+ * discovered and initialized already.
  *
- *	Called as a late_initcall (so all devices are discovered and
- *	initialized), we call swsusp to see if we have a saved image or not.
- *	If so, we quiesce devices, the restore the saved image. We will
- *	return above (in hibernate() ) if everything goes well.
- *	Otherwise, we fail gracefully and return to the normally
- *	scheduled program.
+ * The image reading code is called to see if there is a hibernation image
+ * available for reading.  If that is the case, devices are quiesced and the
+ * contents of memory is restored from the saved image.
  *
+ * If this is successful, control reappears in the restored target kernel in
+ * hibernation_snaphot() which returns to hibernate().  Otherwise, the routine
+ * attempts to recover gracefully and make the kernel return to the normal mode
+ * of operation.
  */
-
 static int software_resume(void)
 {
 	int error;
@@ -808,21 +811,17 @@ static const char * const hibernation_mo
 	[HIBERNATION_TESTPROC]	= "testproc",
 };
 
-/**
- *	disk - Control hibernation mode
+/*
+ * /sys/power/disk - Control hibernation mode.
  *
- *	Suspend-to-disk can be handled in several ways. We have a few options
- *	for putting the system to sleep - using the platform driver (e.g. ACPI
- *	or other hibernation_ops), powering off the system or rebooting the
- *	system (for testing) as well as the two test modes.
- *
- *	The system can support 'platform', and that is known a priori (and
- *	encoded by the presence of hibernation_ops). However, the user may
- *	choose 'shutdown' or 'reboot' as alternatives, as well as one fo the
- *	test modes, 'test' or 'testproc'.
+ * Hibernation can be handled in several ways.  There are a few different ways
+ * to put the system into the sleep state: using the platform driver (e.g. ACPI
+ * or other hibernation_ops), powering it off or rebooting it (for testing
+ * mostly), or using one of the two available test modes.
  *
- *	show() will display what the mode is currently set to.
- *	store() will accept one of
+ * The sysfs file /sys/power/disk provides an interface for selecting the
+ * hibernation mode to use.  Reading from this file causes the available modes
+ * to be printed.  There are 5 modes that can be supported:
  *
  *	'platform'
  *	'shutdown'
@@ -830,8 +829,14 @@ static const char * const hibernation_mo
  *	'test'
  *	'testproc'
  *
- *	It will only change to 'platform' if the system
- *	supports it (as determined by having hibernation_ops).
+ * If a platform hibernation driver is in use, 'platform' will be supported
+ * and will be used by default.  Otherwise, 'shutdown' will be used by default.
+ * The selected option (i.e. the one corresponding to the current value of
+ * hibernation_mode) is enclosed by a square bracket.
+ *
+ * To select a given hibernation mode it is necessary to write the mode's
+ * string representation (as returned by reading from /sys/power/disk) back
+ * into /sys/power/disk.
  */
 
 static ssize_t disk_show(struct kobject *kobj, struct kobj_attribute *attr,
@@ -864,7 +869,6 @@ static ssize_t disk_show(struct kobject
 	return buf-start;
 }
 
-
 static ssize_t disk_store(struct kobject *kobj, struct kobj_attribute *attr,
 			  const char *buf, size_t n)
 {

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 3/3] PM / Hibernate: Update kerneldoc comments in hibernate.c
  2011-05-21 12:12   ` Rafael J. Wysocki
@ 2011-05-23  3:08     ` Randy Dunlap
  -1 siblings, 0 replies; 29+ messages in thread
From: Randy Dunlap @ 2011-05-23  3:08 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Linux PM mailing list, Frank Hofmann, LKML, linux-sh,
	Ralf Baechle, Benjamin Herrenschmidt

On 05/21/11 05:12, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rjw@sisk.pl>
> 
> Some of the kerneldoc comments in kernel/power/hibernate.c are
> outdated and some of them don't adhere to the kernel's standards.
> Update them and make them look in a consistent way.

Hi Rafael,

Several of the functions are missing function parameter notations, as
noted below.

> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
> ---
>  kernel/power/hibernate.c |  184 ++++++++++++++++++++++++-----------------------
>  1 file changed, 94 insertions(+), 90 deletions(-)
> 
> Index: linux-2.6/kernel/power/hibernate.c
> =================================> --- linux-2.6.orig/kernel/power/hibernate.c
> +++ linux-2.6/kernel/power/hibernate.c
> @@ -55,10 +55,9 @@ static int hibernation_mode = HIBERNATIO
>  static const struct platform_hibernation_ops *hibernation_ops;
>  
>  /**
> - * hibernation_set_ops - set the global hibernate operations
> - * @ops: the hibernation operations to use in subsequent hibernation transitions
> + * hibernation_set_ops - Set the global hibernate operations.
> + * @ops: Hibernation operations to use in subsequent hibernation transitions.
>   */
> -
>  void hibernation_set_ops(const struct platform_hibernation_ops *ops)
>  {
>  	if (ops && !(ops->begin && ops->end &&  ops->pre_snapshot
> @@ -115,10 +114,8 @@ static int hibernation_test(int level) {
>  #endif /* !CONFIG_PM_DEBUG */
>  
>  /**
> - *	platform_begin - tell the platform driver that we're starting
> - *	hibernation
> + * platform_begin - Use platform driver to start hibernation.

 * @platform_mode: <description>

>   */
> -
>  static int platform_begin(int platform_mode)
>  {
>  	return (platform_mode && hibernation_ops) ?
> @@ -126,10 +123,8 @@ static int platform_begin(int platform_m
>  }
>  
>  /**
> - *	platform_end - tell the platform driver that we've entered the
> - *	working state
> + * platform_end - Use platform driver to finish transition to the working state.

 * @platform_mode: <description>

>   */
> -
>  static void platform_end(int platform_mode)
>  {
>  	if (platform_mode && hibernation_ops)
> @@ -137,8 +132,10 @@ static void platform_end(int platform_mo
>  }
>  
>  /**
> - *	platform_pre_snapshot - prepare the machine for hibernation using the
> - *	platform driver if so configured and return an error code if it fails
> + * platform_pre_snapshot - Call platform to prepare the machine for hibernation.

 * @platform_mode: <description>

> + *
> + * Use the platform driver to prepare the system for creating a hibernate image,
> + * if so configured, and return an error code if that fails.
>   */
>  
>  static int platform_pre_snapshot(int platform_mode)
> @@ -148,10 +145,13 @@ static int platform_pre_snapshot(int pla
>  }
>  
>  /**
> - *	platform_leave - prepare the machine for switching to the normal mode
> - *	of operation using the platform driver (called with interrupts disabled)
> + * platform_leave - Use platform to prepare a transition to the working state.

 * @platform_mode: <description>

> + *
> + * Use the platform driver prepare to prepare the machine for switching to the
> + * normal mode of operation.
> + *
> + * This routine is called on one CPU with interrupts disabled.
>   */
> -
>  static void platform_leave(int platform_mode)
>  {
>  	if (platform_mode && hibernation_ops)
> @@ -159,10 +159,13 @@ static void platform_leave(int platform_
>  }
>  
>  /**
> - *	platform_finish - switch the machine to the normal mode of operation
> - *	using the platform driver (must be called after platform_prepare())
> + * platform_finish - Use platform to switch the system to the working state.

 * @platform_mode: <description>

> + *
> + * Use the platform driver to switch the machine to the normal mode of
> + * operation.
> + *
> + * This routine must be called after platform_prepare().
>   */
> -
>  static void platform_finish(int platform_mode)
>  {
>  	if (platform_mode && hibernation_ops)
> @@ -170,11 +173,14 @@ static void platform_finish(int platform
>  }
>  
>  /**
> - *	platform_pre_restore - prepare the platform for the restoration from a
> - *	hibernation image.  If the restore fails after this function has been
> - *	called, platform_restore_cleanup() must be called.
> + * platform_pre_restore - Prepare for hibernate image restoration.

 * @platform_mode: <description>

> + *
> + * Use the platform driver to prepare the system for resume from a hibernation
> + * image.
> + *
> + * If the restore fails after this function has been called,
> + * platform_restore_cleanup() must be called.
>   */
> -
>  static int platform_pre_restore(int platform_mode)
>  {
>  	return (platform_mode && hibernation_ops) ?
> @@ -182,12 +188,15 @@ static int platform_pre_restore(int plat
>  }
>  
>  /**
> - *	platform_restore_cleanup - switch the platform to the normal mode of
> - *	operation after a failing restore.  If platform_pre_restore() has been
> - *	called before the failing restore, this function must be called too,
> - *	regardless of the result of platform_pre_restore().
> + * platform_restore_cleanup - Switch to the working state after failing restore.

 * @platform_mode: <description>

> + *
> + * Use the platform driver to switch the system to the normal mode of operation
> + * after a failing restore.
> + *
> + * If platform_pre_restore() has been called before the failing restore, this
> + * function must be called too, regardless of the result of
> + * platform_pre_restore().
>   */
> -
>  static void platform_restore_cleanup(int platform_mode)
>  {
>  	if (platform_mode && hibernation_ops)
> @@ -195,10 +204,8 @@ static void platform_restore_cleanup(int
>  }
>  
>  /**
> - *	platform_recover - recover the platform from a failure to suspend
> - *	devices.
> + * platform_recover - Recover the platform from a failure to suspend devices.

 * @platform_mode: <description>

>   */
> -
>  static void platform_recover(int platform_mode)
>  {
>  	if (platform_mode && hibernation_ops && hibernation_ops->recover)
> @@ -206,13 +213,12 @@ static void platform_recover(int platfor
>  }
>  
>  /**
> - *	swsusp_show_speed - print the time elapsed between two events.
> - *	@start: Starting event.
> - *	@stop: Final event.
> - *	@nr_pages -	number of pages processed between @start and @stop
> - *	@msg -		introductory message to print
> + * swsusp_show_speed - Print time elapsed between two events during hibernation.
> + * @start: Starting event.
> + * @stop: Final event.
> + * @nr_pages: Number of memory pages processed between @start and @stop.
> + * @msg: Additional diagnostic message to print.
>   */
> -
>  void swsusp_show_speed(struct timeval *start, struct timeval *stop,
>  			unsigned nr_pages, char *msg)
>  {
> @@ -235,11 +241,13 @@ void swsusp_show_speed(struct timeval *s
>  }
>  
>  /**
> - *	create_image - freeze devices that need to be frozen with interrupts
> - *	off, create the hibernation image and thaw those devices.  Control
> - *	reappears in this routine after a restore.
> + * create_image - Create a hibernation image.

 * @platform_mode: <description>

> + *
> + * Execute device drivers' .freeze_noirq() callbacks, create a hibernation image
> + * and execute the drivers' .thaw_noirq() callbacks.
> + *
> + * Control reappears in this routine after the subsequent restore.
>   */
> -
>  static int create_image(int platform_mode)
>  {
>  	int error;
> @@ -304,14 +312,11 @@ static int create_image(int platform_mod
>  }
>  
>  /**
> - *	hibernation_snapshot - quiesce devices and create the hibernation
> - *	snapshot image.
> - *	@platform_mode - if set, use the platform driver, if available, to
> - *			 prepare the platform firmware for the power transition.
> + * hibernation_snapshot - Quiesce devices and create a hibernation image.
> + * @platform_mode: If set, use platform driver to prepare for the transition.
>   *
> - *	Must be called with pm_mutex held
> + * This routine must be called with pm_mutex held.
>   */
> -
>  int hibernation_snapshot(int platform_mode)
>  {
>  	pm_message_t msg = PMSG_RECOVER;
> @@ -371,13 +376,13 @@ 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.
> + * resume_target_kernel - Restore system state from a hibernation image.

 * @platform_mode: <description>

> + *
> + * Execute device drivers' .freeze_noirq() callbacks, 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(bool platform_mode)
>  {
>  	int error;
> @@ -445,14 +450,12 @@ static int resume_target_kernel(bool pla
>  }
>  
>  /**
> - *	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
> - *			 prepare the platform firmware for the transition.
> + * hibernation_restore - Quiesce devices and restore from a hibernation image.
> + * @platform_mode: If set, use platform driver to prepare for the transition.
>   *
> - *	Must be called with pm_mutex held
> + * This routine must be called with pm_mutex held.  If it is successful, control
> + * reappears in the restored target kernel in hibernation_snaphot().
>   */
> -
>  int hibernation_restore(int platform_mode)
>  {
>  	int error;
> @@ -472,10 +475,8 @@ int hibernation_restore(int platform_mod
>  }
>  
>  /**
> - *	hibernation_platform_enter - enter the hibernation state using the
> - *	platform driver (if available)
> + * hibernation_platform_enter - Power off the system using the platform driver.
>   */
> -
>  int hibernation_platform_enter(void)
>  {
>  	int error;
> @@ -546,12 +547,12 @@ int hibernation_platform_enter(void)
>  }
>  
>  /**
> - *	power_down - Shut the machine down for hibernation.
> + * power_down - Shut the machine down for hibernation.
>   *
> - *	Use the platform driver, if configured so; otherwise try
> - *	to power off or reboot.
> + * Use the platform driver, if configured, to put the system into the sleep
> + * state corresponding to hibernation, or try to power it off or reboot,
> + * depending on the value of hibernation_mode.
>   */
> -
>  static void power_down(void)
>  {
>  	switch (hibernation_mode) {
> @@ -588,9 +589,8 @@ static int prepare_processes(void)
>  }
>  
>  /**
> - *	hibernate - The granpappy of the built-in hibernation management
> + * hibernate - Carry out system hibernation, including saving the image.
>   */
> -
>  int hibernate(void)
>  {
>  	int error;
> @@ -668,17 +668,20 @@ int hibernate(void)
>  
>  
>  /**
> - *	software_resume - Resume from a saved image.
> + * software_resume - Resume from a saved hibernation image.
> + *
> + * This routine is called as a late initcall, when all devices have been
> + * discovered and initialized already.
>   *
> - *	Called as a late_initcall (so all devices are discovered and
> - *	initialized), we call swsusp to see if we have a saved image or not.
> - *	If so, we quiesce devices, the restore the saved image. We will
> - *	return above (in hibernate() ) if everything goes well.
> - *	Otherwise, we fail gracefully and return to the normally
> - *	scheduled program.
> + * The image reading code is called to see if there is a hibernation image
> + * available for reading.  If that is the case, devices are quiesced and the
> + * contents of memory is restored from the saved image.
>   *
> + * If this is successful, control reappears in the restored target kernel in
> + * hibernation_snaphot() which returns to hibernate().  Otherwise, the routine
> + * attempts to recover gracefully and make the kernel return to the normal mode
> + * of operation.
>   */
> -
>  static int software_resume(void)
>  {
>  	int error;
> @@ -808,21 +811,17 @@ static const char * const hibernation_mo
>  	[HIBERNATION_TESTPROC]	= "testproc",
>  };
>  
> -/**
> - *	disk - Control hibernation mode
> +/*
> + * /sys/power/disk - Control hibernation mode.
>   *
> - *	Suspend-to-disk can be handled in several ways. We have a few options
> - *	for putting the system to sleep - using the platform driver (e.g. ACPI
> - *	or other hibernation_ops), powering off the system or rebooting the
> - *	system (for testing) as well as the two test modes.
> - *
> - *	The system can support 'platform', and that is known a priori (and
> - *	encoded by the presence of hibernation_ops). However, the user may
> - *	choose 'shutdown' or 'reboot' as alternatives, as well as one fo the
> - *	test modes, 'test' or 'testproc'.
> + * Hibernation can be handled in several ways.  There are a few different ways
> + * to put the system into the sleep state: using the platform driver (e.g. ACPI
> + * or other hibernation_ops), powering it off or rebooting it (for testing
> + * mostly), or using one of the two available test modes.
>   *
> - *	show() will display what the mode is currently set to.
> - *	store() will accept one of
> + * The sysfs file /sys/power/disk provides an interface for selecting the
> + * hibernation mode to use.  Reading from this file causes the available modes
> + * to be printed.  There are 5 modes that can be supported:
>   *
>   *	'platform'
>   *	'shutdown'
> @@ -830,8 +829,14 @@ static const char * const hibernation_mo
>   *	'test'
>   *	'testproc'
>   *
> - *	It will only change to 'platform' if the system
> - *	supports it (as determined by having hibernation_ops).
> + * If a platform hibernation driver is in use, 'platform' will be supported
> + * and will be used by default.  Otherwise, 'shutdown' will be used by default.
> + * The selected option (i.e. the one corresponding to the current value of
> + * hibernation_mode) is enclosed by a square bracket.
> + *
> + * To select a given hibernation mode it is necessary to write the mode's
> + * string representation (as returned by reading from /sys/power/disk) back
> + * into /sys/power/disk.
>   */
>  
>  static ssize_t disk_show(struct kobject *kobj, struct kobj_attribute *attr,
> @@ -864,7 +869,6 @@ static ssize_t disk_show(struct kobject
>  	return buf-start;
>  }
>  
> -
>  static ssize_t disk_store(struct kobject *kobj, struct kobj_attribute *attr,
>  			  const char *buf, size_t n)
>  {
> 


Thanks.

-- 
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 3/3] PM / Hibernate: Update kerneldoc comments in hibernate.c
@ 2011-05-23  3:08     ` Randy Dunlap
  0 siblings, 0 replies; 29+ messages in thread
From: Randy Dunlap @ 2011-05-23  3:08 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Linux PM mailing list, Frank Hofmann, LKML, linux-sh,
	Ralf Baechle, Benjamin Herrenschmidt

On 05/21/11 05:12, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rjw@sisk.pl>
> 
> Some of the kerneldoc comments in kernel/power/hibernate.c are
> outdated and some of them don't adhere to the kernel's standards.
> Update them and make them look in a consistent way.

Hi Rafael,

Several of the functions are missing function parameter notations, as
noted below.

> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
> ---
>  kernel/power/hibernate.c |  184 ++++++++++++++++++++++++-----------------------
>  1 file changed, 94 insertions(+), 90 deletions(-)
> 
> Index: linux-2.6/kernel/power/hibernate.c
> ===================================================================
> --- linux-2.6.orig/kernel/power/hibernate.c
> +++ linux-2.6/kernel/power/hibernate.c
> @@ -55,10 +55,9 @@ static int hibernation_mode = HIBERNATIO
>  static const struct platform_hibernation_ops *hibernation_ops;
>  
>  /**
> - * hibernation_set_ops - set the global hibernate operations
> - * @ops: the hibernation operations to use in subsequent hibernation transitions
> + * hibernation_set_ops - Set the global hibernate operations.
> + * @ops: Hibernation operations to use in subsequent hibernation transitions.
>   */
> -
>  void hibernation_set_ops(const struct platform_hibernation_ops *ops)
>  {
>  	if (ops && !(ops->begin && ops->end &&  ops->pre_snapshot
> @@ -115,10 +114,8 @@ static int hibernation_test(int level) {
>  #endif /* !CONFIG_PM_DEBUG */
>  
>  /**
> - *	platform_begin - tell the platform driver that we're starting
> - *	hibernation
> + * platform_begin - Use platform driver to start hibernation.

 * @platform_mode: <description>

>   */
> -
>  static int platform_begin(int platform_mode)
>  {
>  	return (platform_mode && hibernation_ops) ?
> @@ -126,10 +123,8 @@ static int platform_begin(int platform_m
>  }
>  
>  /**
> - *	platform_end - tell the platform driver that we've entered the
> - *	working state
> + * platform_end - Use platform driver to finish transition to the working state.

 * @platform_mode: <description>

>   */
> -
>  static void platform_end(int platform_mode)
>  {
>  	if (platform_mode && hibernation_ops)
> @@ -137,8 +132,10 @@ static void platform_end(int platform_mo
>  }
>  
>  /**
> - *	platform_pre_snapshot - prepare the machine for hibernation using the
> - *	platform driver if so configured and return an error code if it fails
> + * platform_pre_snapshot - Call platform to prepare the machine for hibernation.

 * @platform_mode: <description>

> + *
> + * Use the platform driver to prepare the system for creating a hibernate image,
> + * if so configured, and return an error code if that fails.
>   */
>  
>  static int platform_pre_snapshot(int platform_mode)
> @@ -148,10 +145,13 @@ static int platform_pre_snapshot(int pla
>  }
>  
>  /**
> - *	platform_leave - prepare the machine for switching to the normal mode
> - *	of operation using the platform driver (called with interrupts disabled)
> + * platform_leave - Use platform to prepare a transition to the working state.

 * @platform_mode: <description>

> + *
> + * Use the platform driver prepare to prepare the machine for switching to the
> + * normal mode of operation.
> + *
> + * This routine is called on one CPU with interrupts disabled.
>   */
> -
>  static void platform_leave(int platform_mode)
>  {
>  	if (platform_mode && hibernation_ops)
> @@ -159,10 +159,13 @@ static void platform_leave(int platform_
>  }
>  
>  /**
> - *	platform_finish - switch the machine to the normal mode of operation
> - *	using the platform driver (must be called after platform_prepare())
> + * platform_finish - Use platform to switch the system to the working state.

 * @platform_mode: <description>

> + *
> + * Use the platform driver to switch the machine to the normal mode of
> + * operation.
> + *
> + * This routine must be called after platform_prepare().
>   */
> -
>  static void platform_finish(int platform_mode)
>  {
>  	if (platform_mode && hibernation_ops)
> @@ -170,11 +173,14 @@ static void platform_finish(int platform
>  }
>  
>  /**
> - *	platform_pre_restore - prepare the platform for the restoration from a
> - *	hibernation image.  If the restore fails after this function has been
> - *	called, platform_restore_cleanup() must be called.
> + * platform_pre_restore - Prepare for hibernate image restoration.

 * @platform_mode: <description>

> + *
> + * Use the platform driver to prepare the system for resume from a hibernation
> + * image.
> + *
> + * If the restore fails after this function has been called,
> + * platform_restore_cleanup() must be called.
>   */
> -
>  static int platform_pre_restore(int platform_mode)
>  {
>  	return (platform_mode && hibernation_ops) ?
> @@ -182,12 +188,15 @@ static int platform_pre_restore(int plat
>  }
>  
>  /**
> - *	platform_restore_cleanup - switch the platform to the normal mode of
> - *	operation after a failing restore.  If platform_pre_restore() has been
> - *	called before the failing restore, this function must be called too,
> - *	regardless of the result of platform_pre_restore().
> + * platform_restore_cleanup - Switch to the working state after failing restore.

 * @platform_mode: <description>

> + *
> + * Use the platform driver to switch the system to the normal mode of operation
> + * after a failing restore.
> + *
> + * If platform_pre_restore() has been called before the failing restore, this
> + * function must be called too, regardless of the result of
> + * platform_pre_restore().
>   */
> -
>  static void platform_restore_cleanup(int platform_mode)
>  {
>  	if (platform_mode && hibernation_ops)
> @@ -195,10 +204,8 @@ static void platform_restore_cleanup(int
>  }
>  
>  /**
> - *	platform_recover - recover the platform from a failure to suspend
> - *	devices.
> + * platform_recover - Recover the platform from a failure to suspend devices.

 * @platform_mode: <description>

>   */
> -
>  static void platform_recover(int platform_mode)
>  {
>  	if (platform_mode && hibernation_ops && hibernation_ops->recover)
> @@ -206,13 +213,12 @@ static void platform_recover(int platfor
>  }
>  
>  /**
> - *	swsusp_show_speed - print the time elapsed between two events.
> - *	@start: Starting event.
> - *	@stop: Final event.
> - *	@nr_pages -	number of pages processed between @start and @stop
> - *	@msg -		introductory message to print
> + * swsusp_show_speed - Print time elapsed between two events during hibernation.
> + * @start: Starting event.
> + * @stop: Final event.
> + * @nr_pages: Number of memory pages processed between @start and @stop.
> + * @msg: Additional diagnostic message to print.
>   */
> -
>  void swsusp_show_speed(struct timeval *start, struct timeval *stop,
>  			unsigned nr_pages, char *msg)
>  {
> @@ -235,11 +241,13 @@ void swsusp_show_speed(struct timeval *s
>  }
>  
>  /**
> - *	create_image - freeze devices that need to be frozen with interrupts
> - *	off, create the hibernation image and thaw those devices.  Control
> - *	reappears in this routine after a restore.
> + * create_image - Create a hibernation image.

 * @platform_mode: <description>

> + *
> + * Execute device drivers' .freeze_noirq() callbacks, create a hibernation image
> + * and execute the drivers' .thaw_noirq() callbacks.
> + *
> + * Control reappears in this routine after the subsequent restore.
>   */
> -
>  static int create_image(int platform_mode)
>  {
>  	int error;
> @@ -304,14 +312,11 @@ static int create_image(int platform_mod
>  }
>  
>  /**
> - *	hibernation_snapshot - quiesce devices and create the hibernation
> - *	snapshot image.
> - *	@platform_mode - if set, use the platform driver, if available, to
> - *			 prepare the platform firmware for the power transition.
> + * hibernation_snapshot - Quiesce devices and create a hibernation image.
> + * @platform_mode: If set, use platform driver to prepare for the transition.
>   *
> - *	Must be called with pm_mutex held
> + * This routine must be called with pm_mutex held.
>   */
> -
>  int hibernation_snapshot(int platform_mode)
>  {
>  	pm_message_t msg = PMSG_RECOVER;
> @@ -371,13 +376,13 @@ 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.
> + * resume_target_kernel - Restore system state from a hibernation image.

 * @platform_mode: <description>

> + *
> + * Execute device drivers' .freeze_noirq() callbacks, 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(bool platform_mode)
>  {
>  	int error;
> @@ -445,14 +450,12 @@ static int resume_target_kernel(bool pla
>  }
>  
>  /**
> - *	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
> - *			 prepare the platform firmware for the transition.
> + * hibernation_restore - Quiesce devices and restore from a hibernation image.
> + * @platform_mode: If set, use platform driver to prepare for the transition.
>   *
> - *	Must be called with pm_mutex held
> + * This routine must be called with pm_mutex held.  If it is successful, control
> + * reappears in the restored target kernel in hibernation_snaphot().
>   */
> -
>  int hibernation_restore(int platform_mode)
>  {
>  	int error;
> @@ -472,10 +475,8 @@ int hibernation_restore(int platform_mod
>  }
>  
>  /**
> - *	hibernation_platform_enter - enter the hibernation state using the
> - *	platform driver (if available)
> + * hibernation_platform_enter - Power off the system using the platform driver.
>   */
> -
>  int hibernation_platform_enter(void)
>  {
>  	int error;
> @@ -546,12 +547,12 @@ int hibernation_platform_enter(void)
>  }
>  
>  /**
> - *	power_down - Shut the machine down for hibernation.
> + * power_down - Shut the machine down for hibernation.
>   *
> - *	Use the platform driver, if configured so; otherwise try
> - *	to power off or reboot.
> + * Use the platform driver, if configured, to put the system into the sleep
> + * state corresponding to hibernation, or try to power it off or reboot,
> + * depending on the value of hibernation_mode.
>   */
> -
>  static void power_down(void)
>  {
>  	switch (hibernation_mode) {
> @@ -588,9 +589,8 @@ static int prepare_processes(void)
>  }
>  
>  /**
> - *	hibernate - The granpappy of the built-in hibernation management
> + * hibernate - Carry out system hibernation, including saving the image.
>   */
> -
>  int hibernate(void)
>  {
>  	int error;
> @@ -668,17 +668,20 @@ int hibernate(void)
>  
>  
>  /**
> - *	software_resume - Resume from a saved image.
> + * software_resume - Resume from a saved hibernation image.
> + *
> + * This routine is called as a late initcall, when all devices have been
> + * discovered and initialized already.
>   *
> - *	Called as a late_initcall (so all devices are discovered and
> - *	initialized), we call swsusp to see if we have a saved image or not.
> - *	If so, we quiesce devices, the restore the saved image. We will
> - *	return above (in hibernate() ) if everything goes well.
> - *	Otherwise, we fail gracefully and return to the normally
> - *	scheduled program.
> + * The image reading code is called to see if there is a hibernation image
> + * available for reading.  If that is the case, devices are quiesced and the
> + * contents of memory is restored from the saved image.
>   *
> + * If this is successful, control reappears in the restored target kernel in
> + * hibernation_snaphot() which returns to hibernate().  Otherwise, the routine
> + * attempts to recover gracefully and make the kernel return to the normal mode
> + * of operation.
>   */
> -
>  static int software_resume(void)
>  {
>  	int error;
> @@ -808,21 +811,17 @@ static const char * const hibernation_mo
>  	[HIBERNATION_TESTPROC]	= "testproc",
>  };
>  
> -/**
> - *	disk - Control hibernation mode
> +/*
> + * /sys/power/disk - Control hibernation mode.
>   *
> - *	Suspend-to-disk can be handled in several ways. We have a few options
> - *	for putting the system to sleep - using the platform driver (e.g. ACPI
> - *	or other hibernation_ops), powering off the system or rebooting the
> - *	system (for testing) as well as the two test modes.
> - *
> - *	The system can support 'platform', and that is known a priori (and
> - *	encoded by the presence of hibernation_ops). However, the user may
> - *	choose 'shutdown' or 'reboot' as alternatives, as well as one fo the
> - *	test modes, 'test' or 'testproc'.
> + * Hibernation can be handled in several ways.  There are a few different ways
> + * to put the system into the sleep state: using the platform driver (e.g. ACPI
> + * or other hibernation_ops), powering it off or rebooting it (for testing
> + * mostly), or using one of the two available test modes.
>   *
> - *	show() will display what the mode is currently set to.
> - *	store() will accept one of
> + * The sysfs file /sys/power/disk provides an interface for selecting the
> + * hibernation mode to use.  Reading from this file causes the available modes
> + * to be printed.  There are 5 modes that can be supported:
>   *
>   *	'platform'
>   *	'shutdown'
> @@ -830,8 +829,14 @@ static const char * const hibernation_mo
>   *	'test'
>   *	'testproc'
>   *
> - *	It will only change to 'platform' if the system
> - *	supports it (as determined by having hibernation_ops).
> + * If a platform hibernation driver is in use, 'platform' will be supported
> + * and will be used by default.  Otherwise, 'shutdown' will be used by default.
> + * The selected option (i.e. the one corresponding to the current value of
> + * hibernation_mode) is enclosed by a square bracket.
> + *
> + * To select a given hibernation mode it is necessary to write the mode's
> + * string representation (as returned by reading from /sys/power/disk) back
> + * into /sys/power/disk.
>   */
>  
>  static ssize_t disk_show(struct kobject *kobj, struct kobj_attribute *attr,
> @@ -864,7 +869,6 @@ static ssize_t disk_show(struct kobject
>  	return buf-start;
>  }
>  
> -
>  static ssize_t disk_store(struct kobject *kobj, struct kobj_attribute *attr,
>  			  const char *buf, size_t n)
>  {
> 


Thanks.

-- 
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 3/3] PM / Hibernate: Update kerneldoc comments in hibernate.c
  2011-05-21 12:12   ` Rafael J. Wysocki
  (?)
@ 2011-05-23  3:08   ` Randy Dunlap
  -1 siblings, 0 replies; 29+ messages in thread
From: Randy Dunlap @ 2011-05-23  3:08 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: linux-sh, LKML, Ralf Baechle, Frank Hofmann, Linux PM mailing list

On 05/21/11 05:12, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rjw@sisk.pl>
> 
> Some of the kerneldoc comments in kernel/power/hibernate.c are
> outdated and some of them don't adhere to the kernel's standards.
> Update them and make them look in a consistent way.

Hi Rafael,

Several of the functions are missing function parameter notations, as
noted below.

> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
> ---
>  kernel/power/hibernate.c |  184 ++++++++++++++++++++++++-----------------------
>  1 file changed, 94 insertions(+), 90 deletions(-)
> 
> Index: linux-2.6/kernel/power/hibernate.c
> ===================================================================
> --- linux-2.6.orig/kernel/power/hibernate.c
> +++ linux-2.6/kernel/power/hibernate.c
> @@ -55,10 +55,9 @@ static int hibernation_mode = HIBERNATIO
>  static const struct platform_hibernation_ops *hibernation_ops;
>  
>  /**
> - * hibernation_set_ops - set the global hibernate operations
> - * @ops: the hibernation operations to use in subsequent hibernation transitions
> + * hibernation_set_ops - Set the global hibernate operations.
> + * @ops: Hibernation operations to use in subsequent hibernation transitions.
>   */
> -
>  void hibernation_set_ops(const struct platform_hibernation_ops *ops)
>  {
>  	if (ops && !(ops->begin && ops->end &&  ops->pre_snapshot
> @@ -115,10 +114,8 @@ static int hibernation_test(int level) {
>  #endif /* !CONFIG_PM_DEBUG */
>  
>  /**
> - *	platform_begin - tell the platform driver that we're starting
> - *	hibernation
> + * platform_begin - Use platform driver to start hibernation.

 * @platform_mode: <description>

>   */
> -
>  static int platform_begin(int platform_mode)
>  {
>  	return (platform_mode && hibernation_ops) ?
> @@ -126,10 +123,8 @@ static int platform_begin(int platform_m
>  }
>  
>  /**
> - *	platform_end - tell the platform driver that we've entered the
> - *	working state
> + * platform_end - Use platform driver to finish transition to the working state.

 * @platform_mode: <description>

>   */
> -
>  static void platform_end(int platform_mode)
>  {
>  	if (platform_mode && hibernation_ops)
> @@ -137,8 +132,10 @@ static void platform_end(int platform_mo
>  }
>  
>  /**
> - *	platform_pre_snapshot - prepare the machine for hibernation using the
> - *	platform driver if so configured and return an error code if it fails
> + * platform_pre_snapshot - Call platform to prepare the machine for hibernation.

 * @platform_mode: <description>

> + *
> + * Use the platform driver to prepare the system for creating a hibernate image,
> + * if so configured, and return an error code if that fails.
>   */
>  
>  static int platform_pre_snapshot(int platform_mode)
> @@ -148,10 +145,13 @@ static int platform_pre_snapshot(int pla
>  }
>  
>  /**
> - *	platform_leave - prepare the machine for switching to the normal mode
> - *	of operation using the platform driver (called with interrupts disabled)
> + * platform_leave - Use platform to prepare a transition to the working state.

 * @platform_mode: <description>

> + *
> + * Use the platform driver prepare to prepare the machine for switching to the
> + * normal mode of operation.
> + *
> + * This routine is called on one CPU with interrupts disabled.
>   */
> -
>  static void platform_leave(int platform_mode)
>  {
>  	if (platform_mode && hibernation_ops)
> @@ -159,10 +159,13 @@ static void platform_leave(int platform_
>  }
>  
>  /**
> - *	platform_finish - switch the machine to the normal mode of operation
> - *	using the platform driver (must be called after platform_prepare())
> + * platform_finish - Use platform to switch the system to the working state.

 * @platform_mode: <description>

> + *
> + * Use the platform driver to switch the machine to the normal mode of
> + * operation.
> + *
> + * This routine must be called after platform_prepare().
>   */
> -
>  static void platform_finish(int platform_mode)
>  {
>  	if (platform_mode && hibernation_ops)
> @@ -170,11 +173,14 @@ static void platform_finish(int platform
>  }
>  
>  /**
> - *	platform_pre_restore - prepare the platform for the restoration from a
> - *	hibernation image.  If the restore fails after this function has been
> - *	called, platform_restore_cleanup() must be called.
> + * platform_pre_restore - Prepare for hibernate image restoration.

 * @platform_mode: <description>

> + *
> + * Use the platform driver to prepare the system for resume from a hibernation
> + * image.
> + *
> + * If the restore fails after this function has been called,
> + * platform_restore_cleanup() must be called.
>   */
> -
>  static int platform_pre_restore(int platform_mode)
>  {
>  	return (platform_mode && hibernation_ops) ?
> @@ -182,12 +188,15 @@ static int platform_pre_restore(int plat
>  }
>  
>  /**
> - *	platform_restore_cleanup - switch the platform to the normal mode of
> - *	operation after a failing restore.  If platform_pre_restore() has been
> - *	called before the failing restore, this function must be called too,
> - *	regardless of the result of platform_pre_restore().
> + * platform_restore_cleanup - Switch to the working state after failing restore.

 * @platform_mode: <description>

> + *
> + * Use the platform driver to switch the system to the normal mode of operation
> + * after a failing restore.
> + *
> + * If platform_pre_restore() has been called before the failing restore, this
> + * function must be called too, regardless of the result of
> + * platform_pre_restore().
>   */
> -
>  static void platform_restore_cleanup(int platform_mode)
>  {
>  	if (platform_mode && hibernation_ops)
> @@ -195,10 +204,8 @@ static void platform_restore_cleanup(int
>  }
>  
>  /**
> - *	platform_recover - recover the platform from a failure to suspend
> - *	devices.
> + * platform_recover - Recover the platform from a failure to suspend devices.

 * @platform_mode: <description>

>   */
> -
>  static void platform_recover(int platform_mode)
>  {
>  	if (platform_mode && hibernation_ops && hibernation_ops->recover)
> @@ -206,13 +213,12 @@ static void platform_recover(int platfor
>  }
>  
>  /**
> - *	swsusp_show_speed - print the time elapsed between two events.
> - *	@start: Starting event.
> - *	@stop: Final event.
> - *	@nr_pages -	number of pages processed between @start and @stop
> - *	@msg -		introductory message to print
> + * swsusp_show_speed - Print time elapsed between two events during hibernation.
> + * @start: Starting event.
> + * @stop: Final event.
> + * @nr_pages: Number of memory pages processed between @start and @stop.
> + * @msg: Additional diagnostic message to print.
>   */
> -
>  void swsusp_show_speed(struct timeval *start, struct timeval *stop,
>  			unsigned nr_pages, char *msg)
>  {
> @@ -235,11 +241,13 @@ void swsusp_show_speed(struct timeval *s
>  }
>  
>  /**
> - *	create_image - freeze devices that need to be frozen with interrupts
> - *	off, create the hibernation image and thaw those devices.  Control
> - *	reappears in this routine after a restore.
> + * create_image - Create a hibernation image.

 * @platform_mode: <description>

> + *
> + * Execute device drivers' .freeze_noirq() callbacks, create a hibernation image
> + * and execute the drivers' .thaw_noirq() callbacks.
> + *
> + * Control reappears in this routine after the subsequent restore.
>   */
> -
>  static int create_image(int platform_mode)
>  {
>  	int error;
> @@ -304,14 +312,11 @@ static int create_image(int platform_mod
>  }
>  
>  /**
> - *	hibernation_snapshot - quiesce devices and create the hibernation
> - *	snapshot image.
> - *	@platform_mode - if set, use the platform driver, if available, to
> - *			 prepare the platform firmware for the power transition.
> + * hibernation_snapshot - Quiesce devices and create a hibernation image.
> + * @platform_mode: If set, use platform driver to prepare for the transition.
>   *
> - *	Must be called with pm_mutex held
> + * This routine must be called with pm_mutex held.
>   */
> -
>  int hibernation_snapshot(int platform_mode)
>  {
>  	pm_message_t msg = PMSG_RECOVER;
> @@ -371,13 +376,13 @@ 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.
> + * resume_target_kernel - Restore system state from a hibernation image.

 * @platform_mode: <description>

> + *
> + * Execute device drivers' .freeze_noirq() callbacks, 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(bool platform_mode)
>  {
>  	int error;
> @@ -445,14 +450,12 @@ static int resume_target_kernel(bool pla
>  }
>  
>  /**
> - *	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
> - *			 prepare the platform firmware for the transition.
> + * hibernation_restore - Quiesce devices and restore from a hibernation image.
> + * @platform_mode: If set, use platform driver to prepare for the transition.
>   *
> - *	Must be called with pm_mutex held
> + * This routine must be called with pm_mutex held.  If it is successful, control
> + * reappears in the restored target kernel in hibernation_snaphot().
>   */
> -
>  int hibernation_restore(int platform_mode)
>  {
>  	int error;
> @@ -472,10 +475,8 @@ int hibernation_restore(int platform_mod
>  }
>  
>  /**
> - *	hibernation_platform_enter - enter the hibernation state using the
> - *	platform driver (if available)
> + * hibernation_platform_enter - Power off the system using the platform driver.
>   */
> -
>  int hibernation_platform_enter(void)
>  {
>  	int error;
> @@ -546,12 +547,12 @@ int hibernation_platform_enter(void)
>  }
>  
>  /**
> - *	power_down - Shut the machine down for hibernation.
> + * power_down - Shut the machine down for hibernation.
>   *
> - *	Use the platform driver, if configured so; otherwise try
> - *	to power off or reboot.
> + * Use the platform driver, if configured, to put the system into the sleep
> + * state corresponding to hibernation, or try to power it off or reboot,
> + * depending on the value of hibernation_mode.
>   */
> -
>  static void power_down(void)
>  {
>  	switch (hibernation_mode) {
> @@ -588,9 +589,8 @@ static int prepare_processes(void)
>  }
>  
>  /**
> - *	hibernate - The granpappy of the built-in hibernation management
> + * hibernate - Carry out system hibernation, including saving the image.
>   */
> -
>  int hibernate(void)
>  {
>  	int error;
> @@ -668,17 +668,20 @@ int hibernate(void)
>  
>  
>  /**
> - *	software_resume - Resume from a saved image.
> + * software_resume - Resume from a saved hibernation image.
> + *
> + * This routine is called as a late initcall, when all devices have been
> + * discovered and initialized already.
>   *
> - *	Called as a late_initcall (so all devices are discovered and
> - *	initialized), we call swsusp to see if we have a saved image or not.
> - *	If so, we quiesce devices, the restore the saved image. We will
> - *	return above (in hibernate() ) if everything goes well.
> - *	Otherwise, we fail gracefully and return to the normally
> - *	scheduled program.
> + * The image reading code is called to see if there is a hibernation image
> + * available for reading.  If that is the case, devices are quiesced and the
> + * contents of memory is restored from the saved image.
>   *
> + * If this is successful, control reappears in the restored target kernel in
> + * hibernation_snaphot() which returns to hibernate().  Otherwise, the routine
> + * attempts to recover gracefully and make the kernel return to the normal mode
> + * of operation.
>   */
> -
>  static int software_resume(void)
>  {
>  	int error;
> @@ -808,21 +811,17 @@ static const char * const hibernation_mo
>  	[HIBERNATION_TESTPROC]	= "testproc",
>  };
>  
> -/**
> - *	disk - Control hibernation mode
> +/*
> + * /sys/power/disk - Control hibernation mode.
>   *
> - *	Suspend-to-disk can be handled in several ways. We have a few options
> - *	for putting the system to sleep - using the platform driver (e.g. ACPI
> - *	or other hibernation_ops), powering off the system or rebooting the
> - *	system (for testing) as well as the two test modes.
> - *
> - *	The system can support 'platform', and that is known a priori (and
> - *	encoded by the presence of hibernation_ops). However, the user may
> - *	choose 'shutdown' or 'reboot' as alternatives, as well as one fo the
> - *	test modes, 'test' or 'testproc'.
> + * Hibernation can be handled in several ways.  There are a few different ways
> + * to put the system into the sleep state: using the platform driver (e.g. ACPI
> + * or other hibernation_ops), powering it off or rebooting it (for testing
> + * mostly), or using one of the two available test modes.
>   *
> - *	show() will display what the mode is currently set to.
> - *	store() will accept one of
> + * The sysfs file /sys/power/disk provides an interface for selecting the
> + * hibernation mode to use.  Reading from this file causes the available modes
> + * to be printed.  There are 5 modes that can be supported:
>   *
>   *	'platform'
>   *	'shutdown'
> @@ -830,8 +829,14 @@ static const char * const hibernation_mo
>   *	'test'
>   *	'testproc'
>   *
> - *	It will only change to 'platform' if the system
> - *	supports it (as determined by having hibernation_ops).
> + * If a platform hibernation driver is in use, 'platform' will be supported
> + * and will be used by default.  Otherwise, 'shutdown' will be used by default.
> + * The selected option (i.e. the one corresponding to the current value of
> + * hibernation_mode) is enclosed by a square bracket.
> + *
> + * To select a given hibernation mode it is necessary to write the mode's
> + * string representation (as returned by reading from /sys/power/disk) back
> + * into /sys/power/disk.
>   */
>  
>  static ssize_t disk_show(struct kobject *kobj, struct kobj_attribute *attr,
> @@ -864,7 +869,6 @@ static ssize_t disk_show(struct kobject
>  	return buf-start;
>  }
>  
> -
>  static ssize_t disk_store(struct kobject *kobj, struct kobj_attribute *attr,
>  			  const char *buf, size_t n)
>  {
> 


Thanks.

-- 
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 3/3] PM / Hibernate: Update kerneldoc comments in hibernate.c
  2011-05-23  3:08     ` Randy Dunlap
@ 2011-05-23 21:11       ` Rafael J. Wysocki
  -1 siblings, 0 replies; 29+ messages in thread
From: Rafael J. Wysocki @ 2011-05-23 21:11 UTC (permalink / raw)
  To: Randy Dunlap
  Cc: Linux PM mailing list, Frank Hofmann, LKML, linux-sh,
	Ralf Baechle, Benjamin Herrenschmidt

On Monday, May 23, 2011, Randy Dunlap wrote:
> On 05/21/11 05:12, Rafael J. Wysocki wrote:
> > From: Rafael J. Wysocki <rjw@sisk.pl>
> > 
> > Some of the kerneldoc comments in kernel/power/hibernate.c are
> > outdated and some of them don't adhere to the kernel's standards.
> > Update them and make them look in a consistent way.
> 
> Hi Rafael,

Hi,

> Several of the functions are missing function parameter notations, as
> noted below.

Ah, thanks!  Those should be fixed in the new version of the patch below.

Thanks,
Rafael


---
From: Rafael J. Wysocki <rjw@sisk.pl>
Subject: PM / Hibernate: Update kerneldoc comments in hibernate.c

Some of the kerneldoc comments in kernel/power/hibernate.c are
outdated and some of them don't adhere to the kernel's standards.
Update them and make them look in a consistent way.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 kernel/power/hibernate.c |  194 +++++++++++++++++++++++++----------------------
 1 file changed, 104 insertions(+), 90 deletions(-)

Index: linux-2.6/kernel/power/hibernate.c
=================================--- linux-2.6.orig/kernel/power/hibernate.c
+++ linux-2.6/kernel/power/hibernate.c
@@ -55,10 +55,9 @@ static int hibernation_mode = HIBERNATIO
 static const struct platform_hibernation_ops *hibernation_ops;
 
 /**
- * hibernation_set_ops - set the global hibernate operations
- * @ops: the hibernation operations to use in subsequent hibernation transitions
+ * hibernation_set_ops - Set the global hibernate operations.
+ * @ops: Hibernation operations to use in subsequent hibernation transitions.
  */
-
 void hibernation_set_ops(const struct platform_hibernation_ops *ops)
 {
 	if (ops && !(ops->begin && ops->end &&  ops->pre_snapshot
@@ -115,10 +114,9 @@ static int hibernation_test(int level) {
 #endif /* !CONFIG_PM_DEBUG */
 
 /**
- *	platform_begin - tell the platform driver that we're starting
- *	hibernation
+ * platform_begin - Call platform to start hibernation.
+ * @platform_mode: Whether or not to use the platform driver.
  */
-
 static int platform_begin(int platform_mode)
 {
 	return (platform_mode && hibernation_ops) ?
@@ -126,10 +124,9 @@ static int platform_begin(int platform_m
 }
 
 /**
- *	platform_end - tell the platform driver that we've entered the
- *	working state
+ * platform_end - Call platform to finish transition to the working state.
+ * @platform_mode: Whether or not to use the platform driver.
  */
-
 static void platform_end(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -137,8 +134,11 @@ static void platform_end(int platform_mo
 }
 
 /**
- *	platform_pre_snapshot - prepare the machine for hibernation using the
- *	platform driver if so configured and return an error code if it fails
+ * platform_pre_snapshot - Call platform to prepare the machine for hibernation.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Use the platform driver to prepare the system for creating a hibernate image,
+ * if so configured, and return an error code if that fails.
  */
 
 static int platform_pre_snapshot(int platform_mode)
@@ -148,10 +148,14 @@ static int platform_pre_snapshot(int pla
 }
 
 /**
- *	platform_leave - prepare the machine for switching to the normal mode
- *	of operation using the platform driver (called with interrupts disabled)
+ * platform_leave - Call platform to prepare a transition to the working state.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Use the platform driver prepare to prepare the machine for switching to the
+ * normal mode of operation.
+ *
+ * This routine is called on one CPU with interrupts disabled.
  */
-
 static void platform_leave(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -159,10 +163,14 @@ static void platform_leave(int platform_
 }
 
 /**
- *	platform_finish - switch the machine to the normal mode of operation
- *	using the platform driver (must be called after platform_prepare())
+ * platform_finish - Call platform to switch the system to the working state.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Use the platform driver to switch the machine to the normal mode of
+ * operation.
+ *
+ * This routine must be called after platform_prepare().
  */
-
 static void platform_finish(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -170,11 +178,15 @@ static void platform_finish(int platform
 }
 
 /**
- *	platform_pre_restore - prepare the platform for the restoration from a
- *	hibernation image.  If the restore fails after this function has been
- *	called, platform_restore_cleanup() must be called.
+ * platform_pre_restore - Prepare for hibernate image restoration.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Use the platform driver to prepare the system for resume from a hibernation
+ * image.
+ *
+ * If the restore fails after this function has been called,
+ * platform_restore_cleanup() must be called.
  */
-
 static int platform_pre_restore(int platform_mode)
 {
 	return (platform_mode && hibernation_ops) ?
@@ -182,12 +194,16 @@ static int platform_pre_restore(int plat
 }
 
 /**
- *	platform_restore_cleanup - switch the platform to the normal mode of
- *	operation after a failing restore.  If platform_pre_restore() has been
- *	called before the failing restore, this function must be called too,
- *	regardless of the result of platform_pre_restore().
+ * platform_restore_cleanup - Switch to the working state after failing restore.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Use the platform driver to switch the system to the normal mode of operation
+ * after a failing restore.
+ *
+ * If platform_pre_restore() has been called before the failing restore, this
+ * function must be called too, regardless of the result of
+ * platform_pre_restore().
  */
-
 static void platform_restore_cleanup(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -195,10 +211,9 @@ static void platform_restore_cleanup(int
 }
 
 /**
- *	platform_recover - recover the platform from a failure to suspend
- *	devices.
+ * platform_recover - Recover from a failure to suspend devices.
+ * @platform_mode: Whether or not to use the platform driver.
  */
-
 static void platform_recover(int platform_mode)
 {
 	if (platform_mode && hibernation_ops && hibernation_ops->recover)
@@ -206,13 +221,12 @@ static void platform_recover(int platfor
 }
 
 /**
- *	swsusp_show_speed - print the time elapsed between two events.
- *	@start: Starting event.
- *	@stop: Final event.
- *	@nr_pages -	number of pages processed between @start and @stop
- *	@msg -		introductory message to print
+ * swsusp_show_speed - Print time elapsed between two events during hibernation.
+ * @start: Starting event.
+ * @stop: Final event.
+ * @nr_pages: Number of memory pages processed between @start and @stop.
+ * @msg: Additional diagnostic message to print.
  */
-
 void swsusp_show_speed(struct timeval *start, struct timeval *stop,
 			unsigned nr_pages, char *msg)
 {
@@ -235,11 +249,14 @@ void swsusp_show_speed(struct timeval *s
 }
 
 /**
- *	create_image - freeze devices that need to be frozen with interrupts
- *	off, create the hibernation image and thaw those devices.  Control
- *	reappears in this routine after a restore.
+ * create_image - Create a hibernation image.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Execute device drivers' .freeze_noirq() callbacks, create a hibernation image
+ * and execute the drivers' .thaw_noirq() callbacks.
+ *
+ * Control reappears in this routine after the subsequent restore.
  */
-
 static int create_image(int platform_mode)
 {
 	int error;
@@ -304,14 +321,11 @@ static int create_image(int platform_mod
 }
 
 /**
- *	hibernation_snapshot - quiesce devices and create the hibernation
- *	snapshot image.
- *	@platform_mode - if set, use the platform driver, if available, to
- *			 prepare the platform firmware for the power transition.
+ * hibernation_snapshot - Quiesce devices and create a hibernation image.
+ * @platform_mode: If set, use platform driver to prepare for the transition.
  *
- *	Must be called with pm_mutex held
+ * This routine must be called with pm_mutex held.
  */
-
 int hibernation_snapshot(int platform_mode)
 {
 	pm_message_t msg = PMSG_RECOVER;
@@ -371,13 +385,14 @@ 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.
+ * resume_target_kernel - Restore system state from a hibernation image.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Execute device drivers' .freeze_noirq() callbacks, 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(bool platform_mode)
 {
 	int error;
@@ -445,14 +460,12 @@ static int resume_target_kernel(bool pla
 }
 
 /**
- *	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
- *			 prepare the platform firmware for the transition.
+ * hibernation_restore - Quiesce devices and restore from a hibernation image.
+ * @platform_mode: If set, use platform driver to prepare for the transition.
  *
- *	Must be called with pm_mutex held
+ * This routine must be called with pm_mutex held.  If it is successful, control
+ * reappears in the restored target kernel in hibernation_snaphot().
  */
-
 int hibernation_restore(int platform_mode)
 {
 	int error;
@@ -472,10 +485,8 @@ int hibernation_restore(int platform_mod
 }
 
 /**
- *	hibernation_platform_enter - enter the hibernation state using the
- *	platform driver (if available)
+ * hibernation_platform_enter - Power off the system using the platform driver.
  */
-
 int hibernation_platform_enter(void)
 {
 	int error;
@@ -546,12 +557,12 @@ int hibernation_platform_enter(void)
 }
 
 /**
- *	power_down - Shut the machine down for hibernation.
+ * power_down - Shut the machine down for hibernation.
  *
- *	Use the platform driver, if configured so; otherwise try
- *	to power off or reboot.
+ * Use the platform driver, if configured, to put the system into the sleep
+ * state corresponding to hibernation, or try to power it off or reboot,
+ * depending on the value of hibernation_mode.
  */
-
 static void power_down(void)
 {
 	switch (hibernation_mode) {
@@ -588,9 +599,8 @@ static int prepare_processes(void)
 }
 
 /**
- *	hibernate - The granpappy of the built-in hibernation management
+ * hibernate - Carry out system hibernation, including saving the image.
  */
-
 int hibernate(void)
 {
 	int error;
@@ -668,17 +678,20 @@ int hibernate(void)
 
 
 /**
- *	software_resume - Resume from a saved image.
+ * software_resume - Resume from a saved hibernation image.
+ *
+ * This routine is called as a late initcall, when all devices have been
+ * discovered and initialized already.
  *
- *	Called as a late_initcall (so all devices are discovered and
- *	initialized), we call swsusp to see if we have a saved image or not.
- *	If so, we quiesce devices, the restore the saved image. We will
- *	return above (in hibernate() ) if everything goes well.
- *	Otherwise, we fail gracefully and return to the normally
- *	scheduled program.
+ * The image reading code is called to see if there is a hibernation image
+ * available for reading.  If that is the case, devices are quiesced and the
+ * contents of memory is restored from the saved image.
  *
+ * If this is successful, control reappears in the restored target kernel in
+ * hibernation_snaphot() which returns to hibernate().  Otherwise, the routine
+ * attempts to recover gracefully and make the kernel return to the normal mode
+ * of operation.
  */
-
 static int software_resume(void)
 {
 	int error;
@@ -808,21 +821,17 @@ static const char * const hibernation_mo
 	[HIBERNATION_TESTPROC]	= "testproc",
 };
 
-/**
- *	disk - Control hibernation mode
+/*
+ * /sys/power/disk - Control hibernation mode.
  *
- *	Suspend-to-disk can be handled in several ways. We have a few options
- *	for putting the system to sleep - using the platform driver (e.g. ACPI
- *	or other hibernation_ops), powering off the system or rebooting the
- *	system (for testing) as well as the two test modes.
- *
- *	The system can support 'platform', and that is known a priori (and
- *	encoded by the presence of hibernation_ops). However, the user may
- *	choose 'shutdown' or 'reboot' as alternatives, as well as one fo the
- *	test modes, 'test' or 'testproc'.
+ * Hibernation can be handled in several ways.  There are a few different ways
+ * to put the system into the sleep state: using the platform driver (e.g. ACPI
+ * or other hibernation_ops), powering it off or rebooting it (for testing
+ * mostly), or using one of the two available test modes.
  *
- *	show() will display what the mode is currently set to.
- *	store() will accept one of
+ * The sysfs file /sys/power/disk provides an interface for selecting the
+ * hibernation mode to use.  Reading from this file causes the available modes
+ * to be printed.  There are 5 modes that can be supported:
  *
  *	'platform'
  *	'shutdown'
@@ -830,8 +839,14 @@ static const char * const hibernation_mo
  *	'test'
  *	'testproc'
  *
- *	It will only change to 'platform' if the system
- *	supports it (as determined by having hibernation_ops).
+ * If a platform hibernation driver is in use, 'platform' will be supported
+ * and will be used by default.  Otherwise, 'shutdown' will be used by default.
+ * The selected option (i.e. the one corresponding to the current value of
+ * hibernation_mode) is enclosed by a square bracket.
+ *
+ * To select a given hibernation mode it is necessary to write the mode's
+ * string representation (as returned by reading from /sys/power/disk) back
+ * into /sys/power/disk.
  */
 
 static ssize_t disk_show(struct kobject *kobj, struct kobj_attribute *attr,
@@ -864,7 +879,6 @@ static ssize_t disk_show(struct kobject
 	return buf-start;
 }
 
-
 static ssize_t disk_store(struct kobject *kobj, struct kobj_attribute *attr,
 			  const char *buf, size_t n)
 {

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 3/3] PM / Hibernate: Update kerneldoc comments in hibernate.c
@ 2011-05-23 21:11       ` Rafael J. Wysocki
  0 siblings, 0 replies; 29+ messages in thread
From: Rafael J. Wysocki @ 2011-05-23 21:11 UTC (permalink / raw)
  To: Randy Dunlap
  Cc: Linux PM mailing list, Frank Hofmann, LKML, linux-sh,
	Ralf Baechle, Benjamin Herrenschmidt

On Monday, May 23, 2011, Randy Dunlap wrote:
> On 05/21/11 05:12, Rafael J. Wysocki wrote:
> > From: Rafael J. Wysocki <rjw@sisk.pl>
> > 
> > Some of the kerneldoc comments in kernel/power/hibernate.c are
> > outdated and some of them don't adhere to the kernel's standards.
> > Update them and make them look in a consistent way.
> 
> Hi Rafael,

Hi,

> Several of the functions are missing function parameter notations, as
> noted below.

Ah, thanks!  Those should be fixed in the new version of the patch below.

Thanks,
Rafael


---
From: Rafael J. Wysocki <rjw@sisk.pl>
Subject: PM / Hibernate: Update kerneldoc comments in hibernate.c

Some of the kerneldoc comments in kernel/power/hibernate.c are
outdated and some of them don't adhere to the kernel's standards.
Update them and make them look in a consistent way.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 kernel/power/hibernate.c |  194 +++++++++++++++++++++++++----------------------
 1 file changed, 104 insertions(+), 90 deletions(-)

Index: linux-2.6/kernel/power/hibernate.c
===================================================================
--- linux-2.6.orig/kernel/power/hibernate.c
+++ linux-2.6/kernel/power/hibernate.c
@@ -55,10 +55,9 @@ static int hibernation_mode = HIBERNATIO
 static const struct platform_hibernation_ops *hibernation_ops;
 
 /**
- * hibernation_set_ops - set the global hibernate operations
- * @ops: the hibernation operations to use in subsequent hibernation transitions
+ * hibernation_set_ops - Set the global hibernate operations.
+ * @ops: Hibernation operations to use in subsequent hibernation transitions.
  */
-
 void hibernation_set_ops(const struct platform_hibernation_ops *ops)
 {
 	if (ops && !(ops->begin && ops->end &&  ops->pre_snapshot
@@ -115,10 +114,9 @@ static int hibernation_test(int level) {
 #endif /* !CONFIG_PM_DEBUG */
 
 /**
- *	platform_begin - tell the platform driver that we're starting
- *	hibernation
+ * platform_begin - Call platform to start hibernation.
+ * @platform_mode: Whether or not to use the platform driver.
  */
-
 static int platform_begin(int platform_mode)
 {
 	return (platform_mode && hibernation_ops) ?
@@ -126,10 +124,9 @@ static int platform_begin(int platform_m
 }
 
 /**
- *	platform_end - tell the platform driver that we've entered the
- *	working state
+ * platform_end - Call platform to finish transition to the working state.
+ * @platform_mode: Whether or not to use the platform driver.
  */
-
 static void platform_end(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -137,8 +134,11 @@ static void platform_end(int platform_mo
 }
 
 /**
- *	platform_pre_snapshot - prepare the machine for hibernation using the
- *	platform driver if so configured and return an error code if it fails
+ * platform_pre_snapshot - Call platform to prepare the machine for hibernation.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Use the platform driver to prepare the system for creating a hibernate image,
+ * if so configured, and return an error code if that fails.
  */
 
 static int platform_pre_snapshot(int platform_mode)
@@ -148,10 +148,14 @@ static int platform_pre_snapshot(int pla
 }
 
 /**
- *	platform_leave - prepare the machine for switching to the normal mode
- *	of operation using the platform driver (called with interrupts disabled)
+ * platform_leave - Call platform to prepare a transition to the working state.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Use the platform driver prepare to prepare the machine for switching to the
+ * normal mode of operation.
+ *
+ * This routine is called on one CPU with interrupts disabled.
  */
-
 static void platform_leave(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -159,10 +163,14 @@ static void platform_leave(int platform_
 }
 
 /**
- *	platform_finish - switch the machine to the normal mode of operation
- *	using the platform driver (must be called after platform_prepare())
+ * platform_finish - Call platform to switch the system to the working state.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Use the platform driver to switch the machine to the normal mode of
+ * operation.
+ *
+ * This routine must be called after platform_prepare().
  */
-
 static void platform_finish(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -170,11 +178,15 @@ static void platform_finish(int platform
 }
 
 /**
- *	platform_pre_restore - prepare the platform for the restoration from a
- *	hibernation image.  If the restore fails after this function has been
- *	called, platform_restore_cleanup() must be called.
+ * platform_pre_restore - Prepare for hibernate image restoration.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Use the platform driver to prepare the system for resume from a hibernation
+ * image.
+ *
+ * If the restore fails after this function has been called,
+ * platform_restore_cleanup() must be called.
  */
-
 static int platform_pre_restore(int platform_mode)
 {
 	return (platform_mode && hibernation_ops) ?
@@ -182,12 +194,16 @@ static int platform_pre_restore(int plat
 }
 
 /**
- *	platform_restore_cleanup - switch the platform to the normal mode of
- *	operation after a failing restore.  If platform_pre_restore() has been
- *	called before the failing restore, this function must be called too,
- *	regardless of the result of platform_pre_restore().
+ * platform_restore_cleanup - Switch to the working state after failing restore.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Use the platform driver to switch the system to the normal mode of operation
+ * after a failing restore.
+ *
+ * If platform_pre_restore() has been called before the failing restore, this
+ * function must be called too, regardless of the result of
+ * platform_pre_restore().
  */
-
 static void platform_restore_cleanup(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -195,10 +211,9 @@ static void platform_restore_cleanup(int
 }
 
 /**
- *	platform_recover - recover the platform from a failure to suspend
- *	devices.
+ * platform_recover - Recover from a failure to suspend devices.
+ * @platform_mode: Whether or not to use the platform driver.
  */
-
 static void platform_recover(int platform_mode)
 {
 	if (platform_mode && hibernation_ops && hibernation_ops->recover)
@@ -206,13 +221,12 @@ static void platform_recover(int platfor
 }
 
 /**
- *	swsusp_show_speed - print the time elapsed between two events.
- *	@start: Starting event.
- *	@stop: Final event.
- *	@nr_pages -	number of pages processed between @start and @stop
- *	@msg -		introductory message to print
+ * swsusp_show_speed - Print time elapsed between two events during hibernation.
+ * @start: Starting event.
+ * @stop: Final event.
+ * @nr_pages: Number of memory pages processed between @start and @stop.
+ * @msg: Additional diagnostic message to print.
  */
-
 void swsusp_show_speed(struct timeval *start, struct timeval *stop,
 			unsigned nr_pages, char *msg)
 {
@@ -235,11 +249,14 @@ void swsusp_show_speed(struct timeval *s
 }
 
 /**
- *	create_image - freeze devices that need to be frozen with interrupts
- *	off, create the hibernation image and thaw those devices.  Control
- *	reappears in this routine after a restore.
+ * create_image - Create a hibernation image.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Execute device drivers' .freeze_noirq() callbacks, create a hibernation image
+ * and execute the drivers' .thaw_noirq() callbacks.
+ *
+ * Control reappears in this routine after the subsequent restore.
  */
-
 static int create_image(int platform_mode)
 {
 	int error;
@@ -304,14 +321,11 @@ static int create_image(int platform_mod
 }
 
 /**
- *	hibernation_snapshot - quiesce devices and create the hibernation
- *	snapshot image.
- *	@platform_mode - if set, use the platform driver, if available, to
- *			 prepare the platform firmware for the power transition.
+ * hibernation_snapshot - Quiesce devices and create a hibernation image.
+ * @platform_mode: If set, use platform driver to prepare for the transition.
  *
- *	Must be called with pm_mutex held
+ * This routine must be called with pm_mutex held.
  */
-
 int hibernation_snapshot(int platform_mode)
 {
 	pm_message_t msg = PMSG_RECOVER;
@@ -371,13 +385,14 @@ 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.
+ * resume_target_kernel - Restore system state from a hibernation image.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Execute device drivers' .freeze_noirq() callbacks, 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(bool platform_mode)
 {
 	int error;
@@ -445,14 +460,12 @@ static int resume_target_kernel(bool pla
 }
 
 /**
- *	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
- *			 prepare the platform firmware for the transition.
+ * hibernation_restore - Quiesce devices and restore from a hibernation image.
+ * @platform_mode: If set, use platform driver to prepare for the transition.
  *
- *	Must be called with pm_mutex held
+ * This routine must be called with pm_mutex held.  If it is successful, control
+ * reappears in the restored target kernel in hibernation_snaphot().
  */
-
 int hibernation_restore(int platform_mode)
 {
 	int error;
@@ -472,10 +485,8 @@ int hibernation_restore(int platform_mod
 }
 
 /**
- *	hibernation_platform_enter - enter the hibernation state using the
- *	platform driver (if available)
+ * hibernation_platform_enter - Power off the system using the platform driver.
  */
-
 int hibernation_platform_enter(void)
 {
 	int error;
@@ -546,12 +557,12 @@ int hibernation_platform_enter(void)
 }
 
 /**
- *	power_down - Shut the machine down for hibernation.
+ * power_down - Shut the machine down for hibernation.
  *
- *	Use the platform driver, if configured so; otherwise try
- *	to power off or reboot.
+ * Use the platform driver, if configured, to put the system into the sleep
+ * state corresponding to hibernation, or try to power it off or reboot,
+ * depending on the value of hibernation_mode.
  */
-
 static void power_down(void)
 {
 	switch (hibernation_mode) {
@@ -588,9 +599,8 @@ static int prepare_processes(void)
 }
 
 /**
- *	hibernate - The granpappy of the built-in hibernation management
+ * hibernate - Carry out system hibernation, including saving the image.
  */
-
 int hibernate(void)
 {
 	int error;
@@ -668,17 +678,20 @@ int hibernate(void)
 
 
 /**
- *	software_resume - Resume from a saved image.
+ * software_resume - Resume from a saved hibernation image.
+ *
+ * This routine is called as a late initcall, when all devices have been
+ * discovered and initialized already.
  *
- *	Called as a late_initcall (so all devices are discovered and
- *	initialized), we call swsusp to see if we have a saved image or not.
- *	If so, we quiesce devices, the restore the saved image. We will
- *	return above (in hibernate() ) if everything goes well.
- *	Otherwise, we fail gracefully and return to the normally
- *	scheduled program.
+ * The image reading code is called to see if there is a hibernation image
+ * available for reading.  If that is the case, devices are quiesced and the
+ * contents of memory is restored from the saved image.
  *
+ * If this is successful, control reappears in the restored target kernel in
+ * hibernation_snaphot() which returns to hibernate().  Otherwise, the routine
+ * attempts to recover gracefully and make the kernel return to the normal mode
+ * of operation.
  */
-
 static int software_resume(void)
 {
 	int error;
@@ -808,21 +821,17 @@ static const char * const hibernation_mo
 	[HIBERNATION_TESTPROC]	= "testproc",
 };
 
-/**
- *	disk - Control hibernation mode
+/*
+ * /sys/power/disk - Control hibernation mode.
  *
- *	Suspend-to-disk can be handled in several ways. We have a few options
- *	for putting the system to sleep - using the platform driver (e.g. ACPI
- *	or other hibernation_ops), powering off the system or rebooting the
- *	system (for testing) as well as the two test modes.
- *
- *	The system can support 'platform', and that is known a priori (and
- *	encoded by the presence of hibernation_ops). However, the user may
- *	choose 'shutdown' or 'reboot' as alternatives, as well as one fo the
- *	test modes, 'test' or 'testproc'.
+ * Hibernation can be handled in several ways.  There are a few different ways
+ * to put the system into the sleep state: using the platform driver (e.g. ACPI
+ * or other hibernation_ops), powering it off or rebooting it (for testing
+ * mostly), or using one of the two available test modes.
  *
- *	show() will display what the mode is currently set to.
- *	store() will accept one of
+ * The sysfs file /sys/power/disk provides an interface for selecting the
+ * hibernation mode to use.  Reading from this file causes the available modes
+ * to be printed.  There are 5 modes that can be supported:
  *
  *	'platform'
  *	'shutdown'
@@ -830,8 +839,14 @@ static const char * const hibernation_mo
  *	'test'
  *	'testproc'
  *
- *	It will only change to 'platform' if the system
- *	supports it (as determined by having hibernation_ops).
+ * If a platform hibernation driver is in use, 'platform' will be supported
+ * and will be used by default.  Otherwise, 'shutdown' will be used by default.
+ * The selected option (i.e. the one corresponding to the current value of
+ * hibernation_mode) is enclosed by a square bracket.
+ *
+ * To select a given hibernation mode it is necessary to write the mode's
+ * string representation (as returned by reading from /sys/power/disk) back
+ * into /sys/power/disk.
  */
 
 static ssize_t disk_show(struct kobject *kobj, struct kobj_attribute *attr,
@@ -864,7 +879,6 @@ static ssize_t disk_show(struct kobject
 	return buf-start;
 }
 
-
 static ssize_t disk_store(struct kobject *kobj, struct kobj_attribute *attr,
 			  const char *buf, size_t n)
 {

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 3/3] PM / Hibernate: Update kerneldoc comments in hibernate.c
  2011-05-23  3:08     ` Randy Dunlap
  (?)
  (?)
@ 2011-05-23 21:11     ` Rafael J. Wysocki
  -1 siblings, 0 replies; 29+ messages in thread
From: Rafael J. Wysocki @ 2011-05-23 21:11 UTC (permalink / raw)
  To: Randy Dunlap
  Cc: linux-sh, LKML, Ralf Baechle, Frank Hofmann, Linux PM mailing list

On Monday, May 23, 2011, Randy Dunlap wrote:
> On 05/21/11 05:12, Rafael J. Wysocki wrote:
> > From: Rafael J. Wysocki <rjw@sisk.pl>
> > 
> > Some of the kerneldoc comments in kernel/power/hibernate.c are
> > outdated and some of them don't adhere to the kernel's standards.
> > Update them and make them look in a consistent way.
> 
> Hi Rafael,

Hi,

> Several of the functions are missing function parameter notations, as
> noted below.

Ah, thanks!  Those should be fixed in the new version of the patch below.

Thanks,
Rafael


---
From: Rafael J. Wysocki <rjw@sisk.pl>
Subject: PM / Hibernate: Update kerneldoc comments in hibernate.c

Some of the kerneldoc comments in kernel/power/hibernate.c are
outdated and some of them don't adhere to the kernel's standards.
Update them and make them look in a consistent way.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 kernel/power/hibernate.c |  194 +++++++++++++++++++++++++----------------------
 1 file changed, 104 insertions(+), 90 deletions(-)

Index: linux-2.6/kernel/power/hibernate.c
===================================================================
--- linux-2.6.orig/kernel/power/hibernate.c
+++ linux-2.6/kernel/power/hibernate.c
@@ -55,10 +55,9 @@ static int hibernation_mode = HIBERNATIO
 static const struct platform_hibernation_ops *hibernation_ops;
 
 /**
- * hibernation_set_ops - set the global hibernate operations
- * @ops: the hibernation operations to use in subsequent hibernation transitions
+ * hibernation_set_ops - Set the global hibernate operations.
+ * @ops: Hibernation operations to use in subsequent hibernation transitions.
  */
-
 void hibernation_set_ops(const struct platform_hibernation_ops *ops)
 {
 	if (ops && !(ops->begin && ops->end &&  ops->pre_snapshot
@@ -115,10 +114,9 @@ static int hibernation_test(int level) {
 #endif /* !CONFIG_PM_DEBUG */
 
 /**
- *	platform_begin - tell the platform driver that we're starting
- *	hibernation
+ * platform_begin - Call platform to start hibernation.
+ * @platform_mode: Whether or not to use the platform driver.
  */
-
 static int platform_begin(int platform_mode)
 {
 	return (platform_mode && hibernation_ops) ?
@@ -126,10 +124,9 @@ static int platform_begin(int platform_m
 }
 
 /**
- *	platform_end - tell the platform driver that we've entered the
- *	working state
+ * platform_end - Call platform to finish transition to the working state.
+ * @platform_mode: Whether or not to use the platform driver.
  */
-
 static void platform_end(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -137,8 +134,11 @@ static void platform_end(int platform_mo
 }
 
 /**
- *	platform_pre_snapshot - prepare the machine for hibernation using the
- *	platform driver if so configured and return an error code if it fails
+ * platform_pre_snapshot - Call platform to prepare the machine for hibernation.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Use the platform driver to prepare the system for creating a hibernate image,
+ * if so configured, and return an error code if that fails.
  */
 
 static int platform_pre_snapshot(int platform_mode)
@@ -148,10 +148,14 @@ static int platform_pre_snapshot(int pla
 }
 
 /**
- *	platform_leave - prepare the machine for switching to the normal mode
- *	of operation using the platform driver (called with interrupts disabled)
+ * platform_leave - Call platform to prepare a transition to the working state.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Use the platform driver prepare to prepare the machine for switching to the
+ * normal mode of operation.
+ *
+ * This routine is called on one CPU with interrupts disabled.
  */
-
 static void platform_leave(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -159,10 +163,14 @@ static void platform_leave(int platform_
 }
 
 /**
- *	platform_finish - switch the machine to the normal mode of operation
- *	using the platform driver (must be called after platform_prepare())
+ * platform_finish - Call platform to switch the system to the working state.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Use the platform driver to switch the machine to the normal mode of
+ * operation.
+ *
+ * This routine must be called after platform_prepare().
  */
-
 static void platform_finish(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -170,11 +178,15 @@ static void platform_finish(int platform
 }
 
 /**
- *	platform_pre_restore - prepare the platform for the restoration from a
- *	hibernation image.  If the restore fails after this function has been
- *	called, platform_restore_cleanup() must be called.
+ * platform_pre_restore - Prepare for hibernate image restoration.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Use the platform driver to prepare the system for resume from a hibernation
+ * image.
+ *
+ * If the restore fails after this function has been called,
+ * platform_restore_cleanup() must be called.
  */
-
 static int platform_pre_restore(int platform_mode)
 {
 	return (platform_mode && hibernation_ops) ?
@@ -182,12 +194,16 @@ static int platform_pre_restore(int plat
 }
 
 /**
- *	platform_restore_cleanup - switch the platform to the normal mode of
- *	operation after a failing restore.  If platform_pre_restore() has been
- *	called before the failing restore, this function must be called too,
- *	regardless of the result of platform_pre_restore().
+ * platform_restore_cleanup - Switch to the working state after failing restore.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Use the platform driver to switch the system to the normal mode of operation
+ * after a failing restore.
+ *
+ * If platform_pre_restore() has been called before the failing restore, this
+ * function must be called too, regardless of the result of
+ * platform_pre_restore().
  */
-
 static void platform_restore_cleanup(int platform_mode)
 {
 	if (platform_mode && hibernation_ops)
@@ -195,10 +211,9 @@ static void platform_restore_cleanup(int
 }
 
 /**
- *	platform_recover - recover the platform from a failure to suspend
- *	devices.
+ * platform_recover - Recover from a failure to suspend devices.
+ * @platform_mode: Whether or not to use the platform driver.
  */
-
 static void platform_recover(int platform_mode)
 {
 	if (platform_mode && hibernation_ops && hibernation_ops->recover)
@@ -206,13 +221,12 @@ static void platform_recover(int platfor
 }
 
 /**
- *	swsusp_show_speed - print the time elapsed between two events.
- *	@start: Starting event.
- *	@stop: Final event.
- *	@nr_pages -	number of pages processed between @start and @stop
- *	@msg -		introductory message to print
+ * swsusp_show_speed - Print time elapsed between two events during hibernation.
+ * @start: Starting event.
+ * @stop: Final event.
+ * @nr_pages: Number of memory pages processed between @start and @stop.
+ * @msg: Additional diagnostic message to print.
  */
-
 void swsusp_show_speed(struct timeval *start, struct timeval *stop,
 			unsigned nr_pages, char *msg)
 {
@@ -235,11 +249,14 @@ void swsusp_show_speed(struct timeval *s
 }
 
 /**
- *	create_image - freeze devices that need to be frozen with interrupts
- *	off, create the hibernation image and thaw those devices.  Control
- *	reappears in this routine after a restore.
+ * create_image - Create a hibernation image.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Execute device drivers' .freeze_noirq() callbacks, create a hibernation image
+ * and execute the drivers' .thaw_noirq() callbacks.
+ *
+ * Control reappears in this routine after the subsequent restore.
  */
-
 static int create_image(int platform_mode)
 {
 	int error;
@@ -304,14 +321,11 @@ static int create_image(int platform_mod
 }
 
 /**
- *	hibernation_snapshot - quiesce devices and create the hibernation
- *	snapshot image.
- *	@platform_mode - if set, use the platform driver, if available, to
- *			 prepare the platform firmware for the power transition.
+ * hibernation_snapshot - Quiesce devices and create a hibernation image.
+ * @platform_mode: If set, use platform driver to prepare for the transition.
  *
- *	Must be called with pm_mutex held
+ * This routine must be called with pm_mutex held.
  */
-
 int hibernation_snapshot(int platform_mode)
 {
 	pm_message_t msg = PMSG_RECOVER;
@@ -371,13 +385,14 @@ 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.
+ * resume_target_kernel - Restore system state from a hibernation image.
+ * @platform_mode: Whether or not to use the platform driver.
+ *
+ * Execute device drivers' .freeze_noirq() callbacks, 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(bool platform_mode)
 {
 	int error;
@@ -445,14 +460,12 @@ static int resume_target_kernel(bool pla
 }
 
 /**
- *	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
- *			 prepare the platform firmware for the transition.
+ * hibernation_restore - Quiesce devices and restore from a hibernation image.
+ * @platform_mode: If set, use platform driver to prepare for the transition.
  *
- *	Must be called with pm_mutex held
+ * This routine must be called with pm_mutex held.  If it is successful, control
+ * reappears in the restored target kernel in hibernation_snaphot().
  */
-
 int hibernation_restore(int platform_mode)
 {
 	int error;
@@ -472,10 +485,8 @@ int hibernation_restore(int platform_mod
 }
 
 /**
- *	hibernation_platform_enter - enter the hibernation state using the
- *	platform driver (if available)
+ * hibernation_platform_enter - Power off the system using the platform driver.
  */
-
 int hibernation_platform_enter(void)
 {
 	int error;
@@ -546,12 +557,12 @@ int hibernation_platform_enter(void)
 }
 
 /**
- *	power_down - Shut the machine down for hibernation.
+ * power_down - Shut the machine down for hibernation.
  *
- *	Use the platform driver, if configured so; otherwise try
- *	to power off or reboot.
+ * Use the platform driver, if configured, to put the system into the sleep
+ * state corresponding to hibernation, or try to power it off or reboot,
+ * depending on the value of hibernation_mode.
  */
-
 static void power_down(void)
 {
 	switch (hibernation_mode) {
@@ -588,9 +599,8 @@ static int prepare_processes(void)
 }
 
 /**
- *	hibernate - The granpappy of the built-in hibernation management
+ * hibernate - Carry out system hibernation, including saving the image.
  */
-
 int hibernate(void)
 {
 	int error;
@@ -668,17 +678,20 @@ int hibernate(void)
 
 
 /**
- *	software_resume - Resume from a saved image.
+ * software_resume - Resume from a saved hibernation image.
+ *
+ * This routine is called as a late initcall, when all devices have been
+ * discovered and initialized already.
  *
- *	Called as a late_initcall (so all devices are discovered and
- *	initialized), we call swsusp to see if we have a saved image or not.
- *	If so, we quiesce devices, the restore the saved image. We will
- *	return above (in hibernate() ) if everything goes well.
- *	Otherwise, we fail gracefully and return to the normally
- *	scheduled program.
+ * The image reading code is called to see if there is a hibernation image
+ * available for reading.  If that is the case, devices are quiesced and the
+ * contents of memory is restored from the saved image.
  *
+ * If this is successful, control reappears in the restored target kernel in
+ * hibernation_snaphot() which returns to hibernate().  Otherwise, the routine
+ * attempts to recover gracefully and make the kernel return to the normal mode
+ * of operation.
  */
-
 static int software_resume(void)
 {
 	int error;
@@ -808,21 +821,17 @@ static const char * const hibernation_mo
 	[HIBERNATION_TESTPROC]	= "testproc",
 };
 
-/**
- *	disk - Control hibernation mode
+/*
+ * /sys/power/disk - Control hibernation mode.
  *
- *	Suspend-to-disk can be handled in several ways. We have a few options
- *	for putting the system to sleep - using the platform driver (e.g. ACPI
- *	or other hibernation_ops), powering off the system or rebooting the
- *	system (for testing) as well as the two test modes.
- *
- *	The system can support 'platform', and that is known a priori (and
- *	encoded by the presence of hibernation_ops). However, the user may
- *	choose 'shutdown' or 'reboot' as alternatives, as well as one fo the
- *	test modes, 'test' or 'testproc'.
+ * Hibernation can be handled in several ways.  There are a few different ways
+ * to put the system into the sleep state: using the platform driver (e.g. ACPI
+ * or other hibernation_ops), powering it off or rebooting it (for testing
+ * mostly), or using one of the two available test modes.
  *
- *	show() will display what the mode is currently set to.
- *	store() will accept one of
+ * The sysfs file /sys/power/disk provides an interface for selecting the
+ * hibernation mode to use.  Reading from this file causes the available modes
+ * to be printed.  There are 5 modes that can be supported:
  *
  *	'platform'
  *	'shutdown'
@@ -830,8 +839,14 @@ static const char * const hibernation_mo
  *	'test'
  *	'testproc'
  *
- *	It will only change to 'platform' if the system
- *	supports it (as determined by having hibernation_ops).
+ * If a platform hibernation driver is in use, 'platform' will be supported
+ * and will be used by default.  Otherwise, 'shutdown' will be used by default.
+ * The selected option (i.e. the one corresponding to the current value of
+ * hibernation_mode) is enclosed by a square bracket.
+ *
+ * To select a given hibernation mode it is necessary to write the mode's
+ * string representation (as returned by reading from /sys/power/disk) back
+ * into /sys/power/disk.
  */
 
 static ssize_t disk_show(struct kobject *kobj, struct kobj_attribute *attr,
@@ -864,7 +879,6 @@ static ssize_t disk_show(struct kobject
 	return buf-start;
 }
 
-
 static ssize_t disk_store(struct kobject *kobj, struct kobj_attribute *attr,
 			  const char *buf, size_t n)
 {

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 3/3] PM / Hibernate: Update kerneldoc comments in
  2011-05-23 21:11       ` Rafael J. Wysocki
@ 2011-05-23 21:34         ` Randy Dunlap
  -1 siblings, 0 replies; 29+ messages in thread
From: Randy Dunlap @ 2011-05-23 21:34 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Linux PM mailing list, Frank Hofmann, LKML, linux-sh,
	Ralf Baechle, Benjamin Herrenschmidt

On Mon, 23 May 2011 23:11:28 +0200 Rafael J. Wysocki wrote:

> ---
> From: Rafael J. Wysocki <rjw@sisk.pl>
> Subject: PM / Hibernate: Update kerneldoc comments in hibernate.c
> 
> Some of the kerneldoc comments in kernel/power/hibernate.c are
> outdated and some of them don't adhere to the kernel's standards.
> Update them and make them look in a consistent way.
> 
> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>

Looks good.  Thanks.

Acked-by: Randy Dunlap <randy.dunlap@oracle.com>

---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 3/3] PM / Hibernate: Update kerneldoc comments in hibernate.c
@ 2011-05-23 21:34         ` Randy Dunlap
  0 siblings, 0 replies; 29+ messages in thread
From: Randy Dunlap @ 2011-05-23 21:34 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Linux PM mailing list, Frank Hofmann, LKML, linux-sh,
	Ralf Baechle, Benjamin Herrenschmidt

On Mon, 23 May 2011 23:11:28 +0200 Rafael J. Wysocki wrote:

> ---
> From: Rafael J. Wysocki <rjw@sisk.pl>
> Subject: PM / Hibernate: Update kerneldoc comments in hibernate.c
> 
> Some of the kerneldoc comments in kernel/power/hibernate.c are
> outdated and some of them don't adhere to the kernel's standards.
> Update them and make them look in a consistent way.
> 
> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>

Looks good.  Thanks.

Acked-by: Randy Dunlap <randy.dunlap@oracle.com>

---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 3/3] PM / Hibernate: Update kerneldoc comments in hibernate.c
  2011-05-23 21:11       ` Rafael J. Wysocki
  (?)
  (?)
@ 2011-05-23 21:34       ` Randy Dunlap
  -1 siblings, 0 replies; 29+ messages in thread
From: Randy Dunlap @ 2011-05-23 21:34 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: linux-sh, LKML, Ralf Baechle, Frank Hofmann, Linux PM mailing list

On Mon, 23 May 2011 23:11:28 +0200 Rafael J. Wysocki wrote:

> ---
> From: Rafael J. Wysocki <rjw@sisk.pl>
> Subject: PM / Hibernate: Update kerneldoc comments in hibernate.c
> 
> Some of the kerneldoc comments in kernel/power/hibernate.c are
> outdated and some of them don't adhere to the kernel's standards.
> Update them and make them look in a consistent way.
> 
> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>

Looks good.  Thanks.

Acked-by: Randy Dunlap <randy.dunlap@oracle.com>

---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 0/3] Hibernate cleanups
  2011-05-21 12:08 ` Rafael J. Wysocki
  (?)
@ 2011-05-24 12:35   ` Frank Hofmann
  -1 siblings, 0 replies; 29+ messages in thread
From: Frank Hofmann @ 2011-05-24 12:35 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: linux-sh, LKML, Ralf Baechle, Frank Hofmann, Linux PM mailing list



On Sat, 21 May 2011, Rafael J. Wysocki wrote:

> Hi,
>
> Following are three hibernate patches I didn't have the time to
> work on before.
>
> [1/3] - Update comments in kernel/power/hibernate.c
> [2/3] - Remove arch_prepare_suspend()
> [3/3] - Update kerneldoc comments in kernel/power/hibernate.c
>
> Since they don't make any functional changes, I don't think it makes sense
> to wait with them for the next merge window, so I'd like to push them
> for 2.6.40 if no one objects.
>
> Thanks,
> Rafael
>
>

Hi Rafael,

thanks, these are helpful !

FrankH.

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 0/3] Hibernate cleanups
@ 2011-05-24 12:35   ` Frank Hofmann
  0 siblings, 0 replies; 29+ messages in thread
From: Frank Hofmann @ 2011-05-24 12:35 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Linux PM mailing list, Frank Hofmann, LKML, linux-sh,
	Ralf Baechle, Benjamin Herrenschmidt



On Sat, 21 May 2011, Rafael J. Wysocki wrote:

> Hi,
>
> Following are three hibernate patches I didn't have the time to
> work on before.
>
> [1/3] - Update comments in kernel/power/hibernate.c
> [2/3] - Remove arch_prepare_suspend()
> [3/3] - Update kerneldoc comments in kernel/power/hibernate.c
>
> Since they don't make any functional changes, I don't think it makes sense
> to wait with them for the next merge window, so I'd like to push them
> for 2.6.40 if no one objects.
>
> Thanks,
> Rafael
>
>

Hi Rafael,

thanks, these are helpful !

FrankH.

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 0/3] Hibernate cleanups
@ 2011-05-24 12:35   ` Frank Hofmann
  0 siblings, 0 replies; 29+ messages in thread
From: Frank Hofmann @ 2011-05-24 12:35 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: linux-sh, LKML, Ralf Baechle, Frank Hofmann, Linux PM mailing list



On Sat, 21 May 2011, Rafael J. Wysocki wrote:

> Hi,
>
> Following are three hibernate patches I didn't have the time to
> work on before.
>
> [1/3] - Update comments in kernel/power/hibernate.c
> [2/3] - Remove arch_prepare_suspend()
> [3/3] - Update kerneldoc comments in kernel/power/hibernate.c
>
> Since they don't make any functional changes, I don't think it makes sense
> to wait with them for the next merge window, so I'd like to push them
> for 2.6.40 if no one objects.
>
> Thanks,
> Rafael
>
>

Hi Rafael,

thanks, these are helpful !

FrankH.

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 2/3] PM / Hibernate: Remove arch_prepare_suspend()
  2011-05-21 12:10   ` Rafael J. Wysocki
@ 2011-06-02  3:14     ` Pavel Machek
  -1 siblings, 0 replies; 29+ messages in thread
From: Pavel Machek @ 2011-06-02  3:14 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Linux PM mailing list, Frank Hofmann, LKML, linux-sh,
	Ralf Baechle, Benjamin Herrenschmidt

On Sat 2011-05-21 14:10:34, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rjw@sisk.pl>
> 
> All architectures supporting hibernation define
> arch_prepare_suspend() as an empty function, so remove it.
> 
> 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] 29+ messages in thread

* Re: [PATCH 2/3] PM / Hibernate: Remove arch_prepare_suspend()
@ 2011-06-02  3:14     ` Pavel Machek
  0 siblings, 0 replies; 29+ messages in thread
From: Pavel Machek @ 2011-06-02  3:14 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Linux PM mailing list, Frank Hofmann, LKML, linux-sh,
	Ralf Baechle, Benjamin Herrenschmidt

On Sat 2011-05-21 14:10:34, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rjw@sisk.pl>
> 
> All architectures supporting hibernation define
> arch_prepare_suspend() as an empty function, so remove it.
> 
> 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] 29+ messages in thread

* Re: [PATCH 2/3] PM / Hibernate: Remove arch_prepare_suspend()
  2011-05-21 12:10   ` Rafael J. Wysocki
  (?)
@ 2011-06-02  3:14   ` Pavel Machek
  -1 siblings, 0 replies; 29+ messages in thread
From: Pavel Machek @ 2011-06-02  3:14 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: linux-sh, LKML, Ralf Baechle, Frank Hofmann, Linux PM mailing list

On Sat 2011-05-21 14:10:34, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rjw@sisk.pl>
> 
> All architectures supporting hibernation define
> arch_prepare_suspend() as an empty function, so remove it.
> 
> 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] 29+ messages in thread

* Re: [PATCH 2/3] PM / Hibernate: Remove arch_prepare_suspend()
  2011-05-21 12:10   ` Rafael J. Wysocki
@ 2011-06-06 13:49     ` Ralf Baechle
  -1 siblings, 0 replies; 29+ messages in thread
From: Ralf Baechle @ 2011-06-06 13:49 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Linux PM mailing list, Frank Hofmann, LKML, linux-sh,
	Benjamin Herrenschmidt

On Sat, May 21, 2011 at 02:10:34PM +0200, Rafael J. Wysocki wrote:

> 
> All architectures supporting hibernation define
> arch_prepare_suspend() as an empty function, so remove it.
> 
> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
> ---
>  arch/frv/include/asm/suspend.h       |   20 --------------------
>  arch/mips/include/asm/suspend.h      |    2 --

I don't see what we'd possibly need that hook for so:

Acked-by: Ralf Baechle <ralf@linux-mips.org>

  Ralf

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 2/3] PM / Hibernate: Remove arch_prepare_suspend()
@ 2011-06-06 13:49     ` Ralf Baechle
  0 siblings, 0 replies; 29+ messages in thread
From: Ralf Baechle @ 2011-06-06 13:49 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Linux PM mailing list, Frank Hofmann, LKML, linux-sh,
	Benjamin Herrenschmidt

On Sat, May 21, 2011 at 02:10:34PM +0200, Rafael J. Wysocki wrote:

> 
> All architectures supporting hibernation define
> arch_prepare_suspend() as an empty function, so remove it.
> 
> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
> ---
>  arch/frv/include/asm/suspend.h       |   20 --------------------
>  arch/mips/include/asm/suspend.h      |    2 --

I don't see what we'd possibly need that hook for so:

Acked-by: Ralf Baechle <ralf@linux-mips.org>

  Ralf

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 2/3] PM / Hibernate: Remove arch_prepare_suspend()
  2011-05-21 12:10   ` Rafael J. Wysocki
                     ` (2 preceding siblings ...)
  (?)
@ 2011-06-06 13:49   ` Ralf Baechle
  -1 siblings, 0 replies; 29+ messages in thread
From: Ralf Baechle @ 2011-06-06 13:49 UTC (permalink / raw)
  To: Rafael J. Wysocki; +Cc: Frank Hofmann, Linux PM mailing list, LKML, linux-sh

On Sat, May 21, 2011 at 02:10:34PM +0200, Rafael J. Wysocki wrote:

> 
> All architectures supporting hibernation define
> arch_prepare_suspend() as an empty function, so remove it.
> 
> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
> ---
>  arch/frv/include/asm/suspend.h       |   20 --------------------
>  arch/mips/include/asm/suspend.h      |    2 --

I don't see what we'd possibly need that hook for so:

Acked-by: Ralf Baechle <ralf@linux-mips.org>

  Ralf

^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2011-06-06 13:50 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-21 12:08 [PATCH 0/3] Hibernate cleanups Rafael J. Wysocki
2011-05-21 12:08 ` Rafael J. Wysocki
2011-05-21 12:09 ` [PATCH 1/3] PM / Hibernate: Update some comments in core hibernate code Rafael J. Wysocki
2011-05-21 12:09 ` Rafael J. Wysocki
2011-05-21 12:09   ` Rafael J. Wysocki
2011-05-21 12:10 ` [PATCH 2/3] PM / Hibernate: Remove arch_prepare_suspend() Rafael J. Wysocki
2011-05-21 12:10   ` Rafael J. Wysocki
2011-06-02  3:14   ` Pavel Machek
2011-06-02  3:14   ` Pavel Machek
2011-06-02  3:14     ` Pavel Machek
2011-06-06 13:49   ` Ralf Baechle
2011-06-06 13:49   ` Ralf Baechle
2011-06-06 13:49     ` Ralf Baechle
2011-05-21 12:10 ` Rafael J. Wysocki
2011-05-21 12:12 ` [PATCH 3/3] PM / Hibernate: Update kerneldoc comments in hibernate.c Rafael J. Wysocki
2011-05-21 12:12   ` Rafael J. Wysocki
2011-05-23  3:08   ` Randy Dunlap
2011-05-23  3:08   ` Randy Dunlap
2011-05-23  3:08     ` Randy Dunlap
2011-05-23 21:11     ` Rafael J. Wysocki
2011-05-23 21:11       ` Rafael J. Wysocki
2011-05-23 21:34       ` [PATCH 3/3] PM / Hibernate: Update kerneldoc comments in Randy Dunlap
2011-05-23 21:34         ` [PATCH 3/3] PM / Hibernate: Update kerneldoc comments in hibernate.c Randy Dunlap
2011-05-23 21:34       ` Randy Dunlap
2011-05-23 21:11     ` Rafael J. Wysocki
2011-05-21 12:12 ` Rafael J. Wysocki
2011-05-24 12:35 ` [PATCH 0/3] Hibernate cleanups Frank Hofmann
2011-05-24 12:35   ` Frank Hofmann
2011-05-24 12:35   ` Frank Hofmann

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.