Bug 13446

Summary: resume after suspend-to-ram broken on Toshiba Satellite A100 with 2.6.30-rc8 (works in 2.6.28)
Product: Drivers Reporter: Andrea Iob (andrea_iob)
Component: Video(DRI - non Intel)Assignee: drivers_video-dri
Severity: normal CC: rjw, rui.zhang, yakui.zhao
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.30-rc8 Tree: Mainline
Regression: No
Bug Depends on:    
Bug Blocks: 7216, 56331    
Attachments: dmesg output (after failed resume)
lspci -vvv -xxx output
kernel config
acpidump output
dmesg for pm_test set to freezer
dmesg for pm_test set to devices
dmesg for pm_test set to platform
dmesg for pm_test set to processors
dmesg for pm_test set to core
dmesg after a resume from terminal (Linux 2.6.32)

Description Andrea Iob 2009-06-03 21:42:09 UTC
Created attachment 21734 [details]
dmesg output (after failed resume)

Hardware: Toshiba Satellite A100

In 2.6.30rc8, resume after suspend-to-ram on a Toshiba Satellite A100 results in a hard freeze: the screen stays off/black and the system appears completely hung (i.e. pressing Caps Lock does not cycle the keyboard LED.)

With kernel 2.6.28 resume works correctly.
Comment 1 Andrea Iob 2009-06-03 21:43:43 UTC
Created attachment 21735 [details]
lspci -vvv -xxx output
Comment 2 Andrea Iob 2009-06-03 21:52:16 UTC
Created attachment 21736 [details]
kernel config
Comment 3 Andrea Iob 2009-06-03 21:54:35 UTC
Created attachment 21737 [details]
acpidump output
Comment 4 Rafael J. Wysocki 2009-06-03 21:55:03 UTC
Could you please test 2.6.29 too?
Comment 5 Andrea Iob 2009-06-03 22:33:47 UTC
(In reply to comment #4)
> Could you please test 2.6.29 too?

I've tried but also with this version the resume doesn't work.
Comment 6 Zhang Rui 2009-06-04 02:36:21 UTC
it would be great if you can run git bisect to narrow down which commit introduces this regression.
Comment 7 Andrea Iob 2009-06-04 09:12:38 UTC
I'm a little bit confused!! I've just tried v2.6.28.8 and and the resume
doesn't work even with those versions, but I'm sure that it used to work. I'm 100% sure that with v2.6.28.8 I was able to suspend and resume correctly. I don't know what is changed. I've also tried to downgrade the pm-utils but it didn't solve the problem.

Is it possible that the problem with the resume was caused by an upgrade of a program or by a change in a configuration file? 

Sorry for this incorrect bug report! Let me now if I can provide you some other information which can be useful to understand the cause of this problem.

Thank you!
Comment 8 Zhang Rui 2009-06-05 02:03:53 UTC
1. set CONFIG_PM_DEBUG and rebuild your kernel
2. run echo {freezer, devices, platform, processors, core} > /sys/power/pm_test
   BTW: I mean try one of these options each time.
3. run echo mem > /sys/power/state
and see if the kernel can resume well with any one of these options.
Comment 9 Andrea Iob 2009-06-05 18:31:23 UTC
I've run this command:

echo $option > /sys/power/pm_test && echo mem > /sys/power/state

and the result is the same for all the options in your list: the system suspends for some seconds and then it resumes automatically without problems. One note: I don't konow if this is the expected behaviour, but in all test the power led don't change his status. When I do a "full" suspend, i.e. "echo none > /sys/power/pm_test && ...," the power led goes form blue (system on) to blinking orange (system suspended).

I attach the dmesg for all the tests.
Comment 10 Andrea Iob 2009-06-05 18:32:15 UTC
Created attachment 21769 [details]
dmesg for pm_test set to freezer
Comment 11 Andrea Iob 2009-06-05 18:32:55 UTC
Created attachment 21770 [details]
dmesg for pm_test set to devices
Comment 12 Andrea Iob 2009-06-05 18:33:26 UTC
Created attachment 21771 [details]
dmesg for pm_test set to platform
Comment 13 Andrea Iob 2009-06-05 18:33:55 UTC
Created attachment 21772 [details]
dmesg for pm_test set to processors
Comment 14 Andrea Iob 2009-06-05 18:34:27 UTC
Created attachment 21773 [details]
dmesg for pm_test set to core
Comment 15 Zhang Rui 2009-06-08 02:17:14 UTC
clear the regression flag for now.
Andrea, it would be great if you can find a vanilla kernel where this problem doesn't exist.
Comment 16 Rafael J. Wysocki 2009-06-08 11:06:43 UTC
Dropped from the list of recent regressions as per comment #15.
Comment 17 Andrea Iob 2009-06-12 07:07:06 UTC
(In reply to comment #15)
> clear the regression flag for now.
> Andrea, it would be great if you can find a vanilla kernel where this problem
> doesn't exist.

I was unable to find a kernel where resume works:

2.6.18    : build error (undefined reference to `__udivdi3') : build error (undefined reference to `__udivdi3') : build error (undefined reference to `__udivdi3') : build error (undefined reference to `__udivdi3')  : resume does not work  : resume does not work  : resume does not work  : resume does not work  : resume does not work
Comment 18 Andrea Iob 2009-06-12 07:33:15 UTC
I suspect that the resume stopped working after a BIOS update. Some time ago I upgraded the BIOS and It's possible that, after this BIOS update, I haven't used the resume. So when I installed kernel v2.6.30-rc8 and the resume didn't work I thought it was a kernel regression. (I'm not sure of this, it's just a guess, since resume used to work with v2.6.28 and now, with the same kernel, it doesn't work anymore.)

If it can help you, here you can find the BIOS changelog:


The version I have now is the latest, v6.00, but I don't remember which was my previous version (for sure it was a 5.x, but I don't know which one).

In the changelog I see two changes related to the resume: 

# Corrected: The Wireless LAN LED/function does not correlate with the latest kill switch status after waking from Standby (S3), Hibernation (S4), or Soft Off (S5) states.
# Added: Kill-Switch On/Off events to correct "Wireless LAN can not maintain the correct state" after waking from S3/S4/S5.
Comment 19 Zhang Rui 2009-06-15 06:34:29 UTC
does boot option acpi_osi="!Windows 2006" help?
Comment 20 Andrea Iob 2009-06-17 17:56:04 UTC
(In reply to comment #19)
> does boot option acpi_osi="!Windows 2006" help?

No, it doesn't :-( Neither with v2.6.28.8 nor with v2.6.30.
Comment 21 Andrea Iob 2009-06-17 18:02:05 UTC
Maybe this can be useful to you: if I suspend the notebook with a mouse attached and a DVD inside the DVD-RW, both seem to resume properly, i.e. the lights on the mouse turn on and I can hear the DVD spin. (Also the HD seems to resume properly.)
Comment 22 Zhang Rui 2009-06-18 01:51:47 UTC
could you please downgrade to the old BIOS and see if the problem still exists?
If it's caused by the BIOS upgrade, it's really hard to debug the problem in Linux kernel.
And please attach the acpidump output of the old BIOS.
Comment 23 Andrea Iob 2009-06-28 20:16:55 UTC
I'm not sure I can downgrade to the old BIOS. For example I know for sure that it's not possible to downgrade from version 5.x to version 2.x (now I've installed v6.0). I don't want to brick my laptop... Before trying the downgrade  I want to find out if it is possible or not.
Comment 24 ykzhao 2009-07-21 08:18:28 UTC
Hi, Andrea
    Will you please do the following test on the latest kernel?
    a. kill the process using /proc/acpi/event(use the command of "lsof /proc/acpi/event to get the process id)
    b. echo mem > /sys/power/state; dmesg >dmesg_after; sync;
    c. press the power button and see whether the box can be resumed.
    d. if it can't be resumed, please reboot the system and see whether there exists the file of dmesg_after.
    If there exists the file of dmesg_after, please attach it.

Comment 25 Andrea Iob 2009-08-31 19:17:44 UTC
(In reply to comment #24)

Hi ykzhao,
first of all sorry for my late reply. I've tried what you suggested but with no luck: killing the process using /proc/acpi/event does not solve the problem. Moreover, after the reboot, there's no file dmesg_after.

Thanks for your time.
Comment 26 Andrea Iob 2009-09-12 12:27:25 UTC
Just tried v2.6.31, but also with this version the resume does not work.

I've noticed that now, when I try to resume, the CAPS Lock led blinks a few times and then it stays on.
Comment 27 ykzhao 2009-10-12 15:33:21 UTC
Hi, Andrea
    sorry for the late response.
    Thanks for the testing.
    From the info in comment #25 it seems that it can't be resumed from the sleeping state. Maybe it hangs in BIOS.
    If it hangs in BIOS, we have no idea how to fix them.

Comment 28 Andrea Iob 2009-12-12 11:22:14 UTC
With v2.6.32 resume almost works. If I suspend form X (with pm-suspend), all work fine! But if I suspend form the terminal (i.e., not in X) the system resumes but the screen remains black. 

It seems a problem related with the radeon kernel drivers because, even if the screen is black, the system is working (I can ssh into it). Moreover, if I suspend the system form the terminal, I resume it (now the screen is black), and then I type startx, X startx normally and the system is perfectly ok (but when I exit form X, the screen goes black again).

I will fill a bug at bugs.freedesktop.org.

I don't know what are the changes in 32 which did the magic, but now I have an "almost" working resume. Thanks!!
Comment 29 Andrea Iob 2009-12-12 11:27:23 UTC
Created attachment 24160 [details]
dmesg after a resume from terminal (Linux 2.6.32)

If I suspend/resume from terminal the screen remains black, but the system is "working" (I can ssh into it and, typing startx, X starts without problems).
Comment 30 Zhang Rui 2009-12-28 08:16:14 UTC
yes, this is a graphics problem.
re-assign to video category.
Comment 31 Andrea Iob 2010-05-25 20:52:36 UTC
With Linux 2.6.34 and KMS suspend-to-ram works fine!
I think the bug can be closed.

Thanks guys for your work!