2005-04-17 06:20:36 +08:00
|
|
|
|
|
|
|
Video issues with S3 resume
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
2003-2005, Pavel Machek
|
|
|
|
|
|
|
|
During S3 resume, hardware needs to be reinitialized. For most
|
|
|
|
devices, this is easy, and kernel driver knows how to do
|
|
|
|
it. Unfortunately there's one exception: video card. Those are usually
|
|
|
|
initialized by BIOS, and kernel does not have enough information to
|
|
|
|
boot video card. (Kernel usually does not even contain video card
|
|
|
|
driver -- vesafb and vgacon are widely used).
|
|
|
|
|
|
|
|
This is not problem for swsusp, because during swsusp resume, BIOS is
|
|
|
|
run normally so video card is normally initialized. S3 has absolutely
|
|
|
|
no chance of working with SMP/HT. Be sure it to turn it off before
|
|
|
|
testing (swsusp should work ok, OTOH).
|
|
|
|
|
|
|
|
There are a few types of systems where video works after S3 resume:
|
|
|
|
|
|
|
|
(1) systems where video state is preserved over S3.
|
|
|
|
|
|
|
|
(2) systems where it is possible to call the video BIOS during S3
|
|
|
|
resume. Unfortunately, it is not correct to call the video BIOS at
|
|
|
|
that point, but it happens to work on some machines. Use
|
|
|
|
acpi_sleep=s3_bios.
|
|
|
|
|
|
|
|
(3) systems that initialize video card into vga text mode and where
|
|
|
|
the BIOS works well enough to be able to set video mode. Use
|
|
|
|
acpi_sleep=s3_mode on these.
|
|
|
|
|
|
|
|
(4) on some systems s3_bios kicks video into text mode, and
|
|
|
|
acpi_sleep=s3_bios,s3_mode is needed.
|
|
|
|
|
|
|
|
(5) radeon systems, where X can soft-boot your video card. You'll need
|
2005-04-17 06:25:34 +08:00
|
|
|
a new enough X, and a plain text console (no vesafb or radeonfb). See
|
|
|
|
http://www.doesi.gmxhome.de/linux/tm800s3/s3.html for more information.
|
|
|
|
Alternatively, you should use vbetool (6) instead.
|
2005-04-17 06:20:36 +08:00
|
|
|
|
|
|
|
(6) other radeon systems, where vbetool is enough to bring system back
|
|
|
|
to life. It needs text console to be working. Do vbetool vbestate
|
|
|
|
save > /tmp/delme; echo 3 > /proc/acpi/sleep; vbetool post; vbetool
|
|
|
|
vbestate restore < /tmp/delme; setfont <whatever>, and your video
|
|
|
|
should work.
|
|
|
|
|
|
|
|
(7) on some systems, it is possible to boot most of kernel, and then
|
|
|
|
POSTing bios works. Ole Rohne has patch to do just that at
|
|
|
|
http://dev.gentoo.org/~marineam/patch-radeonfb-2.6.11-rc2-mm2.
|
|
|
|
|
|
|
|
Now, if you pass acpi_sleep=something, and it does not work with your
|
|
|
|
bios, you'll get a hard crash during resume. Be careful. Also it is
|
|
|
|
safest to do your experiments with plain old VGA console. The vesafb
|
|
|
|
and radeonfb (etc) drivers have a tendency to crash the machine during
|
|
|
|
resume.
|
|
|
|
|
|
|
|
You may have a system where none of above works. At that point you
|
|
|
|
either invent another ugly hack that works, or write proper driver for
|
|
|
|
your video card (good luck getting docs :-(). Maybe suspending from X
|
|
|
|
(proper X, knowing your hardware, not XF68_FBcon) might have better
|
|
|
|
chance of working.
|
|
|
|
|
|
|
|
Table of known working systems:
|
|
|
|
|
|
|
|
Model hack (or "how to do it")
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
Acer Aspire 1406LC ole's late BIOS init (7), turn off DRI
|
|
|
|
Acer TM 242FX vbetool (6)
|
|
|
|
Acer TM C300 vga=normal (only suspend on console, not in X), vbetool (6)
|
|
|
|
Acer TM 4052LCi s3_bios (2)
|
|
|
|
Acer TM 636Lci s3_bios vga=normal (2)
|
|
|
|
Acer TM 650 (Radeon M7) vga=normal plus boot-radeon (5) gets text console back
|
|
|
|
Acer TM 660 ??? (*)
|
|
|
|
Acer TM 800 vga=normal, X patches, see webpage (5) or vbetool (6)
|
|
|
|
Acer TM 803 vga=normal, X patches, see webpage (5) or vbetool (6)
|
|
|
|
Acer TM 803LCi vga=normal, vbetool (6)
|
|
|
|
Arima W730a vbetool needed (6)
|
|
|
|
Asus L2400D s3_mode (3)(***) (S1 also works OK)
|
2005-04-17 06:25:34 +08:00
|
|
|
Asus L3350M (SiS 740) (6)
|
2005-04-17 06:20:36 +08:00
|
|
|
Asus L3800C (Radeon M7) s3_bios (2) (S1 also works OK)
|
2005-04-17 06:25:34 +08:00
|
|
|
Asus M6887Ne vga=normal, s3_bios (2), use radeon driver instead of fglrx in x.org
|
2005-04-17 06:20:36 +08:00
|
|
|
Athlon64 desktop prototype s3_bios (2)
|
|
|
|
Compal CL-50 ??? (*)
|
|
|
|
Compaq Armada E500 - P3-700 none (1) (S1 also works OK)
|
|
|
|
Compaq Evo N620c vga=normal, s3_bios (2)
|
|
|
|
Dell 600m, ATI R250 Lf none (1), but needs xorg-x11-6.8.1.902-1
|
|
|
|
Dell D600, ATI RV250 vga=normal and X, or try vbestate (6)
|
|
|
|
Dell Inspiron 4000 ??? (*)
|
|
|
|
Dell Inspiron 500m ??? (*)
|
|
|
|
Dell Inspiron 600m ??? (*)
|
|
|
|
Dell Inspiron 8200 ??? (*)
|
|
|
|
Dell Inspiron 8500 ??? (*)
|
|
|
|
Dell Inspiron 8600 ??? (*)
|
|
|
|
eMachines athlon64 machines vbetool needed (6) (someone please get me model #s)
|
|
|
|
HP NC6000 s3_bios, may not use radeonfb (2); or vbetool (6)
|
|
|
|
HP NX7000 ??? (*)
|
|
|
|
HP Pavilion ZD7000 vbetool post needed, need open-source nv driver for X
|
|
|
|
HP Omnibook XE3 athlon version none (1)
|
|
|
|
HP Omnibook XE3GC none (1), video is S3 Savage/IX-MV
|
|
|
|
IBM TP T20, model 2647-44G none (1), video is S3 Inc. 86C270-294 Savage/IX-MV, vesafb gets "interesting" but X work.
|
|
|
|
IBM TP A31 / Type 2652-M5G s3_mode (3) [works ok with BIOS 1.04 2002-08-23, but not at all with BIOS 1.11 2004-11-05 :-(]
|
|
|
|
IBM TP R32 / Type 2658-MMG none (1)
|
|
|
|
IBM TP R40 2722B3G ??? (*)
|
|
|
|
IBM TP R50p / Type 1832-22U s3_bios (2)
|
2005-04-17 06:25:34 +08:00
|
|
|
IBM TP R51 none (1)
|
2005-04-17 06:20:36 +08:00
|
|
|
IBM TP T30 236681A ??? (*)
|
|
|
|
IBM TP T40 / Type 2373-MU4 none (1)
|
|
|
|
IBM TP T40p none (1)
|
|
|
|
IBM TP R40p s3_bios (2)
|
|
|
|
IBM TP T41p s3_bios (2), switch to X after resume
|
2005-04-17 06:25:34 +08:00
|
|
|
IBM TP T42 s3_bios (2)
|
2005-04-17 06:20:36 +08:00
|
|
|
IBM ThinkPad T42p (2373-GTG) s3_bios (2)
|
|
|
|
IBM TP X20 ??? (*)
|
2005-04-17 06:25:34 +08:00
|
|
|
IBM TP X30 s3_bios (2)
|
2005-04-17 06:20:36 +08:00
|
|
|
IBM TP X31 / Type 2672-XXH none (1), use radeontool (http://fdd.com/software/radeon/) to turn off backlight.
|
|
|
|
IBM Thinkpad X40 Type 2371-7JG s3_bios,s3_mode (4)
|
|
|
|
Medion MD4220 ??? (*)
|
|
|
|
Samsung P35 vbetool needed (6)
|
|
|
|
Sharp PC-AR10 (ATI rage) none (1)
|
|
|
|
Sony Vaio PCG-F403 ??? (*)
|
|
|
|
Sony Vaio PCG-N505SN ??? (*)
|
|
|
|
Sony Vaio vgn-s260 X or boot-radeon can init it (5)
|
|
|
|
Toshiba Libretto L5 none (1)
|
|
|
|
Toshiba Satellite 4030CDT s3_mode (3)
|
|
|
|
Toshiba Satellite 4080XCDT s3_mode (3)
|
|
|
|
Toshiba Satellite 4090XCDT ??? (*)
|
|
|
|
Toshiba Satellite P10-554 s3_bios,s3_mode (4)(****)
|
|
|
|
Uniwill 244IIO ??? (*)
|
|
|
|
|
|
|
|
|
|
|
|
(*) from http://www.ubuntulinux.org/wiki/HoaryPMResults, not sure
|
|
|
|
which options to use. If you know, please tell me.
|
|
|
|
|
|
|
|
(***) To be tested with a newer kernel.
|
|
|
|
|
|
|
|
(****) Not with SMP kernel, UP only.
|
|
|
|
|
|
|
|
VBEtool details
|
|
|
|
~~~~~~~~~~~~~~~
|
|
|
|
(with thanks to Carl-Daniel Hailfinger)
|
|
|
|
|
|
|
|
First, boot into X and run the following script ONCE:
|
|
|
|
#!/bin/bash
|
|
|
|
statedir=/root/s3/state
|
|
|
|
mkdir -p $statedir
|
|
|
|
chvt 2
|
|
|
|
sleep 1
|
|
|
|
vbetool vbestate save >$statedir/vbe
|
|
|
|
|
|
|
|
|
|
|
|
To suspend and resume properly, call the following script as root:
|
|
|
|
#!/bin/bash
|
|
|
|
statedir=/root/s3/state
|
|
|
|
curcons=`fgconsole`
|
|
|
|
fuser /dev/tty$curcons 2>/dev/null|xargs ps -o comm= -p|grep -q X && chvt 2
|
|
|
|
cat /dev/vcsa >$statedir/vcsa
|
|
|
|
sync
|
|
|
|
echo 3 >/proc/acpi/sleep
|
|
|
|
sync
|
|
|
|
vbetool post
|
|
|
|
vbetool vbestate restore <$statedir/vbe
|
|
|
|
cat $statedir/vcsa >/dev/vcsa
|
|
|
|
rckbd restart
|
|
|
|
chvt $[curcons%6+1]
|
|
|
|
chvt $curcons
|
|
|
|
|
|
|
|
|
|
|
|
Unless you change your graphics card or other hardware configuration,
|
|
|
|
the state once saved will be OK for every resume afterwards.
|
|
|
|
NOTE: The "rckbd restart" command may be different for your
|
|
|
|
distribution. Simply replace it with the command you would use to
|
|
|
|
set the fonts on screen.
|