linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [pm] Make software resume be called at resume
@ 2003-09-28 22:24 Pavel Machek
  2003-09-29 16:57 ` Patrick Mochel
  0 siblings, 1 reply; 3+ messages in thread
From: Pavel Machek @ 2003-09-28 22:24 UTC (permalink / raw)
  To: torvalds, kernel list, Patrick Mochel

Hi!

This adds neccessary initcall() so that machine really does resume,
and adds gpl, and makes sure we do not do random bit flips on non-PSE
machine. Please apply,
								Pavel
[Yes, software_suspend needs to return int and do some error
handling. But not today, and this is better than random bit flips.]

PS: echo -n mem > /sys/power/state works here (good!), but echo 3 >
/proc/acpi/sleep fails to even put machine to sleep.

--- clean/kernel/power/swsusp.c	2003-09-28 22:06:45.000000000 +0200
+++ linux/kernel/power/swsusp.c	2003-09-29 00:19:37.000000000 +0200
@@ -5,7 +5,10 @@
  * machine suspend feature using pretty near only high-level routines
  *
  * Copyright (C) 1998-2001 Gabor Kuti <seasons@fornax.hu>
- * Copyright (C) 1998,2001,2002 Pavel Machek <pavel@suse.cz>
+ * Copyright (C) 1998,2001-2003 Pavel Machek <pavel@suse.cz>
+ * Copyright (C) 2003 Patrick Mochel <mochel@osdl.org>
+ *
+ * This file is released under the GPLv2.
  *
  * I'd like to thank the following people for their work:
  * 
@@ -681,7 +678,8 @@
 
 static void do_software_suspend(void)
 {
-	arch_prepare_suspend();
+	if (arch_prepare_suspend())
+		panic("Architecture failed to prepare\n");
 	if (pm_prepare_console())
 		printk( "%sCan't allocate a console... proceeding\n", name_suspend);
 	if (!prepare_suspend_processes()) {
@@ -1031,12 +1029,18 @@
 	return error;
 }
 
-/*
- * Called from init kernel_thread.
- * We check if we have an image and if so we try to resume
+/**
+ *	software_resume - Resume from a saved image.
+ *
+ *	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 pm_suspend_disk() ) if everything goes well. 
+ *	Otherwise, we fail gracefully and return to the normally 
+ *	scheduled program.
+ *
  */
-
-void software_resume(void)
+static void software_resume(void)
 {
 	if (num_online_cpus() > 1) {
 		printk(KERN_WARNING "Software Suspend has malfunctioning SMP support. Disabled :(\n");	
@@ -1075,6 +1079,8 @@
 	return;
 }
 
+late_initcall(software_resume);
+
 static int __init resume_setup(char *str)
 {
 	if (resume_status == NORESUME)



-- 
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]

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

* Re: [pm] Make software resume be called at resume
  2003-09-28 22:24 [pm] Make software resume be called at resume Pavel Machek
@ 2003-09-29 16:57 ` Patrick Mochel
  2003-09-29 19:42   ` Pavel Machek
  0 siblings, 1 reply; 3+ messages in thread
From: Patrick Mochel @ 2003-09-29 16:57 UTC (permalink / raw)
  To: Pavel Machek; +Cc: torvalds, kernel list


> [Yes, software_suspend needs to return int and do some error
> handling. But not today, and this is better than random bit flips.]

Random bit flips? I have no idea what you're talking about. 

> --- clean/kernel/power/swsusp.c	2003-09-28 22:06:45.000000000 +0200
> +++ linux/kernel/power/swsusp.c	2003-09-29 00:19:37.000000000 +0200
> @@ -5,7 +5,10 @@
>   * machine suspend feature using pretty near only high-level routines
>   *
>   * Copyright (C) 1998-2001 Gabor Kuti <seasons@fornax.hu>
> - * Copyright (C) 1998,2001,2002 Pavel Machek <pavel@suse.cz>
> + * Copyright (C) 1998,2001-2003 Pavel Machek <pavel@suse.cz>
> + * Copyright (C) 2003 Patrick Mochel <mochel@osdl.org>

Please remove this. I want as little correlation between my name and 
swsusp as possible. 

>  static void do_software_suspend(void)
>  {
> -	arch_prepare_suspend();
> +	if (arch_prepare_suspend())
> +		panic("Architecture failed to prepare\n");

For crying out loud, why? WTF is wrong with:


		printk("Architecture failed to prepare\n");
		return;

? Why do that to your users? 



	Pat


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

* Re: [pm] Make software resume be called at resume
  2003-09-29 16:57 ` Patrick Mochel
