linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: Power Management Update
@ 2003-09-10 19:53 Subodh Shrivastava
  2003-09-10 21:09 ` Patrick Mochel
  0 siblings, 1 reply; 28+ messages in thread
From: Subodh Shrivastava @ 2003-09-10 19:53 UTC (permalink / raw)
  To: linux-kernel; +Cc: mochel

Any chance of this  patch to be released against mm series? BTW i have 
tried suspend to disk (2.6.0-test4-mm6) with reiserfs filesystem
it worked fine and no fs corruption.

Thanks
Subodh

PS: please CC me in the reply i am not subscribed to the list.


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

* Re: Power Management Update
  2003-09-10 21:09 ` Patrick Mochel
@ 2003-09-10 20:44   ` Subodh Shrivastava
  2003-09-11  0:12     ` Greg KH
  0 siblings, 1 reply; 28+ messages in thread
From: Subodh Shrivastava @ 2003-09-10 20:44 UTC (permalink / raw)
  To: Patrick Mochel; +Cc: linux-kernel



Patrick Mochel wrote:

>>Any chance of this  patch to be released against mm series? BTW i have 
>>tried suspend to disk (2.6.0-test4-mm6) with reiserfs filesystem
>>it worked fine and no fs corruption.
>>    
>>
>
>Good to hear. Thanks for testing. 
>  
>
Tried it with 2.6.0-test5-mm1.

When i tried suspend to disk with my usb modem (Alcatel Speedtouch) 
attached, system generated oops, couldn't get a dump on disk, will send 
the handwritten oops later. When i tried from X suspend to disk was 
successful but resume failed and system rebooted itself, did not get a 
chance to figure out what went wrong.

>Andrew picked up the last bunch of patches for the -mm series, so most of
>it already resides in that tree. With some luck, he'll do the same with
>
>the remaining patches. Otherwise, I can post an incremental patch on top 
>of the latest -mm kernel.
>
Please if you can

>
>
>	Pat
>
>
>  
>
Subodh


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

* Re: Power Management Update
  2003-09-10 19:53 Power Management Update Subodh Shrivastava
@ 2003-09-10 21:09 ` Patrick Mochel
  2003-09-10 20:44   ` Subodh Shrivastava
  0 siblings, 1 reply; 28+ messages in thread
From: Patrick Mochel @ 2003-09-10 21:09 UTC (permalink / raw)
  To: Subodh Shrivastava; +Cc: linux-kernel


> Any chance of this  patch to be released against mm series? BTW i have 
> tried suspend to disk (2.6.0-test4-mm6) with reiserfs filesystem
> it worked fine and no fs corruption.

Good to hear. Thanks for testing. 

Andrew picked up the last bunch of patches for the -mm series, so most of
it already resides in that tree. With some luck, he'll do the same with
the remaining patches. Otherwise, I can post an incremental patch on top 
of the latest -mm kernel.


	Pat


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

* Re: Power Management Update
  2003-09-10 20:44   ` Subodh Shrivastava
@ 2003-09-11  0:12     ` Greg KH
  0 siblings, 0 replies; 28+ messages in thread
From: Greg KH @ 2003-09-11  0:12 UTC (permalink / raw)
  To: Subodh Shrivastava; +Cc: Patrick Mochel, linux-kernel

On Wed, Sep 10, 2003 at 09:44:36PM +0100, Subodh Shrivastava wrote:
> 
> 
> Patrick Mochel wrote:
> 
> >>Any chance of this  patch to be released against mm series? BTW i have 
> >>tried suspend to disk (2.6.0-test4-mm6) with reiserfs filesystem
> >>it worked fine and no fs corruption.
> >>   
> >>
> >
> >Good to hear. Thanks for testing. 
> > 
> >
> Tried it with 2.6.0-test5-mm1.
> 
> When i tried suspend to disk with my usb modem (Alcatel Speedtouch) 
> attached, system generated oops, couldn't get a dump on disk, will send 
> the handwritten oops later. When i tried from X suspend to disk was 
> successful but resume failed and system rebooted itself, did not get a 
> chance to figure out what went wrong.

There was a patch by Pavel to fix the USB core bug.  To rule this out,
unload the usbcore module before suspending.

Sorry about that.

greg k-h

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

* Re: Power Management Update
       [not found]           ` <20031013194127.GA16791@lps.ens.fr>
@ 2003-10-18  9:48             ` =?unknown-8bit?Q?=C9ric?= Brunet
  0 siblings, 0 replies; 28+ messages in thread
From: =?unknown-8bit?Q?=C9ric?= Brunet @ 2003-10-18  9:48 UTC (permalink / raw)
  To: Patrick Mochel; +Cc: Linux Kernel mailing list

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=unknown-8bit, Size: 9670 bytes --]

Hello,

I have the same symptoms with test8 (by tthe way, did you receive my
previous mail ?): standby sort of works (but fan speed goes up and screen
doesn't blank), mem shuts down the computer but screen stays black when I
hit the power button, and disk starts the suspend process but abort and
resume immediately (with high fan speed). In more details, here is what I
get when I try to suspend to disk:

Freeing unused kernel memory: 152k freed
Stopping tasks: =====|
Freeing memory: ..|
hdc: start_power_step(step: 0)
hdc: completing PM request, suspend
hda: start_power_step(step: 0)
hda: start_power_step(step: 1)
hda: complete_power_step(step: 1, stat: 50, err: 0)
hda: completing PM request, suspend
PM: Attempting to suspend to disk.
PM: snapshotting memory.
PCI: Setting latency timer of device 0000:00:1f.5 to 64
hda: Wakeup request inited, waiting for !BSY...
hda: start_power_step(step: 1000)
blk: queue df5e9a00, I/O limit 4095Mb (mask 0xffffffff)
hda: completing PM request, resume
hdc: Wakeup request inited, waiting for !BSY...
hdc: start_power_step(step: 1000)
hdc: completing PM request, resume
Restarting tasks... done

On Mon, Oct 13, 2003 at 09:41:27PM +0200, ?ric Brunet wrote:
> Hi,
> 
> I have tried today 2.6.0-pre7 and power management in it. My last series
> of tries were with the pre4 plus a series of patches you posted at the
> time. I used the same protocol as before: I boot with init=/bin/sh, mount
> /sys and echo stuff into /sys/power/state without running anything but
> bash (and ls, cd, cat, sleep), without loading any module. On the whole,
> it is for me a regression.  Here are the details:
> 
> standby
> ------
>   half works as before. The computer is standing by, but it is quite
> useless as the screen is not even shut down. Moreover, the sensors on the
> motherboard are reinitialized, which they should not be (I don't have i2c
> modules in the kernel. The bios put the sensors in a certain state where
> the fan is noiseless. If sensors get reinitialized, the fan goes full
> speed and I have no way to slow it down)
> 
> mem
> ---
>   As before. Computer seems to shut down very quickly. When I press the
> power button, fans and/or dosks are spinning, but the screen receives no
> signals (stays on standby). Computer is dead. (no led with caps locks, no
> sysrq, etc.) Have to press 4 seconds power button to shut it down.
> 
> disk
> ----
>   Here comes the regression. When I try to suspend, it starts to do it,
> and then resume instantaneously. It used to work for me. Actually, more
> precisely, it used to work for me until I applied the following patch of
> yours (see message below). I mentionned the fact to you at the time.
> Maybe that patch went mainstream ?
> 
> As before, everything on my computer on
> http://perso.nerim.net/~tudia/bug-reports.
> 
> Regards,
> 
> 	Éric Brunet
> 
> On Wed, Sep 03, 2003 at 03:41:14PM -0700, Patrick Mochel wrote:
> > 
> > > I've tested the patch you submitted for ide-io.c (I've tested it in 
> > > test4-mm5).
> > > It solves the ide-cd problem, and the suspend process get to next step. 
> > > It frees memory. However, just after that, the system get in a loop 
> > > displaying "Bad: scheduling while atomic". I'm not able to capture the 
> > > output of this, the laptop only responding to syrq.
> > > Hope it helps you.
> > 
> > Definitely. I take it you have preempt enabled, right? 
> > 
> > Below is a patch that should fix the problem. The problem was due to the
> > fact that I removed the kernel_fpu_end() call from
> > kernel/power/swsusp.c::swsusp_suspend(). kernel_fpu_end() disables
> > preempt, which causes any subsequent schedule() to trigger that BUG(). I
> > apologize for this regression.
> > 
> > The patch needs a bit more explanation, because I didn't simply replace 
> > the call. Doing so would be a layering violation of the structure of the 
> > code. kernel_fpu_end() is called by save_processor_state(), which is 
> > called by swsusp_arch_suspend(). We should be calling it from the same 
> > chain, and we shouldn't be calling a function from generic code that is 
> > defined on only two architectures. 
> > 
> > I modified swsusp_arch_suspend() to unconditionally call
> > restore_processor_state() when exiting, which provides the same layering. 
> > However, it is still too late WRT to the other things that 
> > swsusp_suspend() was doing (resuming drivers and writing the image). 
> > 
> > Since those are unrelated to snapshotting memory, I divorced them from the 
> > function. swsusp_save() now is the function that is responsible for 
> > snapshoting memory, while swsusp_write() is responsible for writing the 
> > image, only. 
> > 
> > The resulting code is cleaner and more streamlined. It behaves as
> > predicted locally. Please try it and report whether or not it works for 
> > you. 
> > 
> > Andrew, please apply this to -test4-mm5. I realize I said I would not
> > touch swsusp any more, and this patch may become irrelevant in the future. 
> > But, it fixes a real bug now. 
> > 
> > Thanks,
> > 
> > 
> > 	Pat
> > 
> > 
> > ===== arch/i386/power/swsusp.S 1.9 vs edited =====
> > --- 1.9/arch/i386/power/swsusp.S	Fri Aug 22 16:08:57 2003
> > +++ edited/arch/i386/power/swsusp.S	Wed Sep  3 15:23:20 2003
> > @@ -76,10 +76,10 @@
> >  	movl saved_context_edx, %edx
> >  	movl saved_context_esi, %esi
> >  	movl saved_context_edi, %edi
> > -	call restore_processor_state
> >  	pushl saved_context_eflags ; popfl
> >  	call swsusp_resume
> >  .L1449:
> > +	call restore_processor_state
> >  	popl %ebx
> >  	ret
> >  
> > ===== kernel/power/disk.c 1.2 vs edited =====
> > --- 1.2/kernel/power/disk.c	Tue Aug 26 12:25:46 2003
> > +++ edited/kernel/power/disk.c	Wed Sep  3 15:20:10 2003
> > @@ -163,27 +163,27 @@
> >  
> >  	pr_debug("PM: snapshotting memory.\n");
> >  	in_suspend = 1;
> > -	local_irq_disable();
> >  	if ((error = swsusp_save()))
> >  		goto Done;
> >  
> > -	pr_debug("PM: writing image.\n");
> > +	if (in_suspend) {
> > +		pr_debug("PM: writing image.\n");
> >  
> > -	/* 
> > -	 * FIXME: Leftover from swsusp. Are they necessary? 
> > -	 */
> > -	mb();
> > -	barrier();
> > -
> > -	error = swsusp_write();
> > -	if (!error && in_suspend) {
> > -		error = power_down(pm_disk_mode);
> > -		pr_debug("PM: Power down failed.\n");
> > +		/* 
> > +		 * FIXME: Leftover from swsusp. Are they necessary? 
> > +		 */
> > +		mb();
> > +		barrier();
> > +
> > +		error = swsusp_write();
> > +		if (!error) {
> > +			error = power_down(pm_disk_mode);
> > +			pr_debug("PM: Power down failed.\n");
> > +		}
> >  	} else
> >  		pr_debug("PM: Image restored successfully.\n");
> >  	swsusp_free();
> >   Done:
> > -	local_irq_enable();
> >  	finish();
> >  	return error;
> >  }
> > @@ -217,7 +217,6 @@
> >  
> >  	barrier();
> >  	mb();
> > -	local_irq_disable();
> >  
> >  	/* FIXME: The following (comment and mdelay()) are from swsusp. 
> >  	 * Are they really necessary? 
> > @@ -231,7 +230,6 @@
> >  
> >  	pr_debug("PM: Restoring saved image.\n");
> >  	swsusp_restore();
> > -	local_irq_enable();
> >  	pr_debug("PM: Restore failed, recovering.n");
> >  	finish();
> >   Free:
> > ===== kernel/power/swsusp.c 1.62 vs edited =====
> > --- 1.62/kernel/power/swsusp.c	Sat Aug 30 13:23:28 2003
> > +++ edited/kernel/power/swsusp.c	Wed Sep  3 15:23:35 2003
> > @@ -416,11 +416,12 @@
> >  }
> >  
> >  
> > -static int suspend_prepare_image(void)
> > +int swsusp_suspend(void)
> >  {
> >  	struct sysinfo i;
> >  	unsigned int nr_needed_pages = 0;
> >  
> > +	read_swapfiles();
> >  	drain_local_pages();
> >  
> >  	pagedir_nosave = NULL;
> > @@ -486,12 +487,10 @@
> >  static int suspend_save_image(void)
> >  {
> >  	int error;
> > -	local_irq_enable();
> >  	device_resume();
> >  	lock_swapdevices();
> >  	error = write_suspend_image();
> >  	lock_swapdevices();
> > -	local_irq_disable();
> >  	return error;
> >  }
> >  
> > @@ -515,35 +514,16 @@
> >  	if (!resume) {
> >  		save_processor_state();
> >  		SAVE_REGISTERS
> > -		swsusp_suspend();
> > -		return;
> > +		return swsusp_suspend();
> >  	}
> >  	GO_TO_SWAPPER_PAGE_TABLES
> >  	COPY_PAGES_BACK
> >  	RESTORE_REGISTERS
> >  	restore_processor_state();
> > -	swsusp_resume();
> > -
> > +	return swsusp_resume();
> >   */
> >  
> >  
> > -int swsusp_suspend(void)
> > -{
> > -	int error;
> > -	read_swapfiles();
> > -	error = suspend_prepare_image();
> > -	if (!error)
> > -		error = suspend_save_image();
> > -	if (error) {
> > -		printk(KERN_EMERG "%sSuspend failed, trying to recover...\n", 
> > -		       name_suspend);
> > -		barrier();
> > -		mb();
> > -		mdelay(1000);
> > -	}
> > -	return error;
> > -}
> > -
> >  /* More restore stuff */
> >  
> >  /* FIXME: Why not memcpy(to, from, 1<<pagedir_order*PAGE_SIZE)? */
> > @@ -870,11 +850,19 @@
> >  
> >  int swsusp_save(void) 
> >  {
> > +	int error;
> > +
> >  #if defined (CONFIG_HIGHMEM) || defined (COFNIG_DISCONTIGMEM)
> >  	printk("swsusp is not supported with high- or discontig-mem.\n");
> >  	return -EPERM;
> >  #endif
> > -	return arch_prepare_suspend();
> > +	if ((error = arch_prepare_suspend()))
> > +		return error;
> > +	
> > +	local_irq_disable();
> > +	error = swsusp_arch_suspend(0);
> > +	local_irq_enable();
> > +	return error;
> >  }
> >  
> >  
> > @@ -890,7 +878,7 @@
> >  
> >  int swsusp_write(void)
> >  {
> > -	return swsusp_arch_suspend(0);
> > +	return suspend_save_image();
> >  }
> >  
> >  
> > @@ -933,7 +921,11 @@
> >  
> >  int __init swsusp_restore(void)
> >  {
> > -	return swsusp_arch_suspend(1);
> > +	int error;
> > +	local_irq_disable();
> > +	error = swsusp_arch_suspend(1);
> > +	local_irq_enable();
> > +	return error;
> >  }
> >  
> >  

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

* Re: Power Management Update
  2003-09-10  0:38 Patrick Mochel
                   ` (2 preceding siblings ...)
  2003-09-11  4:45 ` Michael Frank
@ 2003-09-11  6:06 ` CaT
  3 siblings, 0 replies; 28+ messages in thread
From: CaT @ 2003-09-11  6:06 UTC (permalink / raw)
  To: Patrick Mochel; +Cc: linux-kernel

On Tue, Sep 09, 2003 at 05:38:53PM -0700, Patrick Mochel wrote:
> A patch against 2.6.0-test5 can be found at 
> 
> 	http://developer.osdl.org/~mochel/patches/test5-pm1/test5-pm1.diff.bz2
> 
> The patches for each individual changeset can be found in that directory. 

Here's my experience with the patch for the various suspend levels (all
activated through /sys/power/state). It looks like there are problems
activating the resume code.

standby:

never turns off screen. just seems to hang after hwsleep-0257. power light
flashes. hitting power button causes power light to stop flashing but no
resume happens. system is hung and powercycle req.

serial console output:

Stopping tasks: ===================================|
hda: start_power_step(step: 0)
hda: start_power_step(step: 1)
hda: complete_power_step(step: 1, stat: 50, err: 0)
hda: completing PM request, suspend
PM: Entering state.
 hwsleep-0257 [15] acpi_enter_sleep_state: Entering sleep state [S1]

mem:

does stopping tasks and laptop powers down. power light flashes as if in
suspend.

serial console output:

Stopping tasks: =================================|

hand typed continued console out:

hda: start_power_step(step: 0)
hda: start_power_step(step: 1)
hda: complete_power_step(step: 1, stat: 50, err: 0)
hda: completing PM request, suspend
PM: Entering state.
 hwsleep-0257 [15] acpi_enter_sleep_state: Entering sleep state [S3]

On resume it is as for standby.

disk (firmware):
activates h/w suspend just fine. bios appears to resume properly (all progress
meters hit 100%) but it never seems to pass control back to the OS (or, at
least, the OS never completes the resume as per above situations)

serial console output:

Stopping tasks: =================================|
Freeing memory: ....................|
hda: start_power_step(step: 0)
hda: start_power_step(step: 1)
hda: complete_power_step(step: 1, stat: 50, err: 0)
hda: completing PM request, suspend
PM: Attempting to suspend to disk.

-- 
"How can I not love the Americans? They helped me with a flat tire the
other day," he said.
	- http://tinyurl.com/h6fo

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

* Re: Power Management Update
  2003-09-10  0:38 Patrick Mochel
  2003-09-10 13:04 ` Daniele Venzano
  2003-09-10 18:10 ` Pavel Machek
@ 2003-09-11  4:45 ` Michael Frank
  2003-09-11  6:06 ` CaT
  3 siblings, 0 replies; 28+ messages in thread
From: Michael Frank @ 2003-09-11  4:45 UTC (permalink / raw)
  To: Patrick Mochel, linux-kernel

Applied test5-pm1.diff to 2.6.0-test5

patch creates drivers/cpufreq/cpufreq_powersave.c, which _is_ already in -test5 

S3/mem PCI LNK's do not resume.

/proc/acpi/alarm hang on wakeup

echo multiple times > /proc/acpi/alarm

Sep 11 12:41:29 mhfl2 kernel: irq 9: nobody cared!
Sep 11 12:41:29 mhfl2 kernel: Call Trace:
Sep 11 12:41:29 mhfl2 kernel:  [<c010c35b>] __report_bad_irq+0x2b/0x90
Sep 11 12:41:29 mhfl2 kernel:  [<c010c363>] __report_bad_irq+0x33/0x90
Sep 11 12:41:29 mhfl2 kernel:  [<c010c438>] note_interrupt+0x50/0x78
Sep 11 12:41:29 mhfl2 kernel:  [<c010c5b2>] do_IRQ+0x96/0xf4
Sep 11 12:41:29 mhfl2 kernel:  [<c010afe8>] common_interrupt+0x18/0x20
Sep 11 12:41:29 mhfl2 kernel:  [<c011de78>] do_softirq+0x48/0xb0
Sep 11 12:41:29 mhfl2 kernel:  [<c010c600>] do_IRQ+0xe4/0xf4
Sep 11 12:41:29 mhfl2 kernel:  [<c010afe8>] common_interrupt+0x18/0x20
Sep 11 12:41:29 mhfl2 kernel:  [<c01e305d>] acpi_os_write_port+0x35/0x50
Sep 11 12:41:29 mhfl2 kernel:  [<c01f852e>] acpi_hw_low_level_write+0x7e/0x11e
Sep 11 12:41:29 mhfl2 kernel:  [<c01f827d>] acpi_hw_register_write+0xb9/0x1c0
Sep 11 12:41:29 mhfl2 kernel:  [<c01f7f96>] acpi_set_register+0x262/0x2d0
Sep 11 12:41:29 mhfl2 kernel:  [<c020cbac>] acpi_system_write_alarm+0x4f0/0x53c
Sep 11 12:41:30 mhfl2 kernel:  [<c0150000>] put_dirty_page+0x68/0xec
Sep 11 12:41:30 mhfl2 kernel:  [<c0147dae>] vfs_write+0x9e/0xd0
Sep 11 12:41:30 mhfl2 kernel:  [<c0147e60>] sys_write+0x30/0x50
Sep 11 12:41:30 mhfl2 kernel:  [<c010adc7>] syscall_call+0x7/0xb
Sep 11 12:41:30 mhfl2 kernel: 
Sep 11 12:41:30 mhfl2 kernel: handlers:
Sep 11 12:41:30 mhfl2 kernel: [<c01e2ebc>] (acpi_irq+0x0/0x1c)
Sep 11 12:41:30 mhfl2 kernel: Disabling IRQ #9

Regards
Michael



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

* Re: Power Management Update
       [not found] <3F5F9509.8080708@btopenworld.com>
@ 2003-09-10 22:51 ` Patrick Mochel
  0 siblings, 0 replies; 28+ messages in thread
From: Patrick Mochel @ 2003-09-10 22:51 UTC (permalink / raw)
  To: Subodh Shrivastava; +Cc: linux-kernel


> Attached here are the digital picture of the oops generated, for suspend 
> to disk with usb modem connected (Alcatel Sppedtouch).

Thanks.

Note that if sending digital photos, please just send them to me 
privately. I don't think many people appreciate getting 1.2M emails. :) 

Thanks,


	Pat


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

* Re: Power Management Update
  2003-09-10  0:38 Patrick Mochel
  2003-09-10 13:04 ` Daniele Venzano
@ 2003-09-10 18:10 ` Pavel Machek
  2003-09-11  4:45 ` Michael Frank
  2003-09-11  6:06 ` CaT
  3 siblings, 0 replies; 28+ messages in thread
From: Pavel Machek @ 2003-09-10 18:10 UTC (permalink / raw)
  To: Patrick Mochel; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 2184 bytes --]

Hi!

> <mochel@osdl.org> (03/09/09 1.1217.3.31)
>    [power] Revert swsusp to 2.6.0-test3 state.
>    
>    - From Pavel (mostly, though with some fixups).
>    - Note that I would never publically admit to putting such code into the 
>      kernel. 
>    - Someone ought to really review this patch some day. 

@@ -6,11 +6,12 @@
 #include <asm/desc.h>
 #include <asm/i387.h>

-static inline void
+static inline int
 arch_prepare_suspend(void)
 {
        if (!cpu_has_pse)
-               panic("pse required");
+               return -EPERM;
+       return 0;
 }

 /* image of the saved processor state */

You still want to do some printk(), otherwise we'll get very ugly bug
reports ("it does not suspend and I don't know why"). Also without
check in swsusp.c, this could corrupt data (page table accessed bits
might flip something during copy).

--- /usr/src/tmp/linux/kernel/power/swsusp.c	2003-09-10 19:58:08.000000000 +0200
+++ /usr/src/linux/kernel/power/swsusp.c	2003-09-10 19:57:16.000000000 +0200
@@ -697,7 +697,8 @@
 static void do_software_suspend(void)
 {
 	printk("Doing software_suspend()\n");
-	arch_prepare_suspend();
+	if (arch_prepare_suspend())
+		return;
 	if (pm_prepare_console())
 		printk( "%sCan't allocate a console... proceeding\n", name_suspend);
 	if (!prepare_suspend_processes()) {


Minor nits:

--- linux-2.5-virgin/kernel/power/pmdisk.c      Wed Dec 31 16:00:00 1969
+++ linux-2.5-power/kernel/power/pmdisk.c       Tue Sep  9 13:54:33 2003
@@ -0,0 +1,942 @@
+/*
+ * kernel/power/pmdisk.c - Suspend-to-disk implmentation
                                                ~ missing 'e'


+                               /* we ignore all swap devices that are
not the resume_file */
+                               if (1) {
+// FIXME                               if(resume_device ==
swap_info[i].swap_device) {
+                                       swapfile_used[i] =
SWAPFILE_SUSPEND;

If you want this FIXME fixed, I got patch from Aristeu Sergio Rozanski
Filho <aris@cathedrallabs.org>. Not yet tested, that's why I was
holding it. (attached).

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

[-- Attachment #2: delme_swsusp-swap_name.diff --]
[-- Type: text/plain, Size: 1407 bytes --]

# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#	           ChangeSet	1.1291  -> 1.1292 
#	kernel/power/swsusp.c	1.58    -> 1.59   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 03/08/28	aris@cathedrallabs.org	1.1292
# o only use swap device specified in resume= option
# --------------------------------------------
#
diff -Nru a/kernel/power/swsusp.c b/kernel/power/swsusp.c
--- a/kernel/power/swsusp.c	Thu Aug 28 21:07:20 2003
+++ b/kernel/power/swsusp.c	Thu Aug 28 21:07:20 2003
@@ -216,6 +216,7 @@
 static void read_swapfiles(void) /* This is called before saving image */
 {
 	int i, len;
+	char buff[sizeof(resume_file)], *sname;
 	
 	len=strlen(resume_file);
 	root_swap = 0xFFFF;
@@ -234,8 +235,11 @@
 					swapfile_used[i] = SWAPFILE_IGNORED;				  
 			} else {
 	  			/* we ignore all swap devices that are not the resume_file */
-				if (1) {
-// FIXME				if(resume_device == swap_info[i].swap_device) {
+				sname = d_path(swap_info[i].swap_file->f_dentry,
+					       swap_info[i].swap_file->f_vfsmnt,
+					       buff,
+					       sizeof(buff));
+				if (!strcmp(sname, resume_file)) {
 					swapfile_used[i] = SWAPFILE_SUSPEND;
 					root_swap = i;
 				} else {

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

* Re: Power Management Update
  2003-09-10  0:38 Patrick Mochel
@ 2003-09-10 13:04 ` Daniele Venzano
  2003-09-10 18:10 ` Pavel Machek
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 28+ messages in thread
From: Daniele Venzano @ 2003-09-10 13:04 UTC (permalink / raw)
  To: Patrick Mochel; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1507 bytes --]

On Tue, Sep 09, 2003 at 05:38:53PM -0700, Patrick Mochel wrote:
> 
> A patch against 2.6.0-test5 can be found at 
> 
> 	http://developer.osdl.org/~mochel/patches/test5-pm1/test5-pm1.diff.bz2
> 

I tried your patch on a Asus L3D, and here are the results:

echo -n standby > /sys/power/state
----------------------------------
Works fine, but on resume I get this message:
APIC error on CPU0: 00(00)
The resume continues and completes, but then it switches to init 0 and
halts.
So this is what happens:
- standby
- resume (with the above message)
- init 0 (this I have still to understand...)
If not for the init 0 part, that's ok.

echo -n mem > /sys/power/state
------------------------------
Suspend seems to go well, but on resume the screen stays black, I hear
the fan turning up, then nothing else. The machine doesn't respond
to pings or sysrq, hard reset required.
Removing the ehci module, I get something more strange, the resume seems
to go well, but the screen remains turned off (I'm not using framebuffer
or X). After some disk activity, the power led goes off. I think it is
againg going in init 0 just after resume.
Reading logs confirms this idea, it is going in init 0 just after
resuming completes.

Couldn't try disk suspend for time constraints, perhaps next days...

Someone has a clue on why it is switching to init 0 ?

Attached you find dmesg and tipical suspend->resume messages

-- 
----------------------------------------
Daniele Venzano
Web: http://digilander.iol.it/webvenza/


[-- Attachment #2: dmesg --]
[-- Type: text/plain, Size: 11797 bytes --]

Linux version 2.6.0-test5 (venza@tabr) (gcc version 3.3.1 20030626 (Debian prerelease)) #4 Wed Sep 10 12:59:26 CEST 2003
Video mode to be used for restore is ffff
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
 BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 000000001dfea000 (usable)
 BIOS-e820: 000000001dfea000 - 000000001dfef000 (ACPI data)
 BIOS-e820: 000000001dfef000 - 000000001dfff000 (reserved)
 BIOS-e820: 000000001dfff000 - 000000001e000000 (ACPI NVS)
 BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
479MB LOWMEM available.
On node 0 totalpages: 122858
  DMA zone: 4096 pages, LIFO batch:1
  Normal zone: 118762 pages, LIFO batch:16
  HighMem zone: 0 pages, LIFO batch:1
DMI 2.3 present.
ACPI: RSDP (v000 ASUS                                      ) @ 0x000f6e10
ACPI: RSDT (v001 ASUS   L3000D   0x42302e31 MSFT 0x31313031) @ 0x1dfea000
ACPI: FADT (v001 ASUS   L3000D   0x42302e31 MSFT 0x31313031) @ 0x1dfea080
ACPI: BOOT (v001 ASUS   L3000D   0x42302e31 MSFT 0x31313031) @ 0x1dfea040
ACPI: DSDT (v001   ASUS L3000D   0x00001000 MSFT 0x0100000e) @ 0x00000000
ACPI: MADT not present
Building zonelist for node : 0
Kernel command line: root=/dev/hda3
Local APIC disabled by BIOS -- reenabling.
Found and enabled local APIC!
Initializing CPU#0
PID hash table entries: 2048 (order 11: 16384 bytes)
Detected 1674.442 MHz processor.
Console: colour VGA+ 80x25
Memory: 482772k/491432k available (1889k kernel code, 7868k reserved, 782k data, 136k init, 0k highmem)
Calibrating delay loop... 3309.56 BogoMIPS
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
-> /dev
-> /dev/console
-> /root
CPU:     After generic identify, caps: 0383fbff c1cbfbff 00000000 00000000
CPU:     After vendor identify, caps: 0383fbff c1cbfbff 00000000 00000000
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 256K (64 bytes/line)
CPU:     After all inits, caps: 0383fbff c1cbfbff 00000000 00000020
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU: AMD mobile AMD Athlon(tm) XP-M 2000+ stepping 01
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
enabled ExtINT on CPU#0
ESR value before enabling vector: 00000000
ESR value after enabling vector: 00000000
Using local APIC timer interrupts.
calibrating APIC timer ...
..... CPU clock speed is 1673.0401 MHz.
..... host bus clock speed is 267.0744 MHz.
NET: Registered protocol family 16
spurious 8259A interrupt: IRQ7.
PCI: PCI BIOS revision 2.10 entry at 0xf1050, last bus=1
mtrr: v2.0 (20020519)
ACPI: Subsystem revision 20030813
   tbget-0292: *** Info: Table [DSDT] replaced by host OS
 tbxface-0117 [03] acpi_load_tables      : ACPI Tables successfully acquired
Parsing all Control Methods:....................................................................................................................................................................................................
Table [DSDT](id F004) - 558 Objects with 54 Devices 196 Methods 22 Regions
ACPI Namespace successfully loaded at root c03d069c
evxfevnt-0093 [04] acpi_enable           : Transition to ACPI mode successful
evgpeblk-0748 [06] ev_create_gpe_block   : GPE 00 to 15 [_GPE] 2 regs at 000000000000E420 on int 9
evgpeblk-0748 [06] ev_create_gpe_block   : GPE 16 to 31 [_GPE] 2 regs at 000000000000E430 on int 9
Completing Region/Field/Buffer/Package initialization:....................................................................
Initialized 22/22 Regions 0/0 Fields 21/21 Buffers 25/25 Packages (566 nodes)
Executing all Device _STA and_INI methods:.......................................................
55 Devices found containing: 55 _STA, 2 _INI methods
ACPI: Interpreter enabled
ACPI: Using PIC for interrupt routing
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 *11 14 15)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 *5 6 7 11 14 15)
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 11 14 15, enabled at IRQ 9)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 *11 14 15)
ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 *9 11 14 15)
ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 *9 11 14 15)
ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 *9 11 14 15)
ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 *9 11 14 15)
ACPI: PCI Root Bridge [PCI0] (00:00)
PCI: Probing PCI hardware (bus 00)
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCI1._PRT]
ACPI: Power Resource [FN0] (on)
Linux Plug and Play Support v0.97 (c) Adam Belay
PnPBIOS: Scanning system for PnP BIOS support...
PnPBIOS: Found PnP BIOS installation structure at 0xc00fbf10
PnPBIOS: PnP BIOS version 1.0, entry 0xf0000:0xbf40, dseg 0xf0000
PnPBIOS: 15 nodes reported by PnP BIOS; 15 recorded by driver
Linux Kernel Card Services 3.1.22
  options:  [pci] [cardbus] [pm]
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 5
ACPI: PCI Interrupt Link [LNKE] enabled at IRQ 11
ACPI: PCI Interrupt Link [LNKF] enabled at IRQ 5
ACPI: PCI Interrupt Link [LNKG] enabled at IRQ 11
ACPI: PCI Interrupt Link [LNKH] enabled at IRQ 5
ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 11
ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 5
ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 11
PCI: Using ACPI for IRQ routing
PCI: if you experience problems, try using option 'pci=noacpi' or even 'acpi=off'
pty: 256 Unix98 ptys configured
SBF: Simple Boot Flag extension found and enabled.
SBF: Setting boot flags 0x1
powernow: AMD K7 CPU detected.
powernow: PowerNOW! Technology present. Can scale: frequency and voltage.
powernow: Found PSB header at c00f0320
powernow: Table version: 0x12
powernow: Flags: 0x0 (Mobile voltage regulator)
powernow: Settling Time: 100 microseconds.
powernow: Has 1 PST tables. (Only dumping ones relevant to this CPU).
powernow: PST:0 (@c00f0330)
powernow:  cpuid: 0x781	fsb: 133	maxFID: 0x3	startvid: 0xb
powernow:    FID: 0x12 (4.0x [532MHz])	VID: 0x13 (1.200V)
powernow:    FID: 0x4 (5.0x [665MHz])	VID: 0x13 (1.200V)
powernow:    FID: 0x8 (7.0x [931MHz])	VID: 0x13 (1.200V)
powernow:    FID: 0xc (9.0x [1197MHz])	VID: 0xe (1.300V)
powernow:    FID: 0x0 (11.0x [1463MHz])	VID: 0xc (1.400V)
powernow:    FID: 0x3 (12.5x [1662MHz])	VID: 0xb (1.450V)

powernow: Minimum speed 532 MHz. Maximum speed 1662 MHz.
devfs: v1.22 (20021013) Richard Gooch (rgooch@atnf.csiro.au)
devfs: boot_options: 0x1
Initializing Cryptographic API
ACPI: AC Adapter [AC] (on-line)
ACPI: Battery Slot [BAT0] (battery present)
ACPI: Power Button (FF) [PWRF]
ACPI: Sleep Button (CM) [SLPB]
ACPI: Lid Switch [LID]
ACPI: Fan [FAN0] (on)
ACPI: Processor [CPU0] (supports C1 C2, 8 throttling states)
ACPI: Thermal Zone [THRM] (57 C)
Asus Laptop ACPI Extras version 0.24a
  L3D model detected, supported
  Notify Handler installed successfully
Real Time Clock Driver v1.12
Linux agpgart interface v0.100 (c) Dave Jones
agpgart: Detected SiS 740 chipset
agpgart: Maximum main memory to use for agp memory: 409M
agpgart: AGP aperture is 64M @ 0xe8000000
Serial: 8250/16550 driver $Revision: 1.90 $ IRQ sharing disabled
ttyS0 at I/O 0x3f8 (irq = 4) is a NS16550A
ttyS1 at I/O 0x2f8 (irq = 3) is a NS16550A
Using anticipatory scheduling io scheduler
Floppy drive(s): fd0 is 1.44M
FDC 0 is a National Semiconductor PC87306
sis900.c: v1.08.06 9/24/2002
eth0: ICS LAN PHY transceiver found at address 1.
eth0: Using transceiver found at address 1 as default
eth0: SiS 900 PCI Fast Ethernet at 0xa000, IRQ 11, 00:0c:6e:6c:29:6e.
PPP generic driver version 2.4.2
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
SIS5513: IDE controller at PCI slot 0000:00:02.5
SIS5513: chipset revision 0
SIS5513: not 100% native mode: will probe irqs later
SIS5513: SiS 962/963 MuTIOL IDE UDMA133 controller
    ide0: BM-DMA at 0xb800-0xb807, BIOS settings: hda:DMA, hdb:pio
    ide1: BM-DMA at 0xb808-0xb80f, BIOS settings: hdc:DMA, hdd:pio
hda: IC25N040ATMR04-0, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hdc: TOSHIBA DVD-ROM SD-R2312, ATAPI CD/DVD-ROM drive
ide1 at 0x170-0x177,0x376 on irq 15
hda: max request size: 1024KiB
hda: 78140160 sectors (40007 MB) w/1740KiB Cache, CHS=16383/255/63, UDMA(100)
 /dev/ide/host0/bus0/target0/lun0: p1 p2 p3 p4 < p5 p6 p7 >
end_request: I/O error, dev hdc, sector 0
hdc: ATAPI 24X DVD-ROM CD-R/RW drive, 2048kB Cache, UDMA(33)
Uniform CD-ROM driver Revision: 3.12
mice: PS/2 mouse device common for all mice
i8042.c: Detected active multiplexing controller, rev 1.1.
serio: i8042 AUX0 port at 0x60,0x64 irq 12
serio: i8042 AUX1 port at 0x60,0x64 irq 12
serio: i8042 AUX2 port at 0x60,0x64 irq 12
Synaptics Touchpad, model: 1
 Firware: 4.6
 180 degree mounted touchpad
 Sensor: 18
 new absolute packet format
 Touchpad has extended capability bits
 -> four buttons
 -> multifinger detection
 -> palm detection
input: Synaptics Synaptics TouchPad on isa0060/serio4
serio: i8042 AUX3 port at 0x60,0x64 irq 12
input: AT Set 2 keyboard on isa0060/serio0
serio: i8042 KBD port at 0x60,0x64 irq 1
NET: Registered protocol family 2
IP: routing cache hash table of 4096 buckets, 32Kbytes
TCP: Hash tables configured (established 32768 bind 65536)
NET: Registered protocol family 1
NET: Registered protocol family 17
PM: Reading pmdisk image.
pmdisk: Resume From Partition: /dev/hda2, Device: hda2
pmdisk: Invalid partition type.
Resume Machine: Error -22 resuming
PM: Resume from disk failed.
ACPI: (supports S0 S1 S3 S4 S5)
kjournald starting.  Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
Mounted devfs on /dev
Freeing unused kernel memory: 136k freed
Adding 3654748k swap on /dev/hda7.  Priority:-1 extents:1
EXT3 FS on hda3, internal journal
NET: Registered protocol family 10
IPv6 over IPv4 tunneling driver
intel8x0: clocking to 48000
i2c-sis96x version 1.0.0
EXT2-fs warning (device hda5): ext2_fill_super: mounting ext3 filesystem as ext2

EXT2-fs warning (device hda6): ext2_fill_super: mounting ext3 filesystem as ext2

NTFS driver 2.1.4 [Flags: R/O MODULE].
NTFS volume version 3.0.
drivers/usb/core/usb.c: registered new driver usbfs
drivers/usb/core/usb.c: registered new driver hub
ehci_hcd 0000:00:03.3: EHCI Host Controller
ehci_hcd 0000:00:03.3: irq 5, pci mem de9f7000
ehci_hcd 0000:00:03.3: new USB bus registered, assigned bus number 1
PCI: cache line size of 64 is not supported by device 0000:00:03.3
ehci_hcd 0000:00:03.3: USB 2.0 enabled, EHCI 1.00, driver 2003-Jun-13
hub 1-0:0: USB hub found
hub 1-0:0: 6 ports detected
ohci-hcd: 2003 Feb 24 USB 1.1 'Open' Host Controller (OHCI) Driver (PCI)
ohci-hcd: block sizes: ed 64 td 64
ohci-hcd 0000:00:03.0: OHCI Host Controller
ohci-hcd 0000:00:03.0: irq 11, pci mem dea11000
ohci-hcd 0000:00:03.0: new USB bus registered, assigned bus number 2
hub 2-0:0: USB hub found
hub 2-0:0: 2 ports detected
ohci-hcd 0000:00:03.1: OHCI Host Controller
ohci-hcd 0000:00:03.1: irq 5, pci mem dea26000
ohci-hcd 0000:00:03.1: new USB bus registered, assigned bus number 3
hub 3-0:0: USB hub found
hub 3-0:0: 2 ports detected
ohci-hcd 0000:00:03.2: OHCI Host Controller
ohci-hcd 0000:00:03.2: irq 11, pci mem dea28000
ohci-hcd 0000:00:03.2: new USB bus registered, assigned bus number 4
hub 4-0:0: USB hub found
hub 4-0:0: 2 ports detected
Disabled Privacy Extensions on device c036c0e0(lo)
eth0: Media Link On 10mbps half-duplex 
eth0: no IPv6 routers present

[-- Attachment #3: susp.log --]
[-- Type: text/plain, Size: 2830 bytes --]

Sep 10 14:03:55 tabr kernel: PM: Preparing system for suspend
Sep 10 14:03:55 tabr kernel: Stopping tasks: ====================================|
Sep 10 14:03:55 tabr kernel:      osl-0900 [56] os_wait_semaphore     : Failed to acquire semaphore[ddfe85a0|1|0], AE_TIME
Sep 10 14:03:55 tabr kernel: hdc: start_power_step(step: 0)
Sep 10 14:03:55 tabr kernel: hdc: completing PM request, suspend
Sep 10 14:03:55 tabr kernel: hda: start_power_step(step: 0)
Sep 10 14:03:55 tabr kernel: hda: start_power_step(step: 1)
Sep 10 14:03:55 tabr kernel: hda: complete_power_step(step: 1, stat: 50, err: 0)
Sep 10 14:03:55 tabr kernel: hda: completing PM request, suspend
Sep 10 14:03:55 tabr kernel: PM: Entering state.
Sep 10 14:03:55 tabr kernel:  hwsleep-0257 [25] acpi_enter_sleep_state: Entering sleep state [S3]
Sep 10 14:03:55 tabr kernel: Back to C!
Sep 10 14:03:55 tabr kernel: PM: Finishing up.
Sep 10 14:03:55 tabr kernel: hda: Wakeup request inited, waiting for !BSY...
Sep 10 14:03:55 tabr kernel: hda: start_power_step(step: 1000)
Sep 10 14:03:55 tabr kernel: blk: queue dddf6600, I/O limit 4095Mb (mask 0xffffffff)
Sep 10 14:03:55 tabr kernel: hda: completing PM request, resume
Sep 10 14:03:55 tabr kernel: hdc: Wakeup request inited, waiting for !BSY...
Sep 10 14:03:55 tabr kernel: hdc: start_power_step(step: 1000)
Sep 10 14:03:55 tabr kernel: hdc: completing PM request, resume
Sep 10 14:03:55 tabr kernel: Restarting tasks...atkbd.c: frame/parity error: 02
Sep 10 14:03:55 tabr kernel: atkbd.c: frame/parity error: 02
Sep 10 14:03:55 tabr kernel:  done
Sep 10 14:03:55 tabr kernel: Losing too many ticks!
Sep 10 14:03:55 tabr kernel: TSC cannot be used as a timesource. (Are you running with SpeedStep?)
Sep 10 14:03:55 tabr kernel: Falling back to a sane timesource.
Sep 10 14:04:06 tabr kernel: ohci-hcd 0000:00:03.0: remove, state 85
Sep 10 14:04:06 tabr kernel: usb usb2: USB disconnect, address 1
Sep 10 14:04:06 tabr kernel: ohci-hcd 0000:00:03.0: USB bus 2 deregistered
Sep 10 14:04:06 tabr kernel: ohci-hcd 0000:00:03.1: remove, state 85
Sep 10 14:04:06 tabr kernel: usb usb3: USB disconnect, address 1
Sep 10 14:04:06 tabr kernel: ohci-hcd 0000:00:03.1: USB bus 3 deregistered
Sep 10 14:04:06 tabr kernel: ohci-hcd 0000:00:03.2: remove, state 85
Sep 10 14:04:06 tabr kernel: usb usb4: USB disconnect, address 1
Sep 10 14:04:06 tabr kernel: ohci-hcd 0000:00:03.2: USB bus 4 deregistered
Sep 10 14:04:06 tabr kernel: drivers/usb/core/usb.c: deregistering driver usbfs
Sep 10 14:04:06 tabr kernel: drivers/usb/core/usb.c: deregistering driver hub
Sep 10 14:04:06 tabr kernel: Kernel logging (proc) stopped.
Sep 10 14:04:06 tabr kernel: Kernel log daemon terminating.
Sep 10 14:04:57 tabr kernel: klogd 1.4.1#10, log source = /proc/kmsg started.
Sep 10 14:04:57 tabr kernel: Inspecting /boot/System.map-2.6.0-test5


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

* Power Management Update
@ 2003-09-10  0:38 Patrick Mochel
  2003-09-10 13:04 ` Daniele Venzano
                   ` (3 more replies)
  0 siblings, 4 replies; 28+ messages in thread
From: Patrick Mochel @ 2003-09-10  0:38 UTC (permalink / raw)
  To: linux-kernel


Here is the next round of power management updates. BK users can get the 
changesets listed below from 

	bk://kernel.bkbits.net:/home/mochel/linux-2.5-power

A patch against 2.6.0-test5 can be found at 

	http://developer.osdl.org/~mochel/patches/test5-pm1/test5-pm1.diff.bz2

The patches for each individual changeset can be found in that directory. 

The changesets there, and listed below, are cumulative, meaning they 
include all of the patches I posted last week. The highlights from this 
release are the following: 

- Fixed suspend-to-disk support with preempt and SMP enabled. 

Suspend-to-disk will work on a UP system with SMP enabled, though it will 
definitely not on an SMP system. This is on the TODO list, albeit at low 
priority. 

- Several small bug fixes. 

- swsusp has been forked into two workable trees. 

The code base of swsusp itself has been reverted to its state around
2.6.0-test3. A suspend-to-disk implementation called 'pmdisk' has been
created in kernel/power/pmdisk.c that offers (for now) identical 
functionality, and an almost identical code base. That will change in the 
near future, as I submit more cleanups to it. 

The pmdisk implementation is accessible via the sysfs interface:

	echo -n disk > /sys/power/state

While swsusp is accessible via the /proc/acpi/sleep interface. It is 
possible to tie swsusp into the sysfs interface, and will entertain 
patches to do such a thing. 

Note the new config menu options for pmdisk when building the kernel. 


There is still a lot to do, including fixing the random crashes that some
people are experiencing. I appreciate the testing people have done, and
will appreciate any feedback concerning the patches or the functionality
the patches implement.

Enjoy.

Thanks,


	Pat



This will update the following files:

 arch/i386/kernel/suspend.c     |  141 ----
 arch/i386/kernel/suspend_asm.S |   94 ---
 arch/i386/Kconfig              |   44 -
 arch/i386/Makefile             |    1 
 arch/i386/kernel/Makefile      |    2 
 arch/i386/power/Makefile       |    3 
 arch/i386/power/cpu.c          |  141 ++++
 arch/i386/power/pmdisk.S       |   94 +++
 arch/i386/power/swsusp.S       |  126 +++-
 drivers/acpi/sleep/main.c      |   53 +
 drivers/acpi/sleep/proc.c      |   73 ++
 drivers/acpi/sleep/sleep.h     |    3 
 drivers/base/core.c            |   33 -
 drivers/base/power/main.c      |   13 
 drivers/base/power/power.h     |    3 
 drivers/base/power/resume.c    |   21 
 drivers/base/power/suspend.c   |   10 
 include/asm-i386/suspend.h     |    7 
 include/linux/suspend.h        |   15 
 kernel/power/Kconfig           |   92 +++
 kernel/power/Makefile          |    5 
 kernel/power/console.c         |    2 
 kernel/power/disk.c            |  427 +++++++++++++--
 kernel/power/main.c            |  459 +++-------------
 kernel/power/pmdisk.c          | 1162 +++++++++++++++++++++++++++++++++++++----
 kernel/power/power.h           |   41 -
 kernel/power/swsusp.c          | 1095 ++++++++++++++++++++++----------------
 kernel/sched.c                 |    4 
 kernel/sys.c                   |    9 
 29 files changed, 2804 insertions(+), 1369 deletions(-)

through these ChangeSets:

<mochel@osdl.org> (03/09/09 1.1217.3.32)
   [swsusp] Fix software_suspend() inline return value when SOFTWARE_SUSPEND=n.

<mochel@osdl.org> (03/09/09 1.1217.3.31)
   [power] Revert swsusp to 2.6.0-test3 state.
   
   - From Pavel (mostly, though with some fixups).
   - Note that I would never publically admit to putting such code into the 
     kernel. 
   - Someone ought to really review this patch some day. 

<mochel@osdl.org> (03/09/09 1.1217.3.30)
   [power] Make pmdisk compile when CONFIG_SOFTWARE_SUSPEND=n.

<mochel@osdl.org> (03/09/09 1.1217.3.29)
   [power] Make pmdisk compilable and usable.
   
   - Fork arch/i386/power/swsusp.S into arch/i386/power/pmdisk.S
   - Change name of all externally visible swsusp_* functions to pmdisk_*
   - Make pm_suspend_disk() call pmdisk_ functions.
   - Make sure pmdisk.o is compiled if the config option is set.
   - Add CONFIG_PM_DISK_PARTITION option, which allows user to compile in 
     default resume partition.
   - Add pmdisk= setup option, which allows user to override or disable default
     resume partition.
   - Change name of global names in pmdisk that conflict with those in swsusp.

<mochel@osdl.org> (03/09/09 1.1217.3.27)
   [power] Move PM options into kernel/power/Kconfig.
   
   - Add option for CONFIG_PM_DISK (suspend-to-disk functionality).
   
   - Other arch's should include this, instead of defining their own options. 
     Will fixup any problems with that..

<mochel@osdl.org> (03/09/09 1.1217.3.26)
   [power] Fork swsusp. 
   
   The cloned implementation is in kernel/power/pmdisk.c.

<mochel@osdl.org> (03/09/08 1.1217.3.24)
   [power] Fix swsusp with preempt and clean up.
   
   In order to snapshot memory, interrupts must be disabled. However, in order
   to write the saved image to disk, interrupts must be re-enabled and devices
   resumed. Previously, both actions were called from swsusp_arch_suspend().
   
   This patch separates those two actions has only the snapshotting routine 
   called from swsusp_arch_suspend(). swsusp now handles it's own disabling of
   interrupts only for the time required. This is now handled from swsusp_save()
   and swsusp_write() now handles writing the image only (called with interrupts
   enabled).
   
   swsusp_save_image() was renamed to swsusp_suspend() (and the old incarnation
   deleted since it was simply a wrapper).

<mochel@osdl.org> (03/09/08 1.1217.3.23)
   [swsusp] Make sure we call restore_processor_state() when suspending.
   
   - Added unconditionally to exit path of swsusp_arch_suspend(). This is done
     to call kernel_fpu_end() to reset the preempt count on suspend.
   
   - Note that we must preserve %eax across that call.

<mochel@osdl.org> (03/09/08 1.1217.3.22)
   [power] Add support for refrigerator to the migration_thread.
   
   - The PM code currently must signal each kernel thread when suspending, and
     each thread must call refrigerator() to stop itself. This patch adds 
     support for this to migration_thread, which allows suspend states to work
     on an SMP-enabled kernel (though not necessarily an SMP machine).
   
   - Note I do not know why the process freezing code was designed in such a 
     way. One would think we could do it without having to call each thread
     individually, and fix up the threads that need special work individually..

<mochel@osdl.org> (03/09/08 1.1217.3.21)
   [power] Make sure we restore interrupts if device_power_down() fails.

<mochel@osdl.org> (03/09/08 1.1217.3.20)
   [power] Simplify error handling in pm_suspend_prepare().

<mochel@osdl.org> (03/09/04 1.1153.114.3)
   [power] Whitespace fixes.
   
   From the -test4-mm5 tree.

<mochel@osdl.org> (03/08/30 1.1153.76.10)
   [acpi] Replace /proc/acpi/sleep
   
   - Bad to remove proc file now, even though it's nearly useless. Reinstated
     in the name of compatibility. 
   
   - Restored original semantics - if software_suspend() is enabled, then just
     call that (and never go into low-power state). Otherwise, call acpi_suspend().
   
   - acpi_suspend() is simply a wrapper for pm_suspend(), passing down the right
     argument. This is so we don't have to do everything manually anymore.
   
   - Fixed long-standing bug by checking for "4b" in string written in to 
     determine if we want to enter S4bios.

<mochel@osdl.org> (03/08/30 1.1153.76.9)
   [swsusp] Restore software_suspend() call.
   
   - Allows 'backdoor' interface to swsusp, as requested by Pavel. 
   
   - Simply a wrapper to pm_suspend(), though guaranteeing that swsusp is used,
     and system is shutdown (and put into low-power state).
   
   - Call in sys_reboot() changed back to call to software_suspend().

<mochel@osdl.org> (03/08/30 1.1153.76.8)
   [swsusp] Use BIO interface when reading from swap. 
   
   - bios are the preferred method for doing this type of stuff in 2.6. The 
     __bread() uses bio's in the end anyway. 
   
   - bios make it really easy to implement write functionality, so we are able
     to reset the swap signature immediately after checking it during resume.
     So, if something happens while resuming, we will still have valid swap to 
     use. 
   
   - Thanks to Jens for some help in getting it working several months ago.

<mochel@osdl.org> (03/08/29 1.1153.76.7)
   [swsusp] Minor cleanups in read_suspend_image()
   
   - Make resume_bdev global to file, so we don't have to pass it around (we 
     always use the same one, so it shouldn't make a difference).
   
   - Allocate cur in read_suspend_image(), since it's the only function that
     uses it. 
   
   - Check all errors and make sure we free cur if any happen.
   
   - Make sure to return errors from the functions called, not our own. 
   
   - Free the pagedir if we hit an error after we allocate it. 

<mochel@osdl.org> (03/08/27 1.1153.76.6)
   [acpi] Move register save closer to call to enter sleep state.
   
   - By moving acpi_{save,restore}_state_mem() into acpi_pm_enter(), implying
     after interrupts have been disabled and nothing else is running on the 
     system, S3 is able to resume properly.

<mochel@osdl.org> (03/08/27 1.1153.76.5)
   [power] Make sure devices get added to the PM lists before bus_add_device().
   
   - Prevents ordering issues when drivers add more devices ->probe(). 

<mochel@osdl.org> (03/08/26 1.1153.76.4)
   [power] Separate suspend-to-disk from other suspend sequences.
   
   - Put in kernel/power/disk.c
   - Make compilation depend on CONFIG_SOFTWARE_SUSPEND (should probably be 
     renamed to CONFIG_PM_STD or some such).

<mochel@osdl.org> (03/08/25 1.1153.76.3)
   [power] Fix handling of pm_users.
   
   - Actually decrement on device_pm_release()
   - Call from device_pm_remove().

<mochel@osdl.org> (03/08/25 1.1153.76.1)
   [power] Fix device suspend handling
   
   - Handle -EAGAIN in device_suspend() properly: keep going, with error reset
     to 0. 
   
   - Call dpm_resume() if we got a real error, instead of device_resume(), which
     would deadlock.

<mochel@osdl.org> (03/08/22 1.1153.60.8)
   [power] swsusp Cleanups
   
   - do_magic()
     - Rename to swsusp_arch_suspend().
     - Move declaration to swsusp.c
   
   - arch_prepare_suspend()
     - Return an int
     - Fix x86 version to return -EFAULT if cpu does not have pse, instead of 
       calling panic().
     - Call from swsusp_save().
   
   - do_magic_suspend_1()
     - Move body to pm_suspend_disk()
     - Remove.
   
   - do_magic_suspend_2()
     - Rename to swsusp_suspend()
     - Move IRQ fiddling to suspend_save_image(), since that's the only call 
       that needs it. 
     - Return an int.
   
   - do_magic_resume_1()
     - Move body to pm_resume().
     - Remove
   
   - do_magic_resume_2()
     - Rename to swsusp_resume(). 
     - Return an int. 
   
   - swsusp general
     - Remove unnecessary includes.
     - Remove suspend_pagedir_lock, since it was only used to disable IRQs.
     - Change swsusp_{suspend,resume} return an int, so pm_suspend_disk() knows
       if anything failed. 
   
    

<mochel@osdl.org> (03/08/22 1.1153.60.7)
   [power] Move i386-specific swsusp code to arch/i386/power/

<mochel@osdl.org> (03/08/22 1.1153.60.6)
   [power] Fix up sysfs state handling.

<mochel@osdl.org> (03/08/22 1.1153.60.5)
   [power] Make sure console level is high when suspending.

<mochel@osdl.org> (03/08/22 1.1153.62.1)
   [power] Fix sysfs state reporting.




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

* Re: Power Management Update
  2003-09-09 10:53       ` Éric Brunet
@ 2003-09-09 15:54         ` Patrick Mochel
  0 siblings, 0 replies; 28+ messages in thread
From: Patrick Mochel @ 2003-09-09 15:54 UTC (permalink / raw)
  To: Éric Brunet; +Cc: Linux Kernel mailing list


On Tue, 9 Sep 2003, Éric Brunet wrote:

> On Mon, Sep 08, 2003 at 12:54:12PM -0700, Patrick Mochel wrote:
> > > * swsusp doesn't like accelerated graphics. If the following modules are
> > >   loaded:
> > >     i830                   68120  20
> > >     intel_agp              14744  1
> > >     agpgart                25640  3 intel_agp
> > >   resuming fails. (Different kind of failures, from spontaneous reboot to
> > 
> > This is not suprising, and likely something that many people will run 
> > into. There is a lot of driver work that needs to be done, especially WRT 
> > video devices, as many of them are not tied into the new driver model at 
> > all. 
> 
> If you want more testers and interesting bug reports, that should be some
> kinfd of priority, no ? Everybody is running with accelerated graphics
> modules, nowadays.

It is a priority, but they pose a stiff challenge that not many know how 
to resolve, including yours truly. We'll get there.. 

> agpgart		i830		hid+uhci+ehci	eth1	  | suspend+resume
> +intel_agp						  |
> ----------------------------------------------------------+--
> unloaded	unloaded	loaded		loaded+up | works but
> 							  | mouse+eth1 fail
> 
> loaded		unloaded	unloaded	unloaded  | works and
> 							  | mouse+eth1 can be
> 							  | recovered
> 
> loaded		unloaded	partially	loaded	  | does not work.
> 				loaded		but down
> 
> What this probably means is that one of my succes was a piece of luck,
> non reliably reproducible. Unfortunately, my wife came back from her
> trip, and I now have much less time for testing...

Heh, thanks for testing this so far. This is definitely helpful in 
pointing out some trouble areas. 


	Pat


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

* Re: Power Management Update
  2003-09-08 19:54     ` Patrick Mochel
@ 2003-09-09 10:53       ` Éric Brunet
  2003-09-09 15:54         ` Patrick Mochel
  0 siblings, 1 reply; 28+ messages in thread
From: Éric Brunet @ 2003-09-09 10:53 UTC (permalink / raw)
  To: Patrick Mochel; +Cc: Linux Kernel mailing list

On Mon, Sep 08, 2003 at 12:54:12PM -0700, Patrick Mochel wrote:
> > * swsusp doesn't like accelerated graphics. If the following modules are
> >   loaded:
> >     i830                   68120  20
> >     intel_agp              14744  1
> >     agpgart                25640  3 intel_agp
> >   resuming fails. (Different kind of failures, from spontaneous reboot to
> 
> This is not suprising, and likely something that many people will run 
> into. There is a lot of driver work that needs to be done, especially WRT 
> video devices, as many of them are not tied into the new driver model at 
> all. 

If you want more testers and interesting bug reports, that should be some
kinfd of priority, no ? Everybody is running with accelerated graphics
modules, nowadays.
> 
> For now, the best I can say is to manually unload those modules before 
> suspending and reloading them after resume. We'll work on getting the 
> drivers fixed up, but it will probably take a while. 
> 
> >   However, the mouse is not working anymore (mouse is usb, the only usb
> >   device connected) nor network on eth1 (I haven't tried eth0.)
> 
> For both the mouse and eth1, will they work if you unload the modules 
> first, and reload them after resuming? 

Ok, I tried this: after a normal boot, I went back to runlevel 3,
ifconfig'ed down eth1, unloaded modules i830, hid, ehci-hcd, uhcd-hcd
ne2K-pci and 8390 and echoed 4 to /proc/sleep/acpi. Note that intel_agp,
agpgart and usbcore were still there, those modules can't be removed once
loaded.

The system suspended and resumed correctly. 

I ifconfig'ed up eth1 (which loaded automagically the two modules), and
network was working. I loaded hid, ehci-hcd and uhcd-hcd, and mouse was
working. I telinit'ed 5, X started, went back to runlevel 3 to load i830
which I had forgotten, went back again to runlevel 5. X was working fine,
and video acceleration too. (I think I saw a little glitch on screen; a
little gray line, there, that diseapeared quickly.)

Then I tried to pinpoint more precisely what was wrong. Back to telinit
3. ifconfig down eth1, but keep the modules loaded. rmmod i830, hid, but
keep ehci-hcd and uhci-hcd. I expected that, at least, the computer would
suspend and resume, and I wanted to see if I could recover my mouse and
network interface. I got a black screen at suspend time, and had to
reboot with magic sysrq. I thought that the computer wouldn't suspend
twice in a row.

After a clean boot, I tried again my latest experiment: telinit 3, rmmod
i830, rmmod hid, ifconfig eth1 down, echo 4 > /proc/acpi/sleep.
As I said, the computer should be able to suspend/resume in that
configuration. This time, it failed at resuming. Beautifull kernel panic,
tried to kill init, etc.

It isn't logical. To sum up:

agpgart		i830		hid+uhci+ehci	eth1	  | suspend+resume
+intel_agp						  |
----------------------------------------------------------+--
unloaded	unloaded	loaded		loaded+up | works but
							  | mouse+eth1 fail

loaded		unloaded	unloaded	unloaded  | works and
							  | mouse+eth1 can be
							  | recovered

loaded		unloaded	partially	loaded	  | does not work.
				loaded		but down

What this probably means is that one of my succes was a piece of luck,
non reliably reproducible. Unfortunately, my wife came back from her
trip, and I now have much less time for testing...

If, anyway, I decide to try test5, what patches should be applied ?

Éric

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

* Re: Power Management Update
  2003-09-07  9:54   ` Éric Brunet
@ 2003-09-08 19:54     ` Patrick Mochel
  2003-09-09 10:53       ` Éric Brunet
  0 siblings, 1 reply; 28+ messages in thread
From: Patrick Mochel @ 2003-09-08 19:54 UTC (permalink / raw)
  To: Éric Brunet; +Cc: Linux Kernel mailing list


> I have been testing swsusp to disk on my computer using kernel
> 2.6.0-test4 + Patrick Mochel's main PM patch (posted on lkml on aug 31) +
> IDE PM fix from benh (posted on lkml by P. Mochel on sep 2)
> 
> I found that my computer is able to suspend to disk if I boot with
> init=/bin/sh, but not with a normal boot. I tried swsusp with a normal
> boot (Xfree, kde, ...) but after removing several modules form
> /lib/modules, to see which modules make problems. What I found:

Wow. Thanks a lot for taking the time to test this. 

> * swsusp doesn't like accelerated graphics. If the following modules are
>   loaded:
>     i830                   68120  20
>     intel_agp              14744  1
>     agpgart                25640  3 intel_agp
>   resuming fails. (Different kind of failures, from spontaneous reboot to
>   kernel panic.) I could try to pinpoint more precisely which module
>   causes trouble.

This is not suprising, and likely something that many people will run 
into. There is a lot of driver work that needs to be done, especially WRT 
video devices, as many of them are not tied into the new driver model at 
all. 

For now, the best I can say is to manually unload those modules before 
suspending and reloading them after resume. We'll work on getting the 
drivers fixed up, but it will probably take a while. 

> * Apart from that, the computer can suspend and come back to life !
>   Modules loaded:
>     snd_mixer_oss          16768  3
>     binfmt_misc             8200  1
>     autofs                 12928  0
>     ne2k_pci                8288  0
>     8390                    8576  1 ne2k_pci
>     snd_virmidi             3584  2
>     snd_seq_virmidi         5632  1 snd_virmidi
>     ipchains               48080  15
>     ide_cd                 36736  0
>     cdrom                  33312  1 ide_cd
>     loop                   13192  14
>     hid                    30272  0
>     ehci_hcd               21120  0
>     uhci_hcd               27656  0
>     usbcore                91348  5 hid,ehci_hcd,uhci_hcd
>   However, the mouse is not working anymore (mouse is usb, the only usb
>   device connected) nor network on eth1 (I haven't tried eth0.)

For both the mouse and eth1, will they work if you unload the modules 
first, and reload them after resuming? 

Thanks,


	Pat


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

* Re: Power Management Update
       [not found] ` <Pine.LNX.4.33.0309041637440.940-100000@localhost.localdomain>
@ 2003-09-07  9:54   ` Éric Brunet
  2003-09-08 19:54     ` Patrick Mochel
  0 siblings, 1 reply; 28+ messages in thread
From: Éric Brunet @ 2003-09-07  9:54 UTC (permalink / raw)
  To: Patrick Mochel, Linux Kernel mailing list

Hello,

I have been testing swsusp to disk on my computer using kernel
2.6.0-test4 + Patrick Mochel's main PM patch (posted on lkml on aug 31) +
IDE PM fix from benh (posted on lkml by P. Mochel on sep 2)

I found that my computer is able to suspend to disk if I boot with
init=/bin/sh, but not with a normal boot. I tried swsusp with a normal
boot (Xfree, kde, ...) but after removing several modules form
/lib/modules, to see which modules make problems. What I found:

* swsusp doesn't like accelerated graphics. If the following modules are
  loaded:
    i830                   68120  20
    intel_agp              14744  1
    agpgart                25640  3 intel_agp
  resuming fails. (Different kind of failures, from spontaneous reboot to
  kernel panic.) I could try to pinpoint more precisely which module
  causes trouble.

* Apart from that, the computer can suspend and come back to life !
  Modules loaded:
    snd_mixer_oss          16768  3
    binfmt_misc             8200  1
    autofs                 12928  0
    ne2k_pci                8288  0
    8390                    8576  1 ne2k_pci
    snd_virmidi             3584  2
    snd_seq_virmidi         5632  1 snd_virmidi
    ipchains               48080  15
    ide_cd                 36736  0
    cdrom                  33312  1 ide_cd
    loop                   13192  14
    hid                    30272  0
    ehci_hcd               21120  0
    uhci_hcd               27656  0
    usbcore                91348  5 hid,ehci_hcd,uhci_hcd
  However, the mouse is not working anymore (mouse is usb, the only usb
  device connected) nor network on eth1 (I haven't tried eth0.)
  Here are the last lines of the log after resuming:
	Restarting tasks...<6>usb 1-1: USB disconnect, address 2 done
	PM: Removing info for usb:1-1:0
	PM: Removing info for usb:1-1
	hub 1-0:0: debounce: port 1: delay 100ms stable 4 status 0x301
	eth1: mismatched read page pointers 3c vs 66.
	eth1: mismatched read page pointers 4c vs d7.
	eth1: mismatched read page pointers 4c vs d7.
	eth1: mismatched read page pointers 4c vs d7.
	eth1: mismatched read page pointers 4c vs d7.
	eth1: mismatched read page pointers 4c vs d7.
	eth1: mismatched read page pointers 4c vs d7.
	eth1: mismatched read page pointers 4c vs d7.
	eth1: mismatched read page pointers 4c vs d7.
	hub 1-0:0: new USB device on port 1, assigned address 3
	usb 1-1: control timeout on ep0out
  eth1 is
   01:08.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8029(AS)
  	   Subsystem: Realtek Semiconductor Co., Ltd. RTL-8029(AS)
	   Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
           Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
           Interrupt: pin A routed to IRQ 20
           Region 0: I/O ports at c800 [size=32]

A last point; lates patch from P. Mochel (posted on Sep 3, supposed to
fix configuration with preempt enabled) completely prevents me from
suspending to disk.

Many data on my computer (.config, lspci, dsdt) available on
http://perso.nerim.net/~tudia/bug-reports/


Éric Brunet



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

* Re: Power Management Update
  2003-09-04  9:34           ` Éric Brunet
@ 2003-09-04 19:34             ` Patrick Mochel
  0 siblings, 0 replies; 28+ messages in thread
From: Patrick Mochel @ 2003-09-04 19:34 UTC (permalink / raw)
  To: Éric Brunet; +Cc: maverick, felipe_alfaro, linux-kernel, akpm


This is boggling. 

> standby/S1 or mem/S3 make the kernel oops and hangs. Call strace:
> 	enter_state
> 	suspend_prepare
> 	enter_state

Is there anyway that you remember what the Oops was (i.e. the few lines 
above the back trace)? 

Also, could you please confirm that you're using 2.6.0-test4 + the PM
patches I posted last Saturday + the patch I posted yesterday? I trust
that you are, however I cannot reproduce the Oops at all. 

The Oops looks the one that was present in -test4 initially, but why 
you're able to at least begin a suspend-to-disk transition doesn't make 
sense. 

> Before the patch, S1 and S3 would have the screen blink and computer
> immediately resume to normal operation. Sometimes, S1 would actually
> standby (screen lit and hard disk spinning, though) waiting for a
> keypress.

Based on your dmesg here: 

http://perso.nerim.net/~tudia/bug-reports/2.6.0-pre4-pm

Your system does not support S3, so returning immediately would be the 
proper thing to do. I will continue to investigate. 

Thanks for testing,


	Pat


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

* Re: Power Management Update
  2003-09-03 22:41         ` Patrick Mochel
@ 2003-09-04  9:34           ` Éric Brunet
  2003-09-04 19:34             ` Patrick Mochel
       [not found]           ` <20031013194127.GA16791@lps.ens.fr>
  1 sibling, 1 reply; 28+ messages in thread
From: Éric Brunet @ 2003-09-04  9:34 UTC (permalink / raw)
  To: Patrick Mochel; +Cc: maverick, felipe_alfaro, linux-kernel, akpm

On Wed, Sep 03, 2003 at 03:41:14PM -0700, Patrick Mochel wrote:
> > It solves the ide-cd problem, and the suspend process get to next step. 
> > It frees memory. However, just after that, the system get in a loop 
> > displaying "Bad: scheduling while atomic". I'm not able to capture the 
> > output of this, the laptop only responding to syrq.
> > Hope it helps you.
> 
> Definitely. I take it you have preempt enabled, right? 

I don't have preempt enabled, so I thought that this patch wasn't
concerning me, but I tried it anyway. Result is a definite regression.

standby/S1 or mem/S3 make the kernel oops and hangs. Call strace:
	enter_state
	suspend_prepare
	enter_state
	state_store
	subsys_attr_store
	fill_write_buffer
	sysfs_write_file
	vfs_write
	sys_write
	sysenter_past_esp
or
	acpi_system_write_sleep
	acpi_system_write_sleep
	vfs_write
	sys_write
	sysenter_past_esp
(depending on whether I use /sys/power/state or /proc/acpi/sleep)

Before the patch, S1 and S3 would have the screen blink and computer
immediately resume to normal operation. Sometimes, S1 would actually
standby (screen lit and hard disk spinning, though) waiting for a
keypress.

disk/S4 don't suspend anymore. It starts very well, but the computer
immediately resume to normal operation:
Stopping tasks: ====================================================|
Freeing memory: ........|
hdc: start_power_step(step: 0)
hdc: completing PM request, suspend
hda: start_power_step(step: 0)
hda: start_power_step(step: 1)
hda: complete_power_step(step: 1, stat: 50, err: 0)
hda: completing PM request, suspend
PM: Attempting to suspend to disk.
PM: snapshotting memory.
/critical section: Counting pages to copy[nosave c0377000] (pages needed:
46357+512=46869 free: 82650)
Alloc pagedir
[nosave c0377000]critical section/: done (46357 pages copied)
Packet log: input REJECT eth1 PROTO=17 207.34.121.71:1184
192.168.1.8:1434 L=404 S=0x00 I=38123 F=0x0000 T=112 (#14)
PCI: Setting latency timer of device 0000:00:1d.0 to 64
PCI: Setting latency timer of device 0000:00:1d.1 to 64
PCI: Setting latency timer of device 0000:00:1d.2 to 64
PCI: Setting latency timer of device 0000:00:1f.5 to 64
eth0: Setting half-duplex based on auto-negotiated partner ability 0000.
hda: Wakeup request inited, waiting for !BSY...
hda: start_power_step(step: 1000)
blk: queue df60d800, I/O limit 4095Mb (mask 0xffffffff)
hda: completing PM request, resume
hdc: Wakeup request inited, waiting for !BSY...
hdc: start_power_step(step: 1000)
hdc: completing PM request, resume
Restarting tasks... done

Prior to the patch, the computer would suspend and bug at resume time.

> Andrew, please apply this to -test4-mm5. I realize I said I would not
> touch swsusp any more, and this patch may become irrelevant in the future. 
> But, it fixes a real bug now. 

Thank you for actually improving swsusp, despite what you said.

Éric

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

* Re: Power Management Update
  2003-09-03  9:41       ` Mathieu LESNIAK
@ 2003-09-03 22:41         ` Patrick Mochel
  2003-09-04  9:34           ` Éric Brunet
       [not found]           ` <20031013194127.GA16791@lps.ens.fr>
  0 siblings, 2 replies; 28+ messages in thread
From: Patrick Mochel @ 2003-09-03 22:41 UTC (permalink / raw)
  To: Mathieu LESNIAK; +Cc: Felipe Alfaro Solana, ebrunet, LKML, akpm


> I've tested the patch you submitted for ide-io.c (I've tested it in 
> test4-mm5).
> It solves the ide-cd problem, and the suspend process get to next step. 
> It frees memory. However, just after that, the system get in a loop 
> displaying "Bad: scheduling while atomic". I'm not able to capture the 
> output of this, the laptop only responding to syrq.
> Hope it helps you.

Definitely. I take it you have preempt enabled, right? 

Below is a patch that should fix the problem. The problem was due to the
fact that I removed the kernel_fpu_end() call from
kernel/power/swsusp.c::swsusp_suspend(). kernel_fpu_end() disables
preempt, which causes any subsequent schedule() to trigger that BUG(). I
apologize for this regression.

The patch needs a bit more explanation, because I didn't simply replace 
the call. Doing so would be a layering violation of the structure of the 
code. kernel_fpu_end() is called by save_processor_state(), which is 
called by swsusp_arch_suspend(). We should be calling it from the same 
chain, and we shouldn't be calling a function from generic code that is 
defined on only two architectures. 

I modified swsusp_arch_suspend() to unconditionally call
restore_processor_state() when exiting, which provides the same layering. 
However, it is still too late WRT to the other things that 
swsusp_suspend() was doing (resuming drivers and writing the image). 

Since those are unrelated to snapshotting memory, I divorced them from the 
function. swsusp_save() now is the function that is responsible for 
snapshoting memory, while swsusp_write() is responsible for writing the 
image, only. 

The resulting code is cleaner and more streamlined. It behaves as
predicted locally. Please try it and report whether or not it works for 
you. 

Andrew, please apply this to -test4-mm5. I realize I said I would not
touch swsusp any more, and this patch may become irrelevant in the future. 
But, it fixes a real bug now. 

Thanks,


	Pat


===== arch/i386/power/swsusp.S 1.9 vs edited =====
--- 1.9/arch/i386/power/swsusp.S	Fri Aug 22 16:08:57 2003
+++ edited/arch/i386/power/swsusp.S	Wed Sep  3 15:23:20 2003
@@ -76,10 +76,10 @@
 	movl saved_context_edx, %edx
 	movl saved_context_esi, %esi
 	movl saved_context_edi, %edi
-	call restore_processor_state
 	pushl saved_context_eflags ; popfl
 	call swsusp_resume
 .L1449:
+	call restore_processor_state
 	popl %ebx
 	ret
 
===== kernel/power/disk.c 1.2 vs edited =====
--- 1.2/kernel/power/disk.c	Tue Aug 26 12:25:46 2003
+++ edited/kernel/power/disk.c	Wed Sep  3 15:20:10 2003
@@ -163,27 +163,27 @@
 
 	pr_debug("PM: snapshotting memory.\n");
 	in_suspend = 1;
-	local_irq_disable();
 	if ((error = swsusp_save()))
 		goto Done;
 
-	pr_debug("PM: writing image.\n");
+	if (in_suspend) {
+		pr_debug("PM: writing image.\n");
 
-	/* 
-	 * FIXME: Leftover from swsusp. Are they necessary? 
-	 */
-	mb();
-	barrier();
-
-	error = swsusp_write();
-	if (!error && in_suspend) {
-		error = power_down(pm_disk_mode);
-		pr_debug("PM: Power down failed.\n");
+		/* 
+		 * FIXME: Leftover from swsusp. Are they necessary? 
+		 */
+		mb();
+		barrier();
+
+		error = swsusp_write();
+		if (!error) {
+			error = power_down(pm_disk_mode);
+			pr_debug("PM: Power down failed.\n");
+		}
 	} else
 		pr_debug("PM: Image restored successfully.\n");
 	swsusp_free();
  Done:
-	local_irq_enable();
 	finish();
 	return error;
 }
@@ -217,7 +217,6 @@
 
 	barrier();
 	mb();
-	local_irq_disable();
 
 	/* FIXME: The following (comment and mdelay()) are from swsusp. 
 	 * Are they really necessary? 
@@ -231,7 +230,6 @@
 
 	pr_debug("PM: Restoring saved image.\n");
 	swsusp_restore();
-	local_irq_enable();
 	pr_debug("PM: Restore failed, recovering.n");
 	finish();
  Free:
===== kernel/power/swsusp.c 1.62 vs edited =====
--- 1.62/kernel/power/swsusp.c	Sat Aug 30 13:23:28 2003
+++ edited/kernel/power/swsusp.c	Wed Sep  3 15:23:35 2003
@@ -416,11 +416,12 @@
 }
 
 
-static int suspend_prepare_image(void)
+int swsusp_suspend(void)
 {
 	struct sysinfo i;
 	unsigned int nr_needed_pages = 0;
 
+	read_swapfiles();
 	drain_local_pages();
 
 	pagedir_nosave = NULL;
@@ -486,12 +487,10 @@
 static int suspend_save_image(void)
 {
 	int error;
-	local_irq_enable();
 	device_resume();
 	lock_swapdevices();
 	error = write_suspend_image();
 	lock_swapdevices();
-	local_irq_disable();
 	return error;
 }
 
@@ -515,35 +514,16 @@
 	if (!resume) {
 		save_processor_state();
 		SAVE_REGISTERS
-		swsusp_suspend();
-		return;
+		return swsusp_suspend();
 	}
 	GO_TO_SWAPPER_PAGE_TABLES
 	COPY_PAGES_BACK
 	RESTORE_REGISTERS
 	restore_processor_state();
-	swsusp_resume();
-
+	return swsusp_resume();
  */
 
 
-int swsusp_suspend(void)
-{
-	int error;
-	read_swapfiles();
-	error = suspend_prepare_image();
-	if (!error)
-		error = suspend_save_image();
-	if (error) {
-		printk(KERN_EMERG "%sSuspend failed, trying to recover...\n", 
-		       name_suspend);
-		barrier();
-		mb();
-		mdelay(1000);
-	}
-	return error;
-}
-
 /* More restore stuff */
 
 /* FIXME: Why not memcpy(to, from, 1<<pagedir_order*PAGE_SIZE)? */
@@ -870,11 +850,19 @@
 
 int swsusp_save(void) 
 {
+	int error;
+
 #if defined (CONFIG_HIGHMEM) || defined (COFNIG_DISCONTIGMEM)
 	printk("swsusp is not supported with high- or discontig-mem.\n");
 	return -EPERM;
 #endif
-	return arch_prepare_suspend();
+	if ((error = arch_prepare_suspend()))
+		return error;
+	
+	local_irq_disable();
+	error = swsusp_arch_suspend(0);
+	local_irq_enable();
+	return error;
 }
 
 
@@ -890,7 +878,7 @@
 
 int swsusp_write(void)
 {
-	return swsusp_arch_suspend(0);
+	return suspend_save_image();
 }
 
 
@@ -933,7 +921,11 @@
 
 int __init swsusp_restore(void)
 {
-	return swsusp_arch_suspend(1);
+	int error;
+	local_irq_disable();
+	error = swsusp_arch_suspend(1);
+	local_irq_enable();
+	return error;
 }
 
 


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

* Re: Power Management Update
  2003-09-02 18:13     ` Patrick Mochel
  2003-09-02 23:50       ` Éric Brunet
@ 2003-09-03  9:41       ` Mathieu LESNIAK
  2003-09-03 22:41         ` Patrick Mochel
  1 sibling, 1 reply; 28+ messages in thread
From: Mathieu LESNIAK @ 2003-09-03  9:41 UTC (permalink / raw)
  To: Patrick Mochel; +Cc: Felipe Alfaro Solana, ebrunet, LKML

Patrick Mochel wrote:
  > I apologize for the delay in getting back to you - I wanted to test an
> actual fix, rather than just a work around.
> 
> I encountered this problem by having an IDE CD-ROM, but not having the 
> ide-cd drier compiled in. The patch below is from Benh, who wrote the IDE 
> power managment handlers. 
> 
> He mentioned producing a cleaner patch, but this should at least fix the 
> Oops. Please give it a try and report if it helps or not.
> 
> Thanks,
> 
> 
> 	Pat

Hi,

I've tested the patch you submitted for ide-io.c (I've tested it in 
test4-mm5).
It solves the ide-cd problem, and the suspend process get to next step. 
It frees memory. However, just after that, the system get in a loop 
displaying "Bad: scheduling while atomic". I'm not able to capture the 
output of this, the laptop only responding to syrq.
Hope it helps you.

Mathieu LESNIAK


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

* Re: Power Management Update
  2003-09-02 23:50       ` Éric Brunet
@ 2003-09-02 23:59         ` Patrick Mochel
  0 siblings, 0 replies; 28+ messages in thread
From: Patrick Mochel @ 2003-09-02 23:59 UTC (permalink / raw)
  To: Éric Brunet; +Cc: benh, Mathieu LESNIAK, Felipe Alfaro Solana, LKML


> The result is a panic at different place when resuming from suspend to
> disk. Hand written partial debugging info:
> 
> EIP is at swsusp_arch_suspend
> eax: 07200720 ebx: 07200720 ecx: c1700000 edx=esi=edi=ebp=0 esp=df793fac
> Process swapper 
> Call trace:
> 	swsusp_restore
> 	pm_resume
> 	do_initcalls
> 	init_workqueues
> 	init
> 	init
> 	kernel_thread_helper
> Code: 8a 04 02 88 04 1a 0f 20 d8 0f 22 d8 a1 18 70 37 c0 8d 50 01
> Panic: attempted to kill init !

Ouch, thanks for the report. 

Can you tell me if and when swsusp last worked for you? 

> By the way, how comes the computer suspends when echoing 4 to
> /proc/acpi/sleep, and nothing happens when echoing disk to
> /sys/power/state ? Aren't those two things supposed to be equivalent ?
> Regards,

Try 'echo -n disk > /sys/power/state'.


	Pat


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

* Re: Power Management Update
  2003-09-02 18:13     ` Patrick Mochel
@ 2003-09-02 23:50       ` Éric Brunet
  2003-09-02 23:59         ` Patrick Mochel
  2003-09-03  9:41       ` Mathieu LESNIAK
  1 sibling, 1 reply; 28+ messages in thread
From: Éric Brunet @ 2003-09-02 23:50 UTC (permalink / raw)
  To: Patrick Mochel, benh; +Cc: Mathieu LESNIAK, Felipe Alfaro Solana, LKML

On Tue, Sep 02, 2003 at 11:13:24AM -0700, Patrick Mochel wrote:
> I encountered this problem by having an IDE CD-ROM, but not having the 
> ide-cd drier compiled in. The patch below is from Benh, who wrote the IDE 
> power managment handlers. 
> 
> He mentioned producing a cleaner patch, but this should at least fix the 
> Oops. Please give it a try and report if it helps or not.

I was waiting for Ben's « new patch later today », but I finally gave a
try to this one
> ===== drivers/ide/ide-io.c 1.21 vs edited =====
> --- 1.21/drivers/ide/ide-io.c	Mon Sep  1 10:21:10 2003
> +++ edited/drivers/ide/ide-io.c	Tue Sep  2 09:58:19 2003
> @@ -609,6 +609,22 @@
>  EXPORT_SYMBOL(execute_drive_cmd);
>  
>  /**
> + *	do_start_power_step	- wrapper on subdriver start_power_step()
> + *
> + *	This is called by start_request instead of directly calling
> + *	the subdriver's start_power_step() to deal with either no
> + *	subdriver or no start_power_step method in the subdriver
> + *	properly.
> + */
[snip]

The result is a panic at different place when resuming from suspend to
disk. Hand written partial debugging info:

EIP is at swsusp_arch_suspend
eax: 07200720 ebx: 07200720 ecx: c1700000 edx=esi=edi=ebp=0 esp=df793fac
Process swapper 
Call trace:
	swsusp_restore
	pm_resume
	do_initcalls
	init_workqueues
	init
	init
	kernel_thread_helper
Code: 8a 04 02 88 04 1a 0f 20 d8 0f 22 d8 a1 18 70 37 c0 8d 50 01
Panic: attempted to kill init !

Complete (?) information on my computer and kernel logs at 
http://perso.nerim.net/~tudia/bug-reports

By the way, how comes the computer suspends when echoing 4 to
/proc/acpi/sleep, and nothing happens when echoing disk to
/sys/power/state ? Aren't those two things supposed to be equivalent ?
Regards,

	Éric Brunet

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

* Re: Power Management Update
  2003-08-31 13:04   ` Mathieu LESNIAK
@ 2003-09-02 18:13     ` Patrick Mochel
  2003-09-02 23:50       ` Éric Brunet
  2003-09-03  9:41       ` Mathieu LESNIAK
  0 siblings, 2 replies; 28+ messages in thread
From: Patrick Mochel @ 2003-09-02 18:13 UTC (permalink / raw)
  To: Mathieu LESNIAK; +Cc: Felipe Alfaro Solana, ebrunet, LKML


> > Running with 2.6.0-test4-mm4:
> > 
> > # echo 4 > /proc/acpi/sleep
> > 
> > Stopping tasks: ======|
> > Freeing memory: ..|
> > hdc: start_power_step(step: 0)
> > Unable to handle kernel NULL pointer dereference at virtual address
> > 00000000
> >  printing eip:
> > 00000000
> > *pde = 00000000
> > Oops: 0000 [#1]
> > PREEMPT
> > CPU:    0
> > EIP:    0060:[<00000000>]    Not taintled VLI
> > EFLAGS: 00010282
> > EIP is at 0x0
> > eax: c032f180   ebx: c039588c   ecx: c02f7b50   edx: 00000282
> > esi: 00000000   edi: cffa1e2c   ebp: c13ce780   esp: cffa1d40
> > ds: 007b   es: 007b   ss: 0068
> > Process bash (pid: 1, threadinfo=cffa0000 task=c12bb940)
> > Stack: c01fbcd1 c039588c cffa1e2c 00000000 00000088 0000001e 0000000f
> > cffa1e2c
> >        c039588c c03957e0 c01fc063 c039588c cffa1e2c 00000001 cffa0000
> > c13cd600
> >        cffa0000 cffa1e2c 00000202 00000001 c01fc8a3 c13ce780 ffffffff
> > 00000001
> > Call Trace:
> >  [<c01fbcd1>] start_request+0x131/0x290
> >  [<c01fc063>] ide_do_request+0x203/0x3b0
> >  [<c01fc8a3>] ide_do_drive_cmd+0xd3/0x130
> >  [<c0205592>] generic_ide_suspend+0x92/0xc0
	...

I apologize for the delay in getting back to you - I wanted to test an 
actual fix, rather than just a work around.

I encountered this problem by having an IDE CD-ROM, but not having the 
ide-cd drier compiled in. The patch below is from Benh, who wrote the IDE 
power managment handlers. 

He mentioned producing a cleaner patch, but this should at least fix the 
Oops. Please give it a try and report if it helps or not.

Thanks,


	Pat


===== drivers/ide/ide-io.c 1.21 vs edited =====
--- 1.21/drivers/ide/ide-io.c	Mon Sep  1 10:21:10 2003
+++ edited/drivers/ide/ide-io.c	Tue Sep  2 09:58:19 2003
@@ -609,6 +609,22 @@
 EXPORT_SYMBOL(execute_drive_cmd);
 
 /**
+ *	do_start_power_step	- wrapper on subdriver start_power_step()
+ *
+ *	This is called by start_request instead of directly calling
+ *	the subdriver's start_power_step() to deal with either no
+ *	subdriver or no start_power_step method in the subdriver
+ *	properly.
+ */
+static ide_startstop_t do_start_power_step(ide_drive_t *drive, struct request *rq)
+{
+	if (DRIVER(drive) && DRIVER(drive)->start_power_step)
+		return DRIVER(drive)->start_power_step(drive, rq);
+	rq->pm->pm_step = ide_pm_state_completed;
+	return ide_stopped;
+}
+
+/**
  *	start_request	-	start of I/O and command issuing for IDE
  *
  *	start_request() initiates handling of a new I/O request. It
@@ -700,7 +716,7 @@
 			printk("%s: start_power_step(step: %d)\n",
 				drive->name, rq->pm->pm_step);
 #endif
-			startstop = DRIVER(drive)->start_power_step(drive, rq);
+			startstop = do_start_power_step(drive, rq);
 			if (startstop == ide_stopped &&
 			    rq->pm->pm_step == ide_pm_state_completed)
 				ide_complete_pm_request(drive, rq);


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

> > Running with 2.6.0-test4-mm4:
> > 
> > # echo 4 > /proc/acpi/sleep
> > 
> > Stopping tasks: ======|
> > Freeing memory: ..|
> > hdc: start_power_step(step: 0)
> > Unable to handle kernel NULL pointer dereference at virtual address
> > 00000000
> >  printing eip:
> > 00000000
> > *pde = 00000000
> > Oops: 0000 [#1]
> > PREEMPT
> > CPU:    0
> > EIP:    0060:[<00000000>]    Not taintled VLI
> > EFLAGS: 00010282
> > EIP is at 0x0
> > eax: c032f180   ebx: c039588c   ecx: c02f7b50   edx: 00000282
> > esi: 00000000   edi: cffa1e2c   ebp: c13ce780   esp: cffa1d40
> > ds: 007b   es: 007b   ss: 0068
> > Process bash (pid: 1, threadinfo=cffa0000 task=c12bb940)
> > Stack: c01fbcd1 c039588c cffa1e2c 00000000 00000088 0000001e 0000000f
> > cffa1e2c
> >        c039588c c03957e0 c01fc063 c039588c cffa1e2c 00000001 cffa0000
> > c13cd600
> >        cffa0000 cffa1e2c 00000202 00000001 c01fc8a3 c13ce780 ffffffff
> > 00000001
> > Call Trace:
> >  [<c01fbcd1>] start_request+0x131/0x290
> >  [<c01fc063>] ide_do_request+0x203/0x3b0
> >  [<c01fc8a3>] ide_do_drive_cmd+0xd3/0x130
> >  [<c0205592>] generic_ide_suspend+0x92/0xc0
	...

I apologize for the delay in getting back to you - I wanted to test an 
actual fix, rather than just a work around.

I encountered this problem by having an IDE CD-ROM, but not having the 
ide-cd drier compiled in. The patch below is from Benh, who wrote the IDE 
power managment handlers. 

He mentioned producing a cleaner patch, but this should at least fix the 
Oops. Please give it a try and report if it helps or not.

Thanks,


	Pat


===== drivers/ide/ide-io.c 1.21 vs edited =====
--- 1.21/drivers/ide/ide-io.c	Mon Sep  1 10:21:10 2003
+++ edited/drivers/ide/ide-io.c	Tue Sep  2 09:58:19 2003
@@ -609,6 +609,22 @@
 EXPORT_SYMBOL(execute_drive_cmd);
 
 /**
+ *	do_start_power_step	- wrapper on subdriver start_power_step()
+ *
+ *	This is called by start_request instead of directly calling
+ *	the subdriver's start_power_step() to deal with either no
+ *	subdriver or no start_power_step method in the subdriver
+ *	properly.
+ */
+static ide_startstop_t do_start_power_step(ide_drive_t *drive, struct request *rq)
+{
+	if (DRIVER(drive) && DRIVER(drive)->start_power_step)
+		return DRIVER(drive)->start_power_step(drive, rq);
+	rq->pm->pm_step = ide_pm_state_completed;
+	return ide_stopped;
+}
+
+/**
  *	start_request	-	start of I/O and command issuing for IDE
  *
  *	start_request() initiates handling of a new I/O request. It
@@ -700,7 +716,7 @@
 			printk("%s: start_power_step(step: %d)\n",
 				drive->name, rq->pm->pm_step);
 #endif
-			startstop = DRIVER(drive)->start_power_step(drive, rq);
+			startstop = do_start_power_step(drive, rq);
 			if (startstop == ide_stopped &&
 			    rq->pm->pm_step == ide_pm_state_completed)
 				ide_complete_pm_request(drive, rq);



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

* Re: Power Management Update
@ 2003-09-01 10:57 Éric Brunet
  0 siblings, 0 replies; 28+ messages in thread
From: Éric Brunet @ 2003-09-01 10:57 UTC (permalink / raw)
  To: mochel, linux-kernel

To: mochel@osdl.org,linux-kernel@vger.kernel.org
Subject: Re: Power Management Update

(Resend. Seems it didn't get through the first time.)

In mailing-lists linux-kernel, you wrote:
>
>I'm pleased to announce the release of the first patchset of power
>management changes for 2.6.0. The purpose of this release is to give
>people a chance to review and test the PM code before it's sent on to
>Linus.

I gave this patch a try...  All data concerning my computer (config
files, boot messages, dsdt, etc.) is available on
<http://perso.nerim.net/~tudia/bug-reports>.

On my computer, echoing anything to /sys/power/state does nothing at all.
Not even a line in the logs.

On the text console (but with XFree and kde running in the background),

        echo 1 > /proc/acpi/sleep

        the screen blinks and the fan speed goes up. (fan speed is set by
        bios. Loading module i2c reinitialize the motherboard sensors and
        make fan speed go up too. But here, i2c was not loaded nor
        compiled in.) In the logs, I have:

Stopping tasks: ==================================================|
hdc: start_power_step(step: 0)
hdc: completing PM request, suspend
hda: start_power_step(step: 0)
hda: start_power_step(step: 1)
hda: complete_power_step(step: 1, stat: 50, err: 0)
hda: completing PM request, suspend
 hwsleep-0257 [16] acpi_enter_sleep_state: Entering sleep state [S1]
Back to C!
PM: Finishing up.
PCI: Setting latency timer of device 0000:00:1d.0 to 64
PCI: Setting latency timer of device 0000:00:1d.1 to 64
PCI: Setting latency timer of device 0000:00:1d.2 to 64
PCI: Setting latency timer of device 0000:00:1f.5 to 64
eth0: Setting half-duplex based on auto-negotiated partner ability 0000.
hda: Wakeup request inited, waiting for !BSY...
hda: start_power_step(step: 1000)
blk: queue df60d800, I/O limit 4095Mb (mask 0xffffffff)
hda: completing PM request, resume
hdc: Wakeup request inited, waiting for !BSY...
hdc: start_power_step(step: 1000)
hdc: completing PM request, resume
Restarting tasks... done

        Note that, sometimes, the computer waits after printing "Entering
        sleep state [S1]", and resumes if I hit the key. The screen is
        however fully lit, so I am not sure that this is a success.

        echo 3 > /proc/acpi/sleep

        Maybe the screen blinks a little bit, but I am not sure. It is so
        fast... In the logs, I have:

PM: Preparing system for suspend
Stopping tasks:
=========================================================|
Restarting tasks... done


        echo 4 > /proc/acpi/sleep

        Suspend is working, the computer writes things in the swapfile
        and shuts down. On resume, I have a kernel panic. I have hand
        written this:

Process swapper
Call queue:
        start_request
        ide_do_request
        __elv_do_drive_cmd
        generic_ide_suspend
        autoremove_wake_function
        printk
        suspend_device
        device_suspend
        prepare
        pm_resume
        do_initcalls
        init_workqueues
        init
        init
        kernel_thread_helper
Code: Bad EIP value
Kernel panic: Attemppted to kill init


Regards,

        Éric Brunet

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

* Re: Power Management Update
  2003-08-30 21:25 Patrick Mochel
  2003-08-31 12:31 ` Felipe Alfaro Solana
  2003-08-31 21:28 ` Pavel Machek
@ 2003-08-31 22:15 ` Pavel Machek
  2 siblings, 0 replies; 28+ messages in thread
From: Pavel Machek @ 2003-08-31 22:15 UTC (permalink / raw)
  To: Patrick Mochel; +Cc: linux-kernel

Hi!

> My main concerns right now are:

On xe3, you broken both S3 and S4 (relative to -test3). [S3 blanks
screen but does not enter sleep, S4 

On 4030cdt, I could not test S3 due to unrelated ACPI error. I tried
to enter S4 -- its still in progress; you moved io into atomic session
with your "cleanups", so I get about 10000 "scheduling in atomic"
messages. It actually does suspend and resume, but drivers are in very
bad state after that, and machine is about 20x slower than it should
be (you have broken UHCI, this might be side effect; or it might be
one of 1001 other things).

You imported ton of untested crap into -test4. If you want power
managment to get into working state, REVERT THAT CRAP!

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

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

* Re: Power Management Update
  2003-08-30 21:25 Patrick Mochel
  2003-08-31 12:31 ` Felipe Alfaro Solana
@ 2003-08-31 21:28 ` Pavel Machek
  2003-08-31 22:15 ` Pavel Machek
  2 siblings, 0 replies; 28+ messages in thread
From: Pavel Machek @ 2003-08-31 21:28 UTC (permalink / raw)
  To: Patrick Mochel; +Cc: linux-kernel

Hi!

> <mochel@osdl.org> (03/08/22 1.1276.19.8)
>    [power] swsusp Cleanups
>    
>    - do_magic()
>      - Rename to swsusp_arch_suspend().
>      - Move declaration to swsusp.c
>    
>    - arch_prepare_suspend()
>      - Return an int
>      - Fix x86 version to return -EFAULT if cpu does not have pse, instead of 
>        calling panic().
>      - Call from swsusp_save().
>    
>    - do_magic_suspend_1()
>      - Move body to pm_suspend_disk()
>      - Remove.
>    
>    - do_magic_suspend_2()
>      - Rename to swsusp_suspend()
>      - Move IRQ fiddling to suspend_save_image(), since that's the only call 
>        that needs it. 
>      - Return an int.
>    
>    - do_magic_resume_1()
>      - Move body to pm_resume().
>      - Remove
>    
>    - do_magic_resume_2()
>      - Rename to swsusp_resume(). 
>      - Return an int. 
>    
>    - swsusp general
>      - Remove unnecessary includes.
>      - Remove suspend_pagedir_lock, since it was only used to disable IRQs.
>      - Change swsusp_{suspend,resume} return an int, so pm_suspend_disk() knows
>        if anything failed. 

Gracious renames to make sure I can not orient in the code :-(.

-/* do_magic() is implemented in arch/?/kernel/suspend_asm.S, and
basically does:
+/* swsusp_arch_suspend() is implemented in arch/?/power/swsusp.S,
+   and basically does:

        if (!resume) {
-               do_magic_suspend_1();
                save_processor_state();
                SAVE_REGISTERS
-               do_magic_suspend_2();
+               swsusp_suspend();
                return;
        }
        GO_TO_SWAPPER_PAGE_TABLES
-       do_magic_resume_1();
        COPY_PAGES_BACK
        RESTORE_REGISTERS
        restore_processor_state();
-       do_magic_resume_2();
+       swsusp_resume();

  */


do_magic_suspend_1() did disable interrupts, where do you disable them
now?

Did you test it with CONFIG_PREEMPT to hunt for "scheduling in atomic"
bugs?

Your new naming is even worse than my original (and that's quite an
achievement).

swsusp_write() does
	swsusp_arch_suspend(), which in turn calls
		swsusp_suspend()
			^- and that does the writing.
			Ouch. do_magic_* was clearer than *that*.

I do not see why you had to change to BIOs just now. Perhaps you
should get it into stable state, first, and then adding more code to
make it look 2.6-like is good idea?

[Will add more comments after a test].
									Pavel

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

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

* Re: Power Management Update
  2003-08-31 12:31 ` Felipe Alfaro Solana
@ 2003-08-31 13:04   ` Mathieu LESNIAK
  2003-09-02 18:13     ` Patrick Mochel
  0 siblings, 1 reply; 28+ messages in thread
From: Mathieu LESNIAK @ 2003-08-31 13:04 UTC (permalink / raw)
  To: Felipe Alfaro Solana; +Cc: Patrick Mochel, LKML

[-- Attachment #1: Type: text/plain, Size: 1761 bytes --]

Felipe Alfaro Solana wrote:
> Hi!
> 
> Running with 2.6.0-test4-mm4:
> 
> # echo 4 > /proc/acpi/sleep
> 
> Stopping tasks: ======|
> Freeing memory: ..|
> hdc: start_power_step(step: 0)
> Unable to handle kernel NULL pointer dereference at virtual address
> 00000000
>  printing eip:
> 00000000
> *pde = 00000000
> Oops: 0000 [#1]
> PREEMPT
> CPU:    0
> EIP:    0060:[<00000000>]    Not taintled VLI
> EFLAGS: 00010282
> EIP is at 0x0
> eax: c032f180   ebx: c039588c   ecx: c02f7b50   edx: 00000282
> esi: 00000000   edi: cffa1e2c   ebp: c13ce780   esp: cffa1d40
> ds: 007b   es: 007b   ss: 0068
> Process bash (pid: 1, threadinfo=cffa0000 task=c12bb940)
> Stack: c01fbcd1 c039588c cffa1e2c 00000000 00000088 0000001e 0000000f
> cffa1e2c
>        c039588c c03957e0 c01fc063 c039588c cffa1e2c 00000001 cffa0000
> c13cd600
>        cffa0000 cffa1e2c 00000202 00000001 c01fc8a3 c13ce780 ffffffff
> 00000001
> Call Trace:
>  [<c01fbcd1>] start_request+0x131/0x290
>  [<c01fc063>] ide_do_request+0x203/0x3b0
>  [<c01fc8a3>] ide_do_drive_cmd+0xd3/0x130
>  [<c0205592>] generic_ide_suspend+0x92/0xc0
>  [<c01f17e8>] suspend_device+0x98/0x100
>  [<c01f18a8>] device_suspend+0x58/0x80
>  [<c0138739>] prepare+0x39/0xc0
>  [<c01387cc>] pm_suspend_disk+0xc/0xc0
>  [<c0137cc5>] enter_state+0xa5/0xb0
>  [<c013974b>] software_suspend+0x3b/0x40
>  [<c01c898a>] acpi_system_write_sleep+0xb3/0xcd
>  [<c01c88d7>] acpi_system_write_sleep+0x0/0xcd
>  [<c01564b8>] vfs_write+0xb8/0x130
>  [<c01565e2>] sys_write+0x42/0x70
>  [<c02ba00e>] sysenter_past_esp+0x43/0x65
> 
> Code:  Bad EIP value.
>  <0>Kernel panic: Attempted to kill init!
> 
> Thanks!
> 
> 

Hi,
Same thing here with 2.6.0-test4-mm4 (config in attachment).
Cannot suspend to disk neither to ram.

Mathieu LESNIAK

[-- Attachment #2: config--2.6.0-test4-mm4 --]
[-- Type: text/plain, Size: 26340 bytes --]

#
# Automatically generated make config: don't edit
#
CONFIG_X86=y
CONFIG_MMU=y
CONFIG_UID16=y
CONFIG_GENERIC_ISA_DMA=y

#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
# CONFIG_BROKEN is not set

#
# General setup
#
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_SYSCTL=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
# CONFIG_EMBEDDED is not set
CONFIG_KALLSYMS=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y

#
# Loadable module support
#
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_OBSOLETE_MODPARM=y
# CONFIG_MODVERSIONS is not set
CONFIG_KMOD=y

#
# Processor type and features
#
CONFIG_X86_PC=y
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_VISWS is not set
# CONFIG_X86_GENERICARCH is not set
# CONFIG_X86_ES7000 is not set
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
CONFIG_MK7=y
# CONFIG_MK8 is not set
# CONFIG_MELAN is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
CONFIG_X86_GENERIC=y
CONFIG_X86_CMPXCHG=y
CONFIG_X86_XADD=y
CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_USE_3DNOW=y
# CONFIG_X86_4G is not set
# CONFIG_X86_SWITCH_PAGETABLES is not set
# CONFIG_X86_4G_VM_LAYOUT is not set
# CONFIG_X86_UACCESS_INDIRECT is not set
# CONFIG_X86_HIGH_ENTRY is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_HPET_TIMER=y
# CONFIG_SMP is not set
CONFIG_PREEMPT=y
# CONFIG_X86_UP_APIC is not set
CONFIG_X86_TSC=y
CONFIG_X86_MCE=y
CONFIG_X86_MCE_NONFATAL=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
# CONFIG_MICROCODE is not set
# CONFIG_X86_MSR is not set
CONFIG_X86_CPUID=y
CONFIG_EDD=y
CONFIG_NOHIGHMEM=y
# CONFIG_HIGHMEM4G is not set
# CONFIG_HIGHMEM64G is not set
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
CONFIG_HAVE_DEC_LOCK=y

#
# Power management options (ACPI, APM)
#
CONFIG_PM=y
CONFIG_SOFTWARE_SUSPEND=y

#
# ACPI (Advanced Configuration and Power Interface) Support
#
# CONFIG_ACPI_HT is not set
CONFIG_ACPI=y
CONFIG_ACPI_BOOT=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_SLEEP_PROC_FS=y
CONFIG_ACPI_AC=y
CONFIG_ACPI_BATTERY=y
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_FAN=y
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_ASUS is not set
# CONFIG_ACPI_TOSHIBA is not set
# CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_BUS=y
CONFIG_ACPI_INTERPRETER=y
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_PCI=y
CONFIG_ACPI_SYSTEM=y

#
# APM (Advanced Power Management) BIOS Support
#
# CONFIG_APM is not set

#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_PROC_INTF=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_24_API=y
CONFIG_CPU_FREQ_TABLE=y

#
# CPUFreq processor drivers
#
CONFIG_X86_ACPI_CPUFREQ=y
CONFIG_X86_ACPI_CPUFREQ_PROC_INTF=y
# CONFIG_X86_POWERNOW_K6 is not set
CONFIG_X86_POWERNOW_K7=y
# CONFIG_X86_GX_SUSPMOD is not set
CONFIG_X86_SPEEDSTEP_ICH=y
CONFIG_X86_SPEEDSTEP_CENTRINO=y
CONFIG_X86_SPEEDSTEP_LIB=y
CONFIG_X86_P4_CLOCKMOD=y
# CONFIG_X86_LONGRUN is not set
# CONFIG_X86_LONGHAUL is not set

#
# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
#
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GODIRECT is not set
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_LEGACY_PROC=y
CONFIG_PCI_NAMES=y
CONFIG_ISA=y
# CONFIG_EISA is not set
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set
CONFIG_HOTPLUG=y

#
# PCMCIA/CardBus support
#
CONFIG_PCMCIA=m
CONFIG_YENTA=m
CONFIG_CARDBUS=y
CONFIG_I82092=m
# CONFIG_I82365 is not set
# CONFIG_TCIC is not set
CONFIG_PCMCIA_PROBE=y

#
# PCI Hotplug Support
#
# CONFIG_HOTPLUG_PCI is not set

#
# Executable file formats
#
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_AOUT is not set
# CONFIG_BINFMT_MISC is not set

#
# Generic Driver Options
#
# CONFIG_FW_LOADER is not set

#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set

#
# Parallel port support
#
CONFIG_PARPORT=m
CONFIG_PARPORT_PC=m
CONFIG_PARPORT_PC_CML1=m
# CONFIG_PARPORT_SERIAL is not set
CONFIG_PARPORT_PC_FIFO=y
CONFIG_PARPORT_PC_SUPERIO=y
# CONFIG_PARPORT_PC_PCMCIA is not set
CONFIG_PARPORT_OTHER=y
CONFIG_PARPORT_1284=y

#
# Plug and Play support
#
CONFIG_PNP=y
# CONFIG_PNP_DEBUG is not set

#
# Protocols
#
# CONFIG_ISAPNP is not set
CONFIG_PNPBIOS=y

#
# Block devices
#
CONFIG_BLK_DEV_FD=y
# CONFIG_BLK_DEV_XD is not set
# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_CRYPTOLOOP=y
CONFIG_BLK_DEV_NBD=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_INITRD=y
# CONFIG_LBD is not set

#
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y

#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_IDEDISK_MULTI_MODE=y
# CONFIG_IDEDISK_STROKE is not set
CONFIG_BLK_DEV_IDECS=m
CONFIG_BLK_DEV_IDECD=y
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
CONFIG_BLK_DEV_IDESCSI=m
# CONFIG_IDE_TASK_IOCTL is not set
CONFIG_IDE_TASKFILE_IO=y

#
# IDE chipset support/bugfixes
#
# CONFIG_BLK_DEV_CMD640 is not set
# CONFIG_BLK_DEV_IDEPNP is not set
CONFIG_BLK_DEV_IDEPCI=y
CONFIG_IDEPCI_SHARE_IRQ=y
CONFIG_BLK_DEV_OFFBOARD=y
CONFIG_BLK_DEV_GENERIC=y
# CONFIG_BLK_DEV_OPTI621 is not set
CONFIG_BLK_DEV_RZ1000=y
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_IDE_TCQ is not set
# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
CONFIG_IDEDMA_PCI_AUTO=y
# CONFIG_IDEDMA_ONLYDISK is not set
# CONFIG_IDEDMA_PCI_WIP is not set
CONFIG_BLK_DEV_ADMA=y
# CONFIG_BLK_DEV_AEC62XX is not set
CONFIG_BLK_DEV_ALI15X3=y
# CONFIG_WDC_ALI15X3 is not set
# CONFIG_BLK_DEV_AMD74XX is not set
# CONFIG_BLK_DEV_CMD64X is not set
# CONFIG_BLK_DEV_TRIFLEX is not set
# CONFIG_BLK_DEV_CY82C693 is not set
# CONFIG_BLK_DEV_CS5520 is not set
# CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_HPT34X is not set
# CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_SC1200 is not set
# CONFIG_BLK_DEV_PIIX is not set
# CONFIG_BLK_DEV_NS87415 is not set
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
# CONFIG_BLK_DEV_SVWKS is not set
# CONFIG_BLK_DEV_SIIMAGE is not set
# CONFIG_BLK_DEV_SIS5513 is not set
# CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not set
# CONFIG_BLK_DEV_VIA82CXXX is not set
# CONFIG_IDE_CHIPSETS is not set
CONFIG_BLK_DEV_IDEDMA=y
CONFIG_IDEDMA_IVB=y
CONFIG_IDEDMA_AUTO=y
# CONFIG_DMA_NONPCI is not set
# CONFIG_BLK_DEV_HD is not set

#
# SCSI device support
#
CONFIG_SCSI=y

#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=m
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
CONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SR_VENDOR is not set
CONFIG_CHR_DEV_SG=m

#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_REPORT_LUNS is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set

#
# SCSI low-level drivers
#
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_7000FASST is not set
# CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_AHA152X is not set
# CONFIG_SCSI_AHA1542 is not set
# CONFIG_SCSI_AACRAID is not set
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
# CONFIG_SCSI_AIC79XX is not set
# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_AM53C974 is not set
# CONFIG_SCSI_MEGARAID is not set
# CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_SCSI_CPQFCTS is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_DTC3280 is not set
# CONFIG_SCSI_EATA is not set
# CONFIG_SCSI_EATA_PIO is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_GENERIC_NCR5380 is not set
# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_PPA is not set
# CONFIG_SCSI_IMM is not set
# CONFIG_SCSI_NCR53C406A is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
# CONFIG_SCSI_SYM53C8XX is not set
# CONFIG_SCSI_PAS16 is not set
# CONFIG_SCSI_PCI2000 is not set
# CONFIG_SCSI_PCI2220I is not set
# CONFIG_SCSI_PSI240I is not set
# CONFIG_SCSI_QLOGIC_FAS is not set
# CONFIG_SCSI_QLOGIC_ISP is not set
# CONFIG_SCSI_QLOGIC_FC is not set
# CONFIG_SCSI_QLOGIC_1280 is not set
# CONFIG_SCSI_SEAGATE is not set
# CONFIG_SCSI_SYM53C416 is not set
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_T128 is not set
# CONFIG_SCSI_U14_34F is not set
# CONFIG_SCSI_ULTRASTOR is not set
# CONFIG_SCSI_NSP32 is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_FERAL_ISP is not set

#
# PCMCIA SCSI adapter support
#
# CONFIG_PCMCIA_AHA152X is not set
# CONFIG_PCMCIA_FDOMAIN is not set
# CONFIG_PCMCIA_NINJA_SCSI is not set
# CONFIG_PCMCIA_QLOGIC is not set

#
# Old CD-ROM drivers (not SCSI, not IDE)
#
# CONFIG_CD_NO_IDESCSI is not set

#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set

#
# Fusion MPT device support
#
# CONFIG_FUSION is not set

#
# IEEE 1394 (FireWire) support (EXPERIMENTAL)
#
# CONFIG_IEEE1394 is not set

#
# I2O device support
#
CONFIG_I2O=m
CONFIG_I2O_PCI=m
CONFIG_I2O_BLOCK=m
CONFIG_I2O_SCSI=m
CONFIG_I2O_PROC=m

#
# Networking support
#
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
# CONFIG_NETLINK_DEV is not set
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_FWMARK=y
CONFIG_IP_ROUTE_NAT=y
CONFIG_IP_ROUTE_MULTIPATH=y
CONFIG_IP_ROUTE_TOS=y
CONFIG_IP_ROUTE_VERBOSE=y
# CONFIG_IP_PNP is not set
CONFIG_NET_IPIP=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPGRE_BROADCAST=y
CONFIG_IP_MROUTE=y
CONFIG_IP_PIMSM_V1=y
CONFIG_IP_PIMSM_V2=y
CONFIG_ARPD=y
CONFIG_INET_ECN=y
CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set

#
# IP: Virtual Server Configuration
#
# CONFIG_IP_VS is not set
# CONFIG_IPV6 is not set
# CONFIG_DECNET is not set
# CONFIG_BRIDGE is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set

#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_CONNTRACK is not set
# CONFIG_IP_NF_QUEUE is not set
# CONFIG_IP_NF_IPTABLES is not set
# CONFIG_IP_NF_ARPTABLES is not set
# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
# CONFIG_IP_NF_COMPAT_IPFWADM is not set
CONFIG_XFRM=y
# CONFIG_XFRM_USER is not set

#
# SCTP Configuration (EXPERIMENTAL)
#
CONFIG_IPV6_SCTP__=y
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_LLC is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_FASTROUTE is not set
# CONFIG_NET_HW_FLOWCONTROL is not set

#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
CONFIG_NETDEVICES=y

#
# ARCnet devices
#
# CONFIG_ARCNET is not set
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
# CONFIG_NET_SB1000 is not set

#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
# CONFIG_MII is not set
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set

#
# Tulip family network device support
#
# CONFIG_NET_TULIP is not set
# CONFIG_AT1700 is not set
# CONFIG_DEPCA is not set
# CONFIG_HP100 is not set
# CONFIG_NET_ISA is not set
CONFIG_NET_PCI=y
# CONFIG_PCNET32 is not set
# CONFIG_AMD8111_ETH is not set
# CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_AC3200 is not set
# CONFIG_APRICOT is not set
# CONFIG_B44 is not set
# CONFIG_CS89x0 is not set
# CONFIG_DGRS is not set
# CONFIG_EEPRO100 is not set
# CONFIG_E100 is not set
# CONFIG_FEALNX is not set
CONFIG_NATSEMI=y
# CONFIG_NE2K_PCI is not set
# CONFIG_8139CP is not set
# CONFIG_8139TOO is not set
# CONFIG_SIS900 is not set
# CONFIG_EPIC100 is not set
# CONFIG_SUNDANCE is not set
# CONFIG_TLAN is not set
# CONFIG_VIA_RHINE is not set
# CONFIG_NET_POCKET is not set

#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
# CONFIG_E1000 is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set
# CONFIG_SIS190 is not set
# CONFIG_SK98LIN is not set
# CONFIG_TIGON3 is not set

#
# Ethernet (10000 Mbit)
#
# CONFIG_IXGB is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PLIP is not set
CONFIG_PPP=m
CONFIG_PPP_MULTILINK=y
CONFIG_PPP_FILTER=y
CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
CONFIG_PPPOE=m
# CONFIG_SLIP is not set

#
# Wireless LAN (non-hamradio)
#
# CONFIG_NET_RADIO is not set

#
# Token Ring devices (depends on LLC=y)
#
# CONFIG_NET_FC is not set
# CONFIG_RCPCI is not set
# CONFIG_SHAPER is not set

#
# Wan interfaces
#
# CONFIG_WAN is not set

#
# PCMCIA network device support
#
# CONFIG_NET_PCMCIA is not set

#
# Amateur Radio support
#
# CONFIG_HAMRADIO is not set

#
# IrDA (infrared) support
#
# CONFIG_IRDA is not set

#
# ISDN subsystem
#
# CONFIG_ISDN_BOOL is not set

#
# Telephony Support
#
# CONFIG_PHONE is not set

#
# Input device support
#
CONFIG_INPUT=y

#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
CONFIG_INPUT_JOYDEV=y
# CONFIG_INPUT_TSDEV is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set

#
# Input I/O drivers
#
# CONFIG_GAMEPORT is not set
CONFIG_SOUND_GAMEPORT=y
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_SERPORT=y
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PARKBD is not set
# CONFIG_SERIO_PCIPS2 is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_INPORT is not set
# CONFIG_MOUSE_LOGIBM is not set
# CONFIG_MOUSE_PC110PAD is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_PCSPKR=m
# CONFIG_INPUT_UINPUT is not set

#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_SERIAL_NONSTANDARD is not set

#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
# CONFIG_SERIAL_8250_CS is not set
CONFIG_SERIAL_8250_ACPI=y
# CONFIG_SERIAL_8250_EXTENDED is not set

#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=256
CONFIG_PRINTER=m
# CONFIG_LP_CONSOLE is not set
CONFIG_PPDEV=m
# CONFIG_TIPAR is not set

#
# I2C support
#
# CONFIG_I2C is not set

#
# I2C Hardware Sensors Mainboard support
#

#
# I2C Hardware Sensors Chip support
#
# CONFIG_I2C_SENSOR is not set

#
# Mice
#
# CONFIG_BUSMOUSE is not set
# CONFIG_QIC02_TAPE is not set

#
# IPMI
#
# CONFIG_IPMI_HANDLER is not set

#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
# CONFIG_HW_RANDOM is not set
# CONFIG_NVRAM is not set
CONFIG_RTC=y
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set

#
# Ftape, the floppy tape device driver
#
# CONFIG_FTAPE is not set
CONFIG_AGP=m
CONFIG_AGP_ALI=m
CONFIG_AGP_ATI=m
# CONFIG_AGP_AMD is not set
# CONFIG_AGP_AMD_8151 is not set
# CONFIG_AGP_INTEL is not set
# CONFIG_AGP_NVIDIA is not set
# CONFIG_AGP_SIS is not set
# CONFIG_AGP_SWORKS is not set
# CONFIG_AGP_VIA is not set
CONFIG_DRM=y
# CONFIG_DRM_TDFX is not set
# CONFIG_DRM_GAMMA is not set
# CONFIG_DRM_R128 is not set
CONFIG_DRM_RADEON=y
# CONFIG_DRM_MGA is not set

#
# PCMCIA character devices
#
# CONFIG_SYNCLINK_CS is not set
# CONFIG_MWAVE is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_HANGCHECK_TIMER is not set

#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set

#
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set

#
# File systems
#
CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XATTR is not set
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
# CONFIG_EXT3_FS_POSIX_ACL is not set
# CONFIG_EXT3_FS_SECURITY is not set
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=y
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
# CONFIG_JFS_FS is not set
# CONFIG_XFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
CONFIG_AUTOFS4_FS=y

#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
CONFIG_ZISOFS_FS=m
# CONFIG_UDF_FS is not set

#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
# CONFIG_NTFS_FS is not set

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
# CONFIG_DEVFS_FS is not set
CONFIG_DEVPTS_FS=y
# CONFIG_DEVPTS_FS_XATTR is not set
CONFIG_TMPFS=y
CONFIG_RAMFS=y

#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set

#
# Network File Systems
#
CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V4 is not set
CONFIG_NFS_DIRECTIO=y
# CONFIG_NFSD is not set
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
# CONFIG_EXPORTFS is not set
CONFIG_SUNRPC=m
# CONFIG_SUNRPC_GSS is not set
CONFIG_SMB_FS=m
CONFIG_SMB_NLS_DEFAULT=y
CONFIG_SMB_NLS_REMOTE="cp850"
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_INTERMEZZO_FS is not set
# CONFIG_AFS_FS is not set

#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
CONFIG_SMB_NLS=y
CONFIG_NLS=y

#
# Native Language Support
#
CONFIG_NLS_DEFAULT="iso8859-15"
# CONFIG_NLS_CODEPAGE_437 is not set
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
CONFIG_NLS_CODEPAGE_850=m
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
CONFIG_NLS_ISO8859_1=m
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
CONFIG_NLS_ISO8859_15=m
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
CONFIG_NLS_UTF8=m

#
# Graphics support
#
CONFIG_FB=y
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_VGA16 is not set
CONFIG_FB_VESA=y
CONFIG_VIDEO_SELECT=y
# CONFIG_FB_HGA is not set
# CONFIG_FB_RIVA is not set
# CONFIG_FB_MATROX is not set
CONFIG_FB_RADEON=y
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_PM3 is not set
# CONFIG_FB_VIRTUAL is not set

#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
# CONFIG_MDA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_PCI_CONSOLE=y
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y

#
# Logo configuration
#
CONFIG_LOGO=y
CONFIG_LOGO_LINUX_MONO=y
CONFIG_LOGO_LINUX_VGA16=y
CONFIG_LOGO_LINUX_CLUT224=y

#
# Sound
#
CONFIG_SOUND=y

#
# Advanced Linux Sound Architecture
#
CONFIG_SND=y
# CONFIG_SND_SEQUENCER is not set
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=y
CONFIG_SND_PCM_OSS=y
# CONFIG_SND_RTCTIMER is not set
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set

#
# Generic devices
#
# CONFIG_SND_DUMMY is not set
# CONFIG_SND_MTPAV is not set
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_MPU401 is not set

#
# ISA devices
#
# CONFIG_SND_AD1848 is not set
# CONFIG_SND_CS4231 is not set
# CONFIG_SND_CS4232 is not set
# CONFIG_SND_CS4236 is not set
# CONFIG_SND_ES1688 is not set
# CONFIG_SND_ES18XX is not set
# CONFIG_SND_GUSCLASSIC is not set
# CONFIG_SND_GUSEXTREME is not set
# CONFIG_SND_GUSMAX is not set
# CONFIG_SND_INTERWAVE is not set
# CONFIG_SND_INTERWAVE_STB is not set
# CONFIG_SND_OPTI92X_AD1848 is not set
# CONFIG_SND_OPTI92X_CS4231 is not set
# CONFIG_SND_OPTI93X is not set
# CONFIG_SND_SB8 is not set
# CONFIG_SND_SB16 is not set
# CONFIG_SND_SBAWE is not set
# CONFIG_SND_WAVEFRONT is not set
# CONFIG_SND_CMI8330 is not set
# CONFIG_SND_OPL3SA2 is not set
# CONFIG_SND_SGALAXY is not set
# CONFIG_SND_SSCAPE is not set

#
# PCI devices
#
CONFIG_SND_ALI5451=m
# CONFIG_SND_AZT3328 is not set
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_CS4281 is not set
# CONFIG_SND_EMU10K1 is not set
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_NM256 is not set
# CONFIG_SND_RME32 is not set
# CONFIG_SND_RME96 is not set
# CONFIG_SND_RME9652 is not set
# CONFIG_SND_HDSP is not set
# CONFIG_SND_TRIDENT is not set
# CONFIG_SND_YMFPCI is not set
# CONFIG_SND_ALS4000 is not set
# CONFIG_SND_CMIPCI is not set
# CONFIG_SND_ENS1370 is not set
# CONFIG_SND_ENS1371 is not set
# CONFIG_SND_ES1938 is not set
# CONFIG_SND_ES1968 is not set
# CONFIG_SND_MAESTRO3 is not set
# CONFIG_SND_FM801 is not set
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
# CONFIG_SND_INTEL8X0 is not set
# CONFIG_SND_SONICVIBES is not set
# CONFIG_SND_VIA82XX is not set
# CONFIG_SND_VX222 is not set

#
# ALSA USB devices
#
# CONFIG_SND_USB_AUDIO is not set

#
# PCMCIA devices
#
# CONFIG_SND_VXPOCKET is not set
# CONFIG_SND_VXP440 is not set

#
# Open Sound System
#
# CONFIG_SOUND_PRIME is not set

#
# USB support
#
CONFIG_USB=y
# CONFIG_USB_DEBUG is not set

#
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_BANDWIDTH is not set
# CONFIG_USB_DYNAMIC_MINORS is not set

#
# USB Host Controller Drivers
#
# CONFIG_USB_EHCI_HCD is not set
CONFIG_USB_OHCI_HCD=m
# CONFIG_USB_UHCI_HCD is not set

#
# USB Device Class drivers
#
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_BLUETOOTH_TTY is not set
# CONFIG_USB_MIDI is not set
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
# CONFIG_USB_STORAGE_ISD200 is not set
# CONFIG_USB_STORAGE_DPCM is not set
# CONFIG_USB_STORAGE_HP8200e is not set
# CONFIG_USB_STORAGE_SDDR09 is not set
# CONFIG_USB_STORAGE_SDDR55 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set

#
# USB Human Interface Devices (HID)
#
CONFIG_USB_HID=y
CONFIG_USB_HIDINPUT=y
# CONFIG_HID_FF is not set
CONFIG_USB_HIDDEV=y
# CONFIG_USB_AIPTEK is not set
# CONFIG_USB_WACOM is not set
# CONFIG_USB_KBTAB is not set
# CONFIG_USB_POWERMATE is not set
# CONFIG_USB_XPAD is not set

#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_SCANNER is not set
# CONFIG_USB_MICROTEK is not set
# CONFIG_USB_HPUSBSCSI is not set

#
# USB Multimedia devices
#
# CONFIG_USB_DABUSB is not set

#
# Video4Linux support is needed for USB Multimedia device support
#

#
# USB Network adaptors
#
# CONFIG_USB_AX8817X is not set
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET is not set

#
# USB port drivers
#
# CONFIG_USB_USS720 is not set

#
# USB Serial Converter support
#
# CONFIG_USB_SERIAL is not set

#
# USB Miscellaneous drivers
#
# CONFIG_USB_TIGL is not set
# CONFIG_USB_AUERSWALD is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_BRLVGER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_TEST is not set
# CONFIG_USB_GADGET is not set

#
# Bluetooth support
#
# CONFIG_BT is not set

#
# Profiling support
#
# CONFIG_PROFILING is not set

#
# Kernel hacking
#
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_STACKOVERFLOW is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_IOVIRT is not set
CONFIG_MAGIC_SYSRQ=y
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_PAGEALLOC is not set
# CONFIG_SPINLINE is not set
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_KGDB is not set
# CONFIG_FRAME_POINTER is not set

#
# Security options
#
# CONFIG_SECURITY is not set

#
# Cryptographic options
#
CONFIG_CRYPTO=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_NULL=y
CONFIG_CRYPTO_MD4=y
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA512=y
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_BLOWFISH=y
CONFIG_CRYPTO_TWOFISH=y
CONFIG_CRYPTO_SERPENT=y
CONFIG_CRYPTO_AES=y
CONFIG_CRYPTO_CAST5=y
CONFIG_CRYPTO_CAST6=y
CONFIG_CRYPTO_DEFLATE=y
# CONFIG_CRYPTO_TEST is not set

#
# Library routines
#
CONFIG_CRC32=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_X86_BIOS_REBOOT=y

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

* Re: Power Management Update
  2003-08-30 21:25 Patrick Mochel
@ 2003-08-31 12:31 ` Felipe Alfaro Solana
  2003-08-31 13:04   ` Mathieu LESNIAK
  2003-08-31 21:28 ` Pavel Machek
  2003-08-31 22:15 ` Pavel Machek
  2 siblings, 1 reply; 28+ messages in thread
From: Felipe Alfaro Solana @ 2003-08-31 12:31 UTC (permalink / raw)
  To: Patrick Mochel; +Cc: LKML

[-- Attachment #1: Type: text/plain, Size: 1780 bytes --]

On Sat, 2003-08-30 at 23:25, Patrick Mochel wrote:
> I'm pleased to announce the release of the first patchset of power 
> management changes for 2.6.0. The purpose of this release is to give 
> people a chance to review and test the PM code before it's sent on to 
> Linus. 

Hi!

Running with 2.6.0-test4-mm4:

# echo 4 > /proc/acpi/sleep

Stopping tasks: ======|
Freeing memory: ..|
hdc: start_power_step(step: 0)
Unable to handle kernel NULL pointer dereference at virtual address
00000000
 printing eip:
00000000
*pde = 00000000
Oops: 0000 [#1]
PREEMPT
CPU:    0
EIP:    0060:[<00000000>]    Not taintled VLI
EFLAGS: 00010282
EIP is at 0x0
eax: c032f180   ebx: c039588c   ecx: c02f7b50   edx: 00000282
esi: 00000000   edi: cffa1e2c   ebp: c13ce780   esp: cffa1d40
ds: 007b   es: 007b   ss: 0068
Process bash (pid: 1, threadinfo=cffa0000 task=c12bb940)
Stack: c01fbcd1 c039588c cffa1e2c 00000000 00000088 0000001e 0000000f
cffa1e2c
       c039588c c03957e0 c01fc063 c039588c cffa1e2c 00000001 cffa0000
c13cd600
       cffa0000 cffa1e2c 00000202 00000001 c01fc8a3 c13ce780 ffffffff
00000001
Call Trace:
 [<c01fbcd1>] start_request+0x131/0x290
 [<c01fc063>] ide_do_request+0x203/0x3b0
 [<c01fc8a3>] ide_do_drive_cmd+0xd3/0x130
 [<c0205592>] generic_ide_suspend+0x92/0xc0
 [<c01f17e8>] suspend_device+0x98/0x100
 [<c01f18a8>] device_suspend+0x58/0x80
 [<c0138739>] prepare+0x39/0xc0
 [<c01387cc>] pm_suspend_disk+0xc/0xc0
 [<c0137cc5>] enter_state+0xa5/0xb0
 [<c013974b>] software_suspend+0x3b/0x40
 [<c01c898a>] acpi_system_write_sleep+0xb3/0xcd
 [<c01c88d7>] acpi_system_write_sleep+0x0/0xcd
 [<c01564b8>] vfs_write+0xb8/0x130
 [<c01565e2>] sys_write+0x42/0x70
 [<c02ba00e>] sysenter_past_esp+0x43/0x65

Code:  Bad EIP value.
 <0>Kernel panic: Attempted to kill init!

Thanks!

[-- Attachment #2: config-2.6.0-test4-mm4 --]
[-- Type: text/plain, Size: 20842 bytes --]

#
# Automatically generated make config: don't edit
#
CONFIG_X86=y
CONFIG_MMU=y
CONFIG_UID16=y
CONFIG_GENERIC_ISA_DMA=y

#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
# CONFIG_BROKEN is not set

#
# General setup
#
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
CONFIG_LOG_BUF_SHIFT=14
# CONFIG_IKCONFIG is not set
CONFIG_EMBEDDED=y
CONFIG_KALLSYMS=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
# CONFIG_IOSCHED_NOOP is not set
# CONFIG_IOSCHED_AS is not set
# CONFIG_IOSCHED_DEADLINE is not set
CONFIG_IOSCHED_CFQ=y

#
# Loadable module support
#
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_OBSOLETE_MODPARM=y
# CONFIG_MODVERSIONS is not set
CONFIG_KMOD=y

#
# Processor type and features
#
CONFIG_X86_PC=y
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_VISWS is not set
# CONFIG_X86_GENERICARCH is not set
# CONFIG_X86_ES7000 is not set
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
CONFIG_MPENTIUMIII=y
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MELAN is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
CONFIG_X86_GENERIC=y
CONFIG_X86_CMPXCHG=y
CONFIG_X86_XADD=y
CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
# CONFIG_X86_4G is not set
# CONFIG_X86_SWITCH_PAGETABLES is not set
# CONFIG_X86_4G_VM_LAYOUT is not set
# CONFIG_X86_UACCESS_INDIRECT is not set
# CONFIG_X86_HIGH_ENTRY is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_HPET_TIMER=y
# CONFIG_SMP is not set
CONFIG_PREEMPT=y
# CONFIG_X86_UP_APIC is not set
CONFIG_X86_TSC=y
# CONFIG_X86_MCE is not set
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
CONFIG_MICROCODE=y
CONFIG_X86_MSR=y
CONFIG_X86_CPUID=y
# CONFIG_EDD is not set
CONFIG_NOHIGHMEM=y
# CONFIG_HIGHMEM4G is not set
# CONFIG_HIGHMEM64G is not set
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
CONFIG_HAVE_DEC_LOCK=y

#
# Power management options (ACPI, APM)
#
CONFIG_PM=y
CONFIG_SOFTWARE_SUSPEND=y

#
# ACPI (Advanced Configuration and Power Interface) Support
#
CONFIG_ACPI_HT=y
CONFIG_ACPI=y
CONFIG_ACPI_BOOT=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_SLEEP_PROC_FS=y
CONFIG_ACPI_AC=y
CONFIG_ACPI_BATTERY=y
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_FAN=y
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_ASUS is not set
# CONFIG_ACPI_TOSHIBA is not set
# CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_BUS=y
CONFIG_ACPI_INTERPRETER=y
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_PCI=y
CONFIG_ACPI_SYSTEM=y

#
# APM (Advanced Power Management) BIOS Support
#
# CONFIG_APM is not set

#
# CPU Frequency scaling
#
# CONFIG_CPU_FREQ is not set

#
# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
#
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GODIRECT is not set
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
# CONFIG_PCI_LEGACY_PROC is not set
CONFIG_PCI_NAMES=y
# CONFIG_ISA is not set
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set
CONFIG_HOTPLUG=y

#
# PCMCIA/CardBus support
#
CONFIG_PCMCIA=y
CONFIG_YENTA=y
CONFIG_CARDBUS=y
# CONFIG_I82092 is not set
# CONFIG_TCIC is not set

#
# PCI Hotplug Support
#
# CONFIG_HOTPLUG_PCI is not set

#
# Executable file formats
#
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_AOUT is not set
# CONFIG_BINFMT_MISC is not set

#
# Generic Driver Options
#
# CONFIG_FW_LOADER is not set

#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set

#
# Parallel port support
#
# CONFIG_PARPORT is not set

#
# Plug and Play support
#
# CONFIG_PNP is not set

#
# Block devices
#
CONFIG_BLK_DEV_FD=m
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
CONFIG_BLK_DEV_LOOP=m
CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_BLK_DEV_INITRD is not set
# CONFIG_LBD is not set

#
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y

#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_IDEDISK_MULTI_MODE=y
# CONFIG_IDEDISK_STROKE is not set
# CONFIG_BLK_DEV_IDECS is not set
CONFIG_BLK_DEV_IDECD=m
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_IDE_TASK_IOCTL is not set
CONFIG_IDE_TASKFILE_IO=y

#
# IDE chipset support/bugfixes
#
# CONFIG_BLK_DEV_CMD640 is not set
CONFIG_BLK_DEV_IDEPCI=y
# CONFIG_IDEPCI_SHARE_IRQ is not set
# CONFIG_BLK_DEV_OFFBOARD is not set
# CONFIG_BLK_DEV_GENERIC is not set
# CONFIG_BLK_DEV_OPTI621 is not set
# CONFIG_BLK_DEV_RZ1000 is not set
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_IDE_TCQ is not set
# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
CONFIG_IDEDMA_PCI_AUTO=y
# CONFIG_IDEDMA_ONLYDISK is not set
# CONFIG_IDEDMA_PCI_WIP is not set
CONFIG_BLK_DEV_ADMA=y
# CONFIG_BLK_DEV_AEC62XX is not set
# CONFIG_BLK_DEV_ALI15X3 is not set
# CONFIG_BLK_DEV_AMD74XX is not set
# CONFIG_BLK_DEV_CMD64X is not set
# CONFIG_BLK_DEV_TRIFLEX is not set
# CONFIG_BLK_DEV_CY82C693 is not set
# CONFIG_BLK_DEV_CS5520 is not set
# CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_HPT34X is not set
# CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_SC1200 is not set
CONFIG_BLK_DEV_PIIX=y
# CONFIG_BLK_DEV_NS87415 is not set
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
# CONFIG_BLK_DEV_SVWKS is not set
# CONFIG_BLK_DEV_SIIMAGE is not set
# CONFIG_BLK_DEV_SIS5513 is not set
# CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not set
# CONFIG_BLK_DEV_VIA82CXXX is not set
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_IVB is not set
CONFIG_IDEDMA_AUTO=y
# CONFIG_DMA_NONPCI is not set
# CONFIG_BLK_DEV_HD is not set

#
# SCSI device support
#
# CONFIG_SCSI is not set

#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set

#
# Fusion MPT device support
#

#
# IEEE 1394 (FireWire) support (EXPERIMENTAL)
#
CONFIG_IEEE1394=m

#
# Subsystem Options
#
# CONFIG_IEEE1394_VERBOSEDEBUG is not set
# CONFIG_IEEE1394_OUI_DB is not set

#
# Device Drivers
#

#
# Texas Instruments PCILynx requires I2C bit-banging
#
CONFIG_IEEE1394_OHCI1394=m

#
# Protocol Drivers
#
CONFIG_IEEE1394_VIDEO1394=m
CONFIG_IEEE1394_ETH1394=m
CONFIG_IEEE1394_DV1394=m
CONFIG_IEEE1394_RAWIO=m
CONFIG_IEEE1394_CMP=m
CONFIG_IEEE1394_AMDTP=m

#
# I2O device support
#
# CONFIG_I2O is not set

#
# Networking support
#
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
# CONFIG_NETLINK_DEV is not set
CONFIG_UNIX=y
CONFIG_NET_KEY=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set
# CONFIG_ARPD is not set
# CONFIG_INET_ECN is not set
# CONFIG_SYN_COOKIES is not set
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m

#
# IP: Virtual Server Configuration
#
# CONFIG_IP_VS is not set
CONFIG_IPV6=m
CONFIG_IPV6_PRIVACY=y
CONFIG_INET6_AH=m
CONFIG_INET6_ESP=m
CONFIG_INET6_IPCOMP=m
CONFIG_IPV6_TUNNEL=m
# CONFIG_DECNET is not set
# CONFIG_BRIDGE is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set

#
# IP: Netfilter Configuration
#
CONFIG_IP_NF_CONNTRACK=m
CONFIG_IP_NF_FTP=m
CONFIG_IP_NF_IRC=m
CONFIG_IP_NF_TFTP=m
CONFIG_IP_NF_AMANDA=m
# CONFIG_IP_NF_QUEUE is not set
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_LIMIT=m
CONFIG_IP_NF_MATCH_IPRANGE=m
CONFIG_IP_NF_MATCH_MAC=m
CONFIG_IP_NF_MATCH_PKTTYPE=m
CONFIG_IP_NF_MATCH_MARK=m
CONFIG_IP_NF_MATCH_MULTIPORT=m
CONFIG_IP_NF_MATCH_TOS=m
CONFIG_IP_NF_MATCH_RECENT=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_DSCP=m
CONFIG_IP_NF_MATCH_AH_ESP=m
CONFIG_IP_NF_MATCH_LENGTH=m
CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_MATCH_TCPMSS=m
CONFIG_IP_NF_MATCH_HELPER=m
CONFIG_IP_NF_MATCH_STATE=m
CONFIG_IP_NF_MATCH_CONNTRACK=m
CONFIG_IP_NF_MATCH_OWNER=m
CONFIG_IP_NF_FILTER=m
# CONFIG_IP_NF_TARGET_REJECT is not set
# CONFIG_IP_NF_NAT is not set
# CONFIG_IP_NF_MANGLE is not set
CONFIG_IP_NF_TARGET_LOG=m
# CONFIG_IP_NF_TARGET_ULOG is not set
CONFIG_IP_NF_TARGET_TCPMSS=m
# CONFIG_IP_NF_ARPTABLES is not set
# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
# CONFIG_IP_NF_COMPAT_IPFWADM is not set

#
# IPv6: Netfilter Configuration
#
# CONFIG_IP6_NF_QUEUE is not set
# CONFIG_IP6_NF_IPTABLES is not set
CONFIG_XFRM=y
CONFIG_XFRM_USER=m

#
# SCTP Configuration (EXPERIMENTAL)
#
CONFIG_IPV6_SCTP__=m
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
CONFIG_VLAN_8021Q=m
# CONFIG_LLC is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_FASTROUTE is not set
# CONFIG_NET_HW_FLOWCONTROL is not set

#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set

#
# Network testing
#
CONFIG_NET_PKTGEN=m
CONFIG_NETDEVICES=y

#
# ARCnet devices
#
# CONFIG_ARCNET is not set
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
CONFIG_TUN=m
# CONFIG_ETHERTAP is not set

#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
# CONFIG_MII is not set
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
CONFIG_NET_VENDOR_3COM=y
CONFIG_VORTEX=m
# CONFIG_TYPHOON is not set

#
# Tulip family network device support
#
# CONFIG_NET_TULIP is not set
# CONFIG_HP100 is not set
# CONFIG_NET_PCI is not set

#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
# CONFIG_E1000 is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set
# CONFIG_SIS190 is not set
# CONFIG_SK98LIN is not set
# CONFIG_TIGON3 is not set

#
# Ethernet (10000 Mbit)
#
# CONFIG_IXGB is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set

#
# Wireless LAN (non-hamradio)
#
# CONFIG_NET_RADIO is not set

#
# Token Ring devices (depends on LLC=y)
#
# CONFIG_RCPCI is not set
# CONFIG_SHAPER is not set

#
# Wan interfaces
#
# CONFIG_WAN is not set

#
# PCMCIA network device support
#
CONFIG_NET_PCMCIA=y
# CONFIG_PCMCIA_3C589 is not set
# CONFIG_PCMCIA_3C574 is not set
# CONFIG_PCMCIA_FMVJ18X is not set
# CONFIG_PCMCIA_PCNET is not set
# CONFIG_PCMCIA_NMCLAN is not set
# CONFIG_PCMCIA_SMC91C92 is not set
CONFIG_PCMCIA_XIRC2PS=m
# CONFIG_PCMCIA_AXNET is not set

#
# Amateur Radio support
#
# CONFIG_HAMRADIO is not set

#
# IrDA (infrared) support
#
# CONFIG_IRDA is not set

#
# ISDN subsystem
#
# CONFIG_ISDN_BOOL is not set

#
# Telephony Support
#
# CONFIG_PHONE is not set

#
# Input device support
#
CONFIG_INPUT=y

#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
# CONFIG_INPUT_EVDEV is not set
# CONFIG_INPUT_EVBUG is not set

#
# Input I/O drivers
#
# CONFIG_GAMEPORT is not set
CONFIG_SOUND_GAMEPORT=y
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PCIPS2 is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
# CONFIG_MOUSE_PS2_SYNAPTICS is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set

#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_SERIAL_NONSTANDARD is not set

#
# Serial drivers
#
# CONFIG_SERIAL_8250 is not set

#
# Non-8250 serial port support
#
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=256

#
# I2C support
#
# CONFIG_I2C is not set

#
# I2C Hardware Sensors Mainboard support
#

#
# I2C Hardware Sensors Chip support
#
# CONFIG_I2C_SENSOR is not set

#
# Mice
#
# CONFIG_BUSMOUSE is not set
# CONFIG_QIC02_TAPE is not set

#
# IPMI
#
# CONFIG_IPMI_HANDLER is not set

#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
# CONFIG_HW_RANDOM is not set
# CONFIG_NVRAM is not set
CONFIG_RTC=y
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set

#
# Ftape, the floppy tape device driver
#
# CONFIG_FTAPE is not set
CONFIG_AGP=y
# CONFIG_AGP_ALI is not set
# CONFIG_AGP_ATI is not set
# CONFIG_AGP_AMD is not set
# CONFIG_AGP_AMD_8151 is not set
CONFIG_AGP_INTEL=y
# CONFIG_AGP_NVIDIA is not set
# CONFIG_AGP_SIS is not set
# CONFIG_AGP_SWORKS is not set
# CONFIG_AGP_VIA is not set
# CONFIG_DRM is not set

#
# PCMCIA character devices
#
# CONFIG_SYNCLINK_CS is not set
# CONFIG_MWAVE is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_HANGCHECK_TIMER is not set

#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set

#
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set

#
# File systems
#
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
# CONFIG_EXT2_FS_SECURITY is not set
# CONFIG_EXT3_FS is not set
# CONFIG_JBD is not set
CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set

#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
CONFIG_ZISOFS_FS=m
CONFIG_UDF_FS=m

#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=m
# CONFIG_MSDOS_FS is not set
CONFIG_VFAT_FS=m
# CONFIG_NTFS_FS is not set

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
# CONFIG_DEVFS_FS is not set
CONFIG_DEVPTS_FS=y
# CONFIG_DEVPTS_FS_XATTR is not set
CONFIG_TMPFS=y
CONFIG_RAMFS=y

#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set

#
# Network File Systems
#
CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
CONFIG_NFS_V4=y
CONFIG_NFS_DIRECTIO=y
CONFIG_NFSD=m
CONFIG_NFSD_V3=y
CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
CONFIG_SUNRPC=m
CONFIG_SUNRPC_GSS=m
CONFIG_RPCSEC_GSS_KRB5=m
CONFIG_SMB_FS=m
# CONFIG_SMB_NLS_DEFAULT is not set
CONFIG_CIFS=m
# CONFIG_NCP_FS is not set
CONFIG_CODA_FS=m
CONFIG_INTERMEZZO_FS=m
# CONFIG_AFS_FS is not set

#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
CONFIG_SMB_NLS=y
CONFIG_NLS=y

#
# Native Language Support
#
CONFIG_NLS_DEFAULT="utf8"
CONFIG_NLS_CODEPAGE_437=m
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
CONFIG_NLS_CODEPAGE_850=m
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
CONFIG_NLS_ISO8859_1=m
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
CONFIG_NLS_ISO8859_15=m
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
CONFIG_NLS_UTF8=y

#
# Graphics support
#
# CONFIG_FB is not set
CONFIG_VIDEO_SELECT=y

#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
# CONFIG_MDA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y

#
# Sound
#
CONFIG_SOUND=y

#
# Advanced Linux Sound Architecture
#
CONFIG_SND=y
# CONFIG_SND_SEQUENCER is not set
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=y
CONFIG_SND_PCM_OSS=y
CONFIG_SND_RTCTIMER=y
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set

#
# Generic devices
#
# CONFIG_SND_DUMMY is not set
# CONFIG_SND_MTPAV is not set
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_MPU401 is not set

#
# PCI devices
#
# CONFIG_SND_ALI5451 is not set
# CONFIG_SND_AZT3328 is not set
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_CS4281 is not set
# CONFIG_SND_EMU10K1 is not set
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_NM256 is not set
# CONFIG_SND_RME32 is not set
# CONFIG_SND_RME96 is not set
# CONFIG_SND_RME9652 is not set
# CONFIG_SND_HDSP is not set
# CONFIG_SND_TRIDENT is not set
CONFIG_SND_YMFPCI=y
# CONFIG_SND_ALS4000 is not set
# CONFIG_SND_CMIPCI is not set
# CONFIG_SND_ENS1370 is not set
# CONFIG_SND_ENS1371 is not set
# CONFIG_SND_ES1938 is not set
# CONFIG_SND_ES1968 is not set
# CONFIG_SND_MAESTRO3 is not set
# CONFIG_SND_FM801 is not set
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
# CONFIG_SND_INTEL8X0 is not set
# CONFIG_SND_SONICVIBES is not set
# CONFIG_SND_VIA82XX is not set
# CONFIG_SND_VX222 is not set

#
# ALSA USB devices
#
# CONFIG_SND_USB_AUDIO is not set

#
# PCMCIA devices
#
# CONFIG_SND_VXPOCKET is not set
# CONFIG_SND_VXP440 is not set

#
# Open Sound System
#
# CONFIG_SOUND_PRIME is not set

#
# USB support
#
CONFIG_USB=m
# CONFIG_USB_DEBUG is not set

#
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_BANDWIDTH is not set
# CONFIG_USB_DYNAMIC_MINORS is not set

#
# USB Host Controller Drivers
#
# CONFIG_USB_EHCI_HCD is not set
CONFIG_USB_OHCI_HCD=m
CONFIG_USB_UHCI_HCD=m

#
# USB Device Class drivers
#
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_BLUETOOTH_TTY is not set
# CONFIG_USB_MIDI is not set
# CONFIG_USB_ACM is not set
CONFIG_USB_PRINTER=m

#
# SCSI support is needed for USB Storage
#
# CONFIG_USB_STORAGE is not set

#
# USB Human Interface Devices (HID)
#
CONFIG_USB_HID=m
CONFIG_USB_HIDINPUT=y
# CONFIG_HID_FF is not set
CONFIG_USB_HIDDEV=y

#
# USB HID Boot Protocol drivers
#
# CONFIG_USB_KBD is not set
CONFIG_USB_MOUSE=m
# CONFIG_USB_AIPTEK is not set
# CONFIG_USB_WACOM is not set
# CONFIG_USB_KBTAB is not set
# CONFIG_USB_POWERMATE is not set
# CONFIG_USB_XPAD is not set

#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
CONFIG_USB_SCANNER=m

#
# USB Multimedia devices
#
# CONFIG_USB_DABUSB is not set

#
# Video4Linux support is needed for USB Multimedia device support
#

#
# USB Network adaptors
#
# CONFIG_USB_AX8817X is not set
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET is not set

#
# USB port drivers
#

#
# USB Serial Converter support
#
# CONFIG_USB_SERIAL is not set

#
# USB Miscellaneous drivers
#
# CONFIG_USB_TIGL is not set
# CONFIG_USB_AUERSWALD is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_BRLVGER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_TEST is not set
# CONFIG_USB_GADGET is not set

#
# Bluetooth support
#
# CONFIG_BT is not set

#
# Profiling support
#
# CONFIG_PROFILING is not set

#
# Kernel hacking
#
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_STACKOVERFLOW is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_IOVIRT is not set
CONFIG_MAGIC_SYSRQ=y
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_PAGEALLOC is not set
# CONFIG_SPINLINE is not set
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_KGDB is not set
# CONFIG_FRAME_POINTER is not set

#
# Security options
#
# CONFIG_SECURITY is not set

#
# Cryptographic options
#
CONFIG_CRYPTO=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_AES=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_DEFLATE=y
CONFIG_CRYPTO_TEST=m

#
# Library routines
#
CONFIG_CRC32=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_X86_BIOS_REBOOT=y

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

* Power Management Update
@ 2003-08-30 21:25 Patrick Mochel
  2003-08-31 12:31 ` Felipe Alfaro Solana
                   ` (2 more replies)
  0 siblings, 3 replies; 28+ messages in thread
From: Patrick Mochel @ 2003-08-30 21:25 UTC (permalink / raw)
  To: linux-kernel


I'm pleased to announce the release of the first patchset of power 
management changes for 2.6.0. The purpose of this release is to give 
people a chance to review and test the PM code before it's sent on to 
Linus. 

These patches include a number of cleanups and fixes to the PM core code, 
the driver core PM code, and swsusp. I have verified that all suspend 
states (standby, suspend-to-ram, and suspend-to-disk) work on a number of 
personal systems using ACPI as the low-level power interface. However, 
this is with limited functionality (from a VGA console with minimal 
processes running). 

These patches should restore suspend functionality for those that were
able to successfully do it before -test3 and -test4. My apologies for the 
inconvenience my previous changes caused. These patches will probably not 
allow any more people to suspend/resume than before.

The net benefit of these, and the already committed ones, are a cleaner
power management subsystem and the development of the proper framework for
successfully suspending and resuming the entire system. There are still
several rough edges, though we seem to be making headway on those
relatively rapidly, and are my sole focus at the moment.

My main concerns right now are:

- Platform devices, and more generally, devices that may belong to more 
  than one class. It's mainly a driver model problem, though it has PM
  implications that appear to be holding a few people up. 

- Drivers
  Drivers have always been the main impedence to having a working PM core, 
  though it's been difficult to make a lot of progress. I have a number of 
  devices that I will verify work properly, and be in contact with the 
  maintainers if necessary. (Though, I seem to be having more problems 
  with IRQ routing at the moment.)

- Getting it work on more systems. 
  Hopefully we will not run into any serious issues, though the PM code
  has traditionally been finicky. I have a wide array of test machines and
  willing testers, so this should move quickly. 

- APM
  I unfortunately have not had a chance to look into the reported APM 
  problems. But, I'm happy to say that I finally dug out an old laptop 
  that has APM on it. I should make traction soon. 


I encourage willing people to download the patch, test, and report any
problems back to me and/or the list. I cannot guarantee definite or timely
results for systems where PM simply doesn't work. However, the more
systems we characterize, the easier this will become in the future. Please 
be patient.

If you're using BitKeeper, you can pull the tree from:

	bk://kernel.bkbits.net:/home/mochel/linux-2.5-power

Or, a GNU patch is available at:

	http://developer.osdl.org/~mochel/patches/test4-pm1/test4-pm1.diff.bz2

There are split patches for each BK revision in that directory. The 
changelogs are appended. 


	Pat


This will update the following files:

 arch/i386/kernel/suspend.c     |  141 ------------
 arch/i386/kernel/suspend_asm.S |   94 --------
 arch/i386/Makefile             |    1 
 arch/i386/kernel/Makefile      |    2 
 arch/i386/power/Makefile       |    2 
 arch/i386/power/cpu.c          |  141 ++++++++++++
 arch/i386/power/swsusp.S       |  104 ++++++++-
 drivers/acpi/sleep/main.c      |   53 ++--
 drivers/acpi/sleep/proc.c      |   73 ++++++
 drivers/acpi/sleep/sleep.h     |    3 
 drivers/base/core.c            |   33 +--
 drivers/base/power/main.c      |   13 -
 drivers/base/power/power.h     |    3 
 drivers/base/power/resume.c    |   21 +
 drivers/base/power/suspend.c   |   10 
 include/asm-i386/suspend.h     |    7 
 include/linux/suspend.h        |    1 
 kernel/power/Makefile          |    2 
 kernel/power/console.c         |    2 
 kernel/power/disk.c            |  337 ++++++++++++++++++++++++++++++
 kernel/power/main.c            |  450 ++++++++---------------------------------
 kernel/power/power.h           |   39 +--
 kernel/power/swsusp.c          |  357 +++++++++++++++++++-------------
 kernel/sys.c                   |    2 
 24 files changed, 1053 insertions(+), 838 deletions(-)

through these ChangeSets:

<mochel@osdl.org> (03/08/30 1.1301)
   [acpi] Replace /proc/acpi/sleep
   
   - Bad to remove proc file now, even though it's nearly useless. Reinstated
     in the name of compatibility. 
   
   - Restored original semantics - if software_suspend() is enabled, then just
     call that (and never go into low-power state). Otherwise, call acpi_suspend().
   
   - acpi_suspend() is simply a wrapper for pm_suspend(), passing down the right
     argument. This is so we don't have to do everything manually anymore.
   
   - Fixed long-standing bug by checking for "4b" in string written in to 
     determine if we want to enter S4bios.

<mochel@osdl.org> (03/08/30 1.1300)
   [swsusp] Restore software_suspend() call.
   
   - Allows 'backdoor' interface to swsusp, as requested by Pavel. 
   
   - Simply a wrapper to pm_suspend(), though guaranteeing that swsusp is used,
     and system is shutdown (and put into low-power state).
   
   - Call in sys_reboot() changed back to call to software_suspend().

<mochel@osdl.org> (03/08/30 1.1299)
   [swsusp] Use BIO interface when reading from swap. 
   
   - bios are the preferred method for doing this type of stuff in 2.6. The 
     __bread() uses bio's in the end anyway. 
   
   - bios make it really easy to implement write functionality, so we are able
     to reset the swap signature immediately after checking it during resume.
     So, if something happens while resuming, we will still have valid swap to 
     use. 
   
   - Thanks to Jens for some help in getting it working several months ago.

<mochel@osdl.org> (03/08/29 1.1298)
   [swsusp] Minor cleanups in read_suspend_image()
   
   - Make resume_bdev global to file, so we don't have to pass it around (we 
     always use the same one, so it shouldn't make a difference).
   
   - Allocate cur in read_suspend_image(), since it's the only function that
     uses it. 
   
   - Check all errors and make sure we free cur if any happen.
   
   - Make sure to return errors from the functions called, not our own. 
   
   - Free the pagedir if we hit an error after we allocate it. 

<mochel@osdl.org> (03/08/27 1.1297)
   [acpi] Move register save closer to call to enter sleep state.
   
   - By moving acpi_{save,restore}_state_mem() into acpi_pm_enter(), implying
     after interrupts have been disabled and nothing else is running on the 
     system, S3 is able to resume properly.

<mochel@osdl.org> (03/08/27 1.1296)
   [power] Make sure devices get added to the PM lists before bus_add_device().
   
   - Prevents ordering issues when drivers add more devices ->probe(). 

<mochel@osdl.org> (03/08/26 1.1295)
   [power] Separate suspend-to-disk from other suspend sequences.
   
   - Put in kernel/power/disk.c
   - Make compilation depend on CONFIG_SOFTWARE_SUSPEND (should probably be 
     renamed to CONFIG_PM_STD or some such).

<mochel@osdl.org> (03/08/25 1.1294)
   [power] Fix handling of pm_users.
   
   - Actually decrement on device_pm_release()
   - Call from device_pm_remove().

<mochel@osdl.org> (03/08/25 1.1292)
   [power] Fix device suspend handling
   
   - Handle -EAGAIN in device_suspend() properly: keep going, with error reset
     to 0. 
   
   - Call dpm_resume() if we got a real error, instead of device_resume(), which
     would deadlock.

<mochel@osdl.org> (03/08/22 1.1276.19.8)
   [power] swsusp Cleanups
   
   - do_magic()
     - Rename to swsusp_arch_suspend().
     - Move declaration to swsusp.c
   
   - arch_prepare_suspend()
     - Return an int
     - Fix x86 version to return -EFAULT if cpu does not have pse, instead of 
       calling panic().
     - Call from swsusp_save().
   
   - do_magic_suspend_1()
     - Move body to pm_suspend_disk()
     - Remove.
   
   - do_magic_suspend_2()
     - Rename to swsusp_suspend()
     - Move IRQ fiddling to suspend_save_image(), since that's the only call 
       that needs it. 
     - Return an int.
   
   - do_magic_resume_1()
     - Move body to pm_resume().
     - Remove
   
   - do_magic_resume_2()
     - Rename to swsusp_resume(). 
     - Return an int. 
   
   - swsusp general
     - Remove unnecessary includes.
     - Remove suspend_pagedir_lock, since it was only used to disable IRQs.
     - Change swsusp_{suspend,resume} return an int, so pm_suspend_disk() knows
       if anything failed. 
   
    

<mochel@osdl.org> (03/08/22 1.1276.19.7)
   [power] Move i386-specific swsusp code to arch/i386/power/

<mochel@osdl.org> (03/08/22 1.1276.19.6)
   [power] Fix up sysfs state handling.

<mochel@osdl.org> (03/08/22 1.1276.19.5)
   [power] Make sure console level is high when suspending.

<mochel@osdl.org> (03/08/22 1.1276.20.1)
   [power] Fix sysfs state reporting.




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

end of thread, other threads:[~2003-10-18  9:48 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-09-10 19:53 Power Management Update Subodh Shrivastava
2003-09-10 21:09 ` Patrick Mochel
2003-09-10 20:44   ` Subodh Shrivastava
2003-09-11  0:12     ` Greg KH
     [not found] <3F5F9509.8080708@btopenworld.com>
2003-09-10 22:51 ` Patrick Mochel
  -- strict thread matches above, loose matches on Subject: below --
2003-09-10  0:38 Patrick Mochel
2003-09-10 13:04 ` Daniele Venzano
2003-09-10 18:10 ` Pavel Machek
2003-09-11  4:45 ` Michael Frank
2003-09-11  6:06 ` CaT
     [not found] <20030904224112.GA26556@lps.ens.fr>
     [not found] ` <Pine.LNX.4.33.0309041637440.940-100000@localhost.localdomain>
2003-09-07  9:54   ` Éric Brunet
2003-09-08 19:54     ` Patrick Mochel
2003-09-09 10:53       ` Éric Brunet
2003-09-09 15:54         ` Patrick Mochel
2003-09-01 10:57 Éric Brunet
2003-08-30 21:25 Patrick Mochel
2003-08-31 12:31 ` Felipe Alfaro Solana
2003-08-31 13:04   ` Mathieu LESNIAK
2003-09-02 18:13     ` Patrick Mochel
2003-09-02 23:50       ` Éric Brunet
2003-09-02 23:59         ` Patrick Mochel
2003-09-03  9:41       ` Mathieu LESNIAK
2003-09-03 22:41         ` Patrick Mochel
2003-09-04  9:34           ` Éric Brunet
2003-09-04 19:34             ` Patrick Mochel
     [not found]           ` <20031013194127.GA16791@lps.ens.fr>
2003-10-18  9:48             ` =?unknown-8bit?Q?=C9ric?= Brunet
2003-08-31 21:28 ` Pavel Machek
2003-08-31 22:15 ` 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).