|  | 
 | 		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 | 
 |   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. | 
 |  | 
 | (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) | 
 | Asus L3350M (SiS 740)           (6) | 
 | Asus L3800C (Radeon M7)		s3_bios (2) (S1 also works OK) | 
 | Asus M6887Ne			vga=normal, s3_bios (2), use radeon driver instead of fglrx in x.org | 
 | 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) | 
 | IBM TP R51			none (1) | 
 | 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 | 
 | IBM TP T42			s3_bios (2) | 
 | IBM ThinkPad T42p (2373-GTG)	s3_bios (2) | 
 | IBM TP X20			??? (*) | 
 | IBM TP X30			s3_bios (2) | 
 | 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. |