Skip to contentSkip to conversation

suspend to RAM failure on t61p

DISCUSSION Andrew Morton 4 participants 13 messages Dec 9, 2007 – Dec 11, 2007

Subsystems (3)
lore
Share & tools
lore
#1 lore raw
Quoted 6 lines · Andrew Morton

2.6.24-rc4 on a Lenovo t61p, using FC8 config.

echo mem > /sys/power/state while running X.

It appears to suspend OK but then it instantly resumes and runs OK except the display is blank.

http://bugzilla.kernel.org/show_bug.cgi?id=9258

I have a X61 tablet, and the screen is blank after resume, too, but pressing ctrl+alt+F1/F7 usually fixes it. It seems a problem with the X video driver. I'm not sure though.

tom

#2 lore raw
Quoted 9 lines · Tomas Carnecky
Quoted 6 lines · Andrew Morton

2.6.24-rc4 on a Lenovo t61p, using FC8 config.

echo mem > /sys/power/state while running X.

It appears to suspend OK but then it instantly resumes and runs OK except the display is blank.

http://bugzilla.kernel.org/show_bug.cgi?id=9258

Yeah.

If you have a box on which the issue is visible, please add a comment in there.

Quoted 3 lines

I have a X61 tablet, and the screen is blank after resume, too, but pressing ctrl+alt+F1/F7 usually fixes it. It seems a problem with the X video driver. I'm not sure though.

s2ram has a chance to work around this.

Greetings,
Rafael

#3 lore raw
In reply to Tomas Carnecky
Quoted 5 lines · On Sun, 09 Dec 2007 13:40:07 +0100 Tomas Carnecky <[email protected]> wrote:
Quoted 4 lines · Andrew Morton

2.6.24-rc4 on a Lenovo t61p, using FC8 config.

echo mem > /sys/power/state while running X.

Quoted 9 lines
Quoted 2 lines

It appears to suspend OK but then it instantly resumes and runs OK except the display is blank.

http://bugzilla.kernel.org/show_bug.cgi?id=9258

I have a X61 tablet, and the screen is blank after resume, too, but pressing ctrl+alt+F1/F7 usually fixes it. It seems a problem with the X video driver. I'm not sure though.

This machine doesn't bring the display back after resume-from-RAM under 2.6.23 either.

The post-2.6.23 regresison here is that the suspend itself fails. Under 2.6.23 the machine suspends and requires a keystrike to start resuming. Under 2.6.24-rc4 it just instantly resumes all by itself.

And I'm having real problems working out why 2.6.23 and 2.6.24-rc4 work OK(ish) but anything in between won't boot: can't open /dev/root. Everything has scrolled off, no serial, no netconsole..

#4 lore raw
Quoted 17 lines · Andrew Morton
Quoted 5 lines · On Sun, 09 Dec 2007 13:40:07 +0100 Tomas Carnecky <[email protected]> wrote:
Quoted 4 lines · Andrew Morton

2.6.24-rc4 on a Lenovo t61p, using FC8 config.

echo mem > /sys/power/state while running X.

Quoted 9 lines
Quoted 2 lines

It appears to suspend OK but then it instantly resumes and runs OK except the display is blank.

http://bugzilla.kernel.org/show_bug.cgi?id=9258

I have a X61 tablet, and the screen is blank after resume, too, but pressing ctrl+alt+F1/F7 usually fixes it. It seems a problem with the X video driver. I'm not sure though.

Quoted 6 lines

This machine doesn't bring the display back after resume-from-RAM under 2.6.23 either.

The post-2.6.23 regresison here is that the suspend itself fails. Under 2.6.23 the machine suspends and requires a keystrike to start resuming. Under 2.6.24-rc4 it just instantly resumes all by itself.

Please see if the appended patch helps (it will probably break the RTC wakeup again, but well ...).

---
 kernel/power/disk.c |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
kernel/power/disk.c +6 -3
Index: linux-2.6/kernel/power/disk.c
===================================================================
@@ -378,9 +378,12 @@ int hibernation_platform_enter(void)
 		return error;
 
 	suspend_console();
-	error = device_suspend(PMSG_SUSPEND);
-	if (error)
-		goto Resume_console;
+	/*
+	 * FIXME: device_suspend(PMSG_SUSPEND) should be called here, but
+	 * some EHCI controllers make boxes reboot instead of going into the
+	 * S4 sleep state in that case.
+	 */
+	device_shutdown();
 
 	error = hibernation_ops->prepare();
 	if (error)
#5 lore raw
Quoted 43 lines · On Mon, 10 Dec 2007 02:04:13 +0100 "Rafael J. Wysocki" <[email protected]> wrote:
Quoted 17 lines · Andrew Morton
Quoted 5 lines · On Sun, 09 Dec 2007 13:40:07 +0100 Tomas Carnecky <[email protected]> wrote:
Quoted 4 lines · Andrew Morton

2.6.24-rc4 on a Lenovo t61p, using FC8 config.

echo mem > /sys/power/state while running X.

Quoted 9 lines
Quoted 2 lines

It appears to suspend OK but then it instantly resumes and runs OK except the display is blank.

http://bugzilla.kernel.org/show_bug.cgi?id=9258

I have a X61 tablet, and the screen is blank after resume, too, but pressing ctrl+alt+F1/F7 usually fixes it. It seems a problem with the X video driver. I'm not sure though.

Quoted 6 lines

This machine doesn't bring the display back after resume-from-RAM under 2.6.23 either.

The post-2.6.23 regresison here is that the suspend itself fails. Under 2.6.23 the machine suspends and requires a keystrike to start resuming. Under 2.6.24-rc4 it just instantly resumes all by itself.

Please see if the appended patch helps (it will probably break the RTC wakeup again, but well ...).

---
 kernel/power/disk.c |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

Index: linux-2.6/kernel/power/disk.c
===================================================================

kernel/power/disk.c +0 -2
@@ -378,9 +378,12 @@ int hibernation_platform_enter(void)
 		return error;
 
 	suspend_console();
-	error = device_suspend(PMSG_SUSPEND);
-	if (error)

kernel/power/disk.c int hibernation_platform_enter(void) · line 389

Quoted 10 lines
kernel/power/disk.c +6 -1
-		goto Resume_console;
+	/*
+	 * FIXME: device_suspend(PMSG_SUSPEND) should be called here, but
+	 * some EHCI controllers make boxes reboot instead of going into the
+	 * S4 sleep state in that case.
+	 */
+	device_shutdown();
 
 	error = hibernation_ops->prepare();
 	if (error)

Nope, the machine still instantly resumes after suspend-to-RAM.

Sigh. I guess I need to git-bisect my cant-find-root-disk problem and then once that is fixed I can bisect this suspend-to-RAM-resumes-itself regression and the resume-from-disk-causes-reboot regression.

#6 lore raw
Quoted 53 lines · Andrew Morton
Quoted 51 lines · On Mon, 10 Dec 2007 02:04:13 +0100 "Rafael J. Wysocki" <[email protected]> wrote:
Quoted 17 lines · Andrew Morton
Quoted 5 lines · On Sun, 09 Dec 2007 13:40:07 +0100 Tomas Carnecky <[email protected]> wrote:
Quoted 4 lines · Andrew Morton

2.6.24-rc4 on a Lenovo t61p, using FC8 config.

echo mem > /sys/power/state while running X.

Quoted 9 lines
Quoted 2 lines

It appears to suspend OK but then it instantly resumes and runs OK except the display is blank.

http://bugzilla.kernel.org/show_bug.cgi?id=9258

I have a X61 tablet, and the screen is blank after resume, too, but pressing ctrl+alt+F1/F7 usually fixes it. It seems a problem with the X video driver. I'm not sure though.

Quoted 6 lines

This machine doesn't bring the display back after resume-from-RAM under 2.6.23 either.

The post-2.6.23 regresison here is that the suspend itself fails. Under 2.6.23 the machine suspends and requires a keystrike to start resuming. Under 2.6.24-rc4 it just instantly resumes all by itself.

Please see if the appended patch helps (it will probably break the RTC wakeup again, but well ...).

---
 kernel/power/disk.c |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

Index: linux-2.6/kernel/power/disk.c
===================================================================

kernel/power/disk.c +6 -3
@@ -378,9 +378,12 @@ int hibernation_platform_enter(void)
 		return error;
 
 	suspend_console();
-	error = device_suspend(PMSG_SUSPEND);
-	if (error)
-		goto Resume_console;
+	/*
+	 * FIXME: device_suspend(PMSG_SUSPEND) should be called here, but
+	 * some EHCI controllers make boxes reboot instead of going into the
+	 * S4 sleep state in that case.
+	 */
+	device_shutdown();
 
Quoted 8 lines

kernel/power/disk.c int hibernation_platform_enter(void) · line 389

Quoted 2 lines
kernel/power/disk.c +0 -0
 	error = hibernation_ops->prepare();
 	if (error)

Nope, the machine still instantly resumes after suspend-to-RAM.

Sigh. I guess I need to git-bisect my cant-find-root-disk problem and then once that is fixed I can bisect this suspend-to-RAM-resumes-itself regression and the resume-from-disk-causes-reboot regression.

Well, please try to revert the entire commit 9cd9a0058dd35268b24fa16795a92c800f4086d4 "Hibernation: Enter platform hibernation state in a consistent way" for the last one.

#7 lore raw
Quoted 59 lines · On Mon, 10 Dec 2007 12:06:14 +0100 "Rafael J. Wysocki" <[email protected]> wrote:
Quoted 58 lines · Andrew Morton
Quoted 43 lines · On Mon, 10 Dec 2007 02:04:13 +0100 "Rafael J. Wysocki" <[email protected]> wrote:
Quoted 17 lines · Andrew Morton
Quoted 5 lines · On Sun, 09 Dec 2007 13:40:07 +0100 Tomas Carnecky <[email protected]> wrote:
Quoted 4 lines · Andrew Morton

2.6.24-rc4 on a Lenovo t61p, using FC8 config.

echo mem > /sys/power/state while running X.

Quoted 9 lines
Quoted 2 lines

It appears to suspend OK but then it instantly resumes and runs OK except the display is blank.

http://bugzilla.kernel.org/show_bug.cgi?id=9258

I have a X61 tablet, and the screen is blank after resume, too, but pressing ctrl+alt+F1/F7 usually fixes it. It seems a problem with the X video driver. I'm not sure though.

Quoted 6 lines

This machine doesn't bring the display back after resume-from-RAM under 2.6.23 either.

The post-2.6.23 regresison here is that the suspend itself fails. Under 2.6.23 the machine suspends and requires a keystrike to start resuming. Under 2.6.24-rc4 it just instantly resumes all by itself.

Please see if the appended patch helps (it will probably break the RTC wakeup again, but well ...).

---
 kernel/power/disk.c |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

Index: linux-2.6/kernel/power/disk.c
===================================================================

kernel/power/disk.c +0 -2
@@ -378,9 +378,12 @@ int hibernation_platform_enter(void)
 		return error;
 
 	suspend_console();
-	error = device_suspend(PMSG_SUSPEND);
-	if (error)

kernel/power/disk.c int hibernation_platform_enter(void) · line 389

Quoted 10 lines
kernel/power/disk.c +6 -1
-		goto Resume_console;
+	/*
+	 * FIXME: device_suspend(PMSG_SUSPEND) should be called here, but
+	 * some EHCI controllers make boxes reboot instead of going into the
+	 * S4 sleep state in that case.
+	 */
+	device_shutdown();
 
 	error = hibernation_ops->prepare();
 	if (error)

Nope, the machine still instantly resumes after suspend-to-RAM.

Quoted 6 lines
Quoted 3 lines

Sigh. I guess I need to git-bisect my cant-find-root-disk problem and then once that is fixed I can bisect this suspend-to-RAM-resumes-itself regression and the resume-from-disk-causes-reboot regression.

Well, please try to revert the entire commit 9cd9a0058dd35268b24fa16795a92c800f4086d4 "Hibernation: Enter platform hibernation state in a consistent way" for the last one.

Yes, reverting 9cd9a0058dd35268b24fa16795a92c800f4086d4 fixes the suspend-to-RAM problem: it now stays suspended.

However it doens't resume on a keystroke like 2.6.23 does: I have to tap the power switch to make it resume.

However reverting 9cd9a0058dd35268b24fa16795a92c800f4086d4 does not fix the machine-reboots-after-resume-from-disk regression.

It gets to here:

Attempting manual resume
swsusp: Marking nosave pages: 000000000009d000 - 0000000000100000
swsusp: Basic memory bitmaps created
Freezing user space processes ... (elapsed 0.00 seconds) done. Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done. Loading image data pages (52207 pages) ... done
Read 208828 kbytes in 5.40 seconds (38.67 MB/s) Suspending console(s)

then everything stops for five seconds then wham.

This bug is present in 2.6.24-rc1 but I'm basically unable to bisect it because every bisection point (tried about four so far) hits fatal runtime
errors: cant-find-/dev/root, an oops in ipv6, an oops in netfilter, etc.

This is just a basic boot-it-on-fc8 test with RH's config and nothing works. The quality of code which people have been checking into the tree is just appalling and here we see the costs of that.

I think I'll see if it's present in the last 2.6.23 -mm lineup: I know I can bisect that. Probably it won't be, given the way in which people like to jam vast amounts of new code into the merge window.

Sigh.

#8 lore raw
Quoted 20 lines · On Mon, 10 Dec 2007 22:21:56 -0800 Andrew Morton <[email protected]>…

However reverting 9cd9a0058dd35268b24fa16795a92c800f4086d4 does not fix the machine-reboots-after-resume-from-disk regression.

It gets to here:

Attempting manual resume
swsusp: Marking nosave pages: 000000000009d000 - 0000000000100000
swsusp: Basic memory bitmaps created
Freezing user space processes ... (elapsed 0.00 seconds) done. Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done. Loading image data pages (52207 pages) ... done
Read 208828 kbytes in 5.40 seconds (38.67 MB/s) Suspending console(s)

then everything stops for five seconds then wham.

This bug is present in 2.6.24-rc1 but I'm basically unable to bisect it because every bisection point (tried about four so far) hits fatal runtime
errors: cant-find-/dev/root, an oops in ipv6, an oops in netfilter, etc.

Quoted 8 lines

This is just a basic boot-it-on-fc8 test with RH's config and nothing works. The quality of code which people have been checking into the tree is just appalling and here we see the costs of that.

I think I'll see if it's present in the last 2.6.23 -mm lineup: I know I can bisect that. Probably it won't be, given the way in which people like to jam vast amounts of new code into the merge window.

Under 2.6.23-mm1 on the t61p,

echo disk >/sys/power/state

makes the screen go black then nothing at all happens for ten seconds and then the display comes back and it says:

t61p:/home/akpm# echo disk >/sys/power/state
echo: write error: device or resource busy

So I have to bisect that first.

This really sucks.

#9 lore raw
Quoted 35 lines · On Mon, 10 Dec 2007 22:58:58 -0800 Andrew Morton <[email protected]>…
Quoted 20 lines · On Mon, 10 Dec 2007 22:21:56 -0800 Andrew Morton <[email protected]>…

However reverting 9cd9a0058dd35268b24fa16795a92c800f4086d4 does not fix the machine-reboots-after-resume-from-disk regression.

It gets to here:

Attempting manual resume
swsusp: Marking nosave pages: 000000000009d000 - 0000000000100000
swsusp: Basic memory bitmaps created
Freezing user space processes ... (elapsed 0.00 seconds) done. Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done. Loading image data pages (52207 pages) ... done
Read 208828 kbytes in 5.40 seconds (38.67 MB/s) Suspending console(s)

then everything stops for five seconds then wham.

This bug is present in 2.6.24-rc1 but I'm basically unable to bisect it because every bisection point (tried about four so far) hits fatal runtime
errors: cant-find-/dev/root, an oops in ipv6, an oops in netfilter, etc.

Quoted 8 lines

This is just a basic boot-it-on-fc8 test with RH's config and nothing works. The quality of code which people have been checking into the tree is just appalling and here we see the costs of that.

I think I'll see if it's present in the last 2.6.23 -mm lineup: I know I can bisect that. Probably it won't be, given the way in which people like to jam vast amounts of new code into the merge window.

Under 2.6.23-mm1 on the t61p,

echo disk >/sys/power/state

Quoted 8 lines

makes the screen go black then nothing at all happens for ten seconds and then the display comes back and it says:

t61p:/home/akpm# echo disk >/sys/power/state
echo: write error: device or resource busy

So I have to bisect that first.

This was caused by freezer-use-wait-queue-instead-of-busy-looping.patch which we blessedly dropped.

After dropped that patch from 2.6.23-mm1, bisection shows that hibernation-use-temporary-page-tables-for-kernel-text-mapping-on-x86_64.patch is causing the t61p's reboot-after-resuming-from-disk regression. Reverting that patch from current Linus mainline fixes this regression.

Now let me see what caused the keystrokes-no-longer-trigger-resume-from-RAM regression.

#10 lore raw
Quoted 2 lines · On Tue, 11 Dec 2007 01:57:51 -0800 Andrew Morton <[email protected]>…

Now let me see what caused the keystrokes-no-longer-trigger-resume-from-RAM regression.

OK, I must have dreamed this - 2.6.23 requires a power-button tap to come back from suspend-to-RAM as well.

#11 lore raw
In reply to Andrew Morton
Quoted 65 lines · Andrew Morton
Quoted 63 lines · On Mon, 10 Dec 2007 12:06:14 +0100 "Rafael J. Wysocki" <[email protected]> wrote:
Quoted 61 lines · Andrew Morton
Quoted 43 lines · On Mon, 10 Dec 2007 02:04:13 +0100 "Rafael J. Wysocki" <[email protected]> wrote:
Quoted 17 lines · Andrew Morton
Quoted 5 lines · On Sun, 09 Dec 2007 13:40:07 +0100 Tomas Carnecky <[email protected]> wrote:
Quoted 4 lines · Andrew Morton

2.6.24-rc4 on a Lenovo t61p, using FC8 config.

echo mem > /sys/power/state while running X.

Quoted 9 lines
Quoted 2 lines

It appears to suspend OK but then it instantly resumes and runs OK except the display is blank.

http://bugzilla.kernel.org/show_bug.cgi?id=9258

I have a X61 tablet, and the screen is blank after resume, too, but pressing ctrl+alt+F1/F7 usually fixes it. It seems a problem with the X video driver. I'm not sure though.

Quoted 6 lines

This machine doesn't bring the display back after resume-from-RAM under 2.6.23 either.

The post-2.6.23 regresison here is that the suspend itself fails. Under 2.6.23 the machine suspends and requires a keystrike to start resuming. Under 2.6.24-rc4 it just instantly resumes all by itself.

Please see if the appended patch helps (it will probably break the RTC wakeup again, but well ...).

---
 kernel/power/disk.c |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

Index: linux-2.6/kernel/power/disk.c
===================================================================

kernel/power/disk.c +0 -2
@@ -378,9 +378,12 @@ int hibernation_platform_enter(void)
 		return error;
 
 	suspend_console();
-	error = device_suspend(PMSG_SUSPEND);
-	if (error)

kernel/power/disk.c int hibernation_platform_enter(void) · line 389

Quoted 10 lines
kernel/power/disk.c +6 -1
-		goto Resume_console;
+	/*
+	 * FIXME: device_suspend(PMSG_SUSPEND) should be called here, but
+	 * some EHCI controllers make boxes reboot instead of going into the
+	 * S4 sleep state in that case.
+	 */
+	device_shutdown();
 
 	error = hibernation_ops->prepare();
 	if (error)

Nope, the machine still instantly resumes after suspend-to-RAM.

Sigh. I guess I need to git-bisect my cant-find-root-disk problem and then once that is fixed I can bisect this suspend-to-RAM-resumes-itself regression and the resume-from-disk-causes-reboot regression.

Quoted 5 lines
Quoted 2 lines

Well, please try to revert the entire commit 9cd9a0058dd35268b24fa16795a92c800f4086d4 "Hibernation: Enter platform hibernation state in a consistent way" for the last one.

Yes, reverting 9cd9a0058dd35268b24fa16795a92c800f4086d4 fixes the suspend-to-RAM problem: it now stays suspended.

Well, this patch doesn't touch the suspend-to-RAM code path, it only touches the last phase of hibernation. I'm quite sure it can't affect the suspend to RAM.

#12 lore raw
In reply to Andrew Morton
Quoted 2 lines · Andrew Morton

2.6.24-rc4 on a Lenovo t61p, using FC8 config.
echo mem > /sys/power/state while running X.

On Fedora you should use System->Suspend or /usr/bin/pm-suspend from pm- utils. See also /usr/share/hal/fdi/information/10freedesktop/20-video- quirk-pm-lenovo.fdi, maybe you can fix yours if it still doesn't work.

Volker