@ 2003-09-29 19:42   ` Pavel Machek
  0 siblings, 0 replies; 3+ messages in thread
From: Pavel Machek @ 2003-09-29 19:42 UTC (permalink / raw)
  To: Patrick Mochel; +Cc: torvalds, kernel list

Hi!

> > [Yes, software_suspend needs to return int and do some error
> > handling. But not today, and this is better than random bit flips.]
> 
> Random bit flips? I have no idea what you're talking about. 

If cpu does not support big pagetables, then, during resume,
pagetables are all around the memory and hardware is setting
"accessed" bits in them. Very bad stuff might happen.

> > --- clean/kernel/power/swsusp.c	2003-09-28 22:06:45.000000000 +0200
> > +++ linux/kernel/power/swsusp.c	2003-09-29 00:19:37.000000000 +0200
> > @@ -5,7 +5,10 @@
> >   * machine suspend feature using pretty near only high-level routines
> >   *
> >   * Copyright (C) 1998-2001 Gabor Kuti <seasons@fornax.hu>
> > - * Copyright (C) 1998,2001,2002 Pavel Machek <pavel@suse.cz>
> > + * Copyright (C) 1998,2001-2003 Pavel Machek <pavel@suse.cz>
> > + * Copyright (C) 2003 Patrick Mochel <mochel@osdl.org>
> 
> Please remove this. I want as little correlation between my name and 
> swsusp as possible. 

There are some comments I took from your code, and you have copyright
on them. (I plan to take more of your code.) If you want me not to add
copyright notice next time I copy your code, please say so.

> >  static void do_software_suspend(void)
> >  {
> > -	arch_prepare_suspend();
> > +	if (arch_prepare_suspend())
> > +		panic("Architecture failed to prepare\n");
> 
> For crying out loud, why? WTF is wrong with:
> 
> 
> 		printk("Architecture failed to prepare\n");
> 		return;
> 
> ? Why do that to your users? 

This is changed rather easily...

								Pavel

--- clean/kernel/power/swsusp.c	2003-09-28 22:06:45.000000000 +0200
+++ linux/kernel/power/swsusp.c	2003-09-29 21:39:21.000000000 +0200
@@ -5,7 +5,9 @@
  * machine suspend feature using pretty near only high-level routines
  *
  * Copyright (C) 1998-2001 Gabor Kuti <seasons@fornax.hu>
- * Copyright (C) 1998,2001,2002 Pavel Machek <pavel@suse.cz>
+ * Copyright (C) 1998,2001-2003 Pavel Machek <pavel@suse.cz>
+ *
+ * This file is released under the GPLv2.
  *
  * I'd like to thank the following people for their work:
  * 
@@ -681,7 +678,10 @@
 
 static void do_software_suspend(void)
 {
-	arch_prepare_suspend();
+	if (arch_prepare_suspend()) {
+		printk("%sArchitecture failed to prepare\n", name_suspend);
+		return;
+	}		
 	if (pm_prepare_console())
 		printk( "%sCan't allocate a console... proceeding\n", name_suspend);
 	if (!prepare_suspend_processes()) {
@@ -1031,12 +1031,18 @@
 	return error;
 }
 
-/*
- * Called from init kernel_thread.
- * We check if we have an image and if so we try to resume
+/**
+ *	software_resume - Resume from a saved image.
+ *
+ *	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, then restore the saved image. We will 
+ *	return above (in pm_suspend_disk() ) if everything goes well. 
+ *	Otherwise, we fail gracefully and return to the normally 
+ *	scheduled program.
+ *
  */
-
-void software_resume(void)
+static void software_resume(void)
 {
 	if (num_online_cpus() > 1) {
 		printk(KERN_WARNING "Software Suspend has malfunctioning SMP support. Disabled :(\n");	
@@ -1075,6 +1081,8 @@
 	return;
 }
 
+late_initcall(software_resume);
+
 static int __init resume_setup(char *str)
 {
 	if (resume_status == NORESUME)



-- 
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]

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

end of thread, other threads:[~2003-09-29 19:43 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-09-28 22:24 [pm] Make software resume be called at resume Pavel Machek
2003-09-29 16:57 ` Patrick Mochel
2003-09-29 19:42   ` Pavel Machek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).