Bug 6784

Summary: No screen unblank on resume (Dell Inspiron 640m)
Product: Drivers Reporter: Daniel Drake (dsd)
Component: Console/FramebuffersAssignee: Rafael J. Wysocki (rjwysocki)
Status: REJECTED DUPLICATE    
Severity: normal CC: airlied
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: 2.6.17-git20 Subsystem:
Regression: --- Bisected commit-id:
Attachments: dmesg after suspend + resume when screen is blank
acpidump for inspiron 640m

Description Daniel Drake 2006-07-02 08:48:31 UTC
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
Comment 1 Daniel Drake 2006-07-02 08:51:45 UTC
Created attachment 8475 [details]
dmesg after suspend + resume when screen is blank
Comment 2 Daniel Drake 2006-07-02 08:52:20 UTC
Created attachment 8476 [details]
acpidump for inspiron 640m
Comment 3 Antonino Daplas 2006-07-02 09:44:47 UTC
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?
Comment 4 Daniel Drake 2006-07-02 12:39:20 UTC
Yes, X unblanks the screen. Thanks for the suggestion.

When working from the console, the vbetool command does not make any difference.
Comment 5 Daniel Drake 2006-07-02 12:45:18 UTC
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.
Comment 6 Antonino Daplas 2006-07-02 16:07:13 UTC
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.
Comment 7 Dave Airlie 2006-07-03 04:07:33 UTC
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...
Comment 8 Rafael J. Wysocki 2006-09-29 09:39:52 UTC

*** This bug has been marked as a duplicate of 7225 ***