I have a new laptop (Dell Inspiron 640m) which has some trouble resuming from suspend. I use this to suspend: # echo mem > /sys/power/state The system powers down shortly after, but the power light is pulsing (it doesn't do this usually). I press the power button to resume it. A few seconds later, the machine becomes responsive to pings and I can SSH in and play around. However the display is completely blank. I am not using any framebuffer, just a standard VGA console. The kernel config is very minimal, I have disabled sound, USB, etc. I tried with the "acpi_sleep=s3_bios" parameter. The suspend worked the same as before (pulsing light), but when I press the power button to resume, the system boots as normal and presents me with my bootloader and so on (like on a cold boot). At least the screen isn't blank this time. The same behaviour is observed with "acpi_sleep=s3_bios,s3_mode" It is worth noting that this laptop has a BIOS bug causing the screen to stay blank upon a lid close-open cycle (bug #5155). However, the "vbetool dpms on" workaround does not work here (screen still stays blank), so I believe this is a different problem. At least, if I could manually turn the screen back on using vbetool that would be acceptable while bug #5155 is unresolved. I cannot try the vbetool save/restore workaround because I cannot save the state: # vbetool vbestate save > file Allocated buffer at 0x20000 (base is 0x0) ES: 0x2000 EBX: 0x0000 Save video state failed
Created attachment 8475 [details] dmesg after suspend + resume when screen is blank
Created attachment 8476 [details] acpidump for inspiron 640m
The vgacon does not support suspend and resume, so it has to rely on the BIOS or external programs. Have you tried with X loaded? Is X able to unblank the screen? How about vbetool vbemode set 3?
Yes, X unblanks the screen. Thanks for the suggestion. When working from the console, the vbetool command does not make any difference.
I forgot to mention that I really need the BIOS or kernel to turn the screen back on to solve the larger issue (which I'll file on a separate bug when I can read the actual error). Under my normal kernel .config (with USB, sound, etc enabled), the system hangs early during resume (doesn't respond to ping, caps lock, etc) and this is not possible to diagnose when the screen is blank.
As mentioned, vgacon does not have the capability to do power management. It has to rely on another app to do that. Or you can use a driver that knows the chipset (intelfb or X). I believe that you have an Intel 950 graphics card? Perhaps it's possible to extend intelfb to support your card and for it to have power management support. That would be Dave Airlie's task (the intelfb git tree is his). Currently, your best bet is to switch to X on resume, but that would make the early messages unreadable.
you probably need to repost the BIOS at resume, I'm not sure if we really want to add suspend/resume support to intelfb I think it is the incorrect model going forward and I don't have the resources to do it any case...
*** This bug has been marked as a duplicate of 7225 ***