Page 1 of 1

T23 suspend/sleep framebuffer corruption

Posted: Wed Nov 23, 2005 1:03 pm
by systemparadox
Hi.

Firstly, if anyone has got sleep (suspend-to-RAM) working in Linux on a T20, T21, T22, T23 or T30, with a console larger than 640x480, then PLEASE (!) post here to at least say it is possible. Thankyou.

I have been trying to get sleep (suspend-to-RAM) working in Linux on my T23 for ages. I have finally managed to get it to work, but only if I disable the framebuffer.
If the framebuffer is enabled, it all works fine still, except that I go blind on resume. I get:
Stopping Tasks: =======================|
and a few yellow/pink/orange pixels in a horizontal line above it. The screen is frozen. The system is still running and everything else still works, but the screen is frozen in this semi-corrupted state. If I disable the framebuffer (i.e. append vga=normal to the lilo prompt and have 640x480 vga console) it resumes perfectly.

I now have kernel 2.6.14.2. No change. However this kernel now has a 'savagefb' module. I tried booting with vga=normal and doing 'modprobe savagefb'. This works. Suspend works. Resume does not. Without the savagefb module I press the power button to resume (as an aside- is it possible to make it so I can just press Fn like with Windows?) and it at least tries. But with the savage module the only thing I can make it do once it has gone to sleep is turn off completely by holding down the power button. Why on earth is this happening? How do I fix it?

I downloaded vesafb-tng and patched my kernel with it. Now I can compile vesafb as a module too. I boot up using just the standard vga console, then I 'modprobe vesafb-tng' (I haven't got it to load on boot yet). This works. But it does the same thing as it does with normal vesafb on resume. But the other thing I have noticed is that if I do a suspend and resume cycle before loading vesafb-tng, it all works fine, but when I then modprobe vesafb-tng the screen goes blank and freezes. Looks like something isn't getting initialised properly on the graphics card on resume. Doesn't seem to be a problem with savagefb.

I cannot find a way of unloading either vesafb-tng or savagefb once they have been loaded. They're always in use. Maybe some way of detaching the VC from the framebuffer device? How can I do this? Unloading the module before suspend may well fix it.

So...
1. How do I unload a framebuffer module?
2. How do I get it to resume after suspending with savagefb?
3. Is it possible to fix the frozen screen issue?

Any information on graphics and suspend would be greaty appreciated.
Thankyou in advance
Simon

Posted: Wed Dec 21, 2005 8:24 am
by systemparadox
Update: X will suspend and resume perfectly, providing it's using it's own savage driver and not the framebuffer (the framebuffer console cannot be enabled at all). Amazingly, this works using the X install from Slackware 9.1. Though I may have updated X's savage driver (ages ago).

Still trying to get a nice big console- I use the console a lot- having to load X every time is somewhat annoying. It also looks rubbish on boot/shutdown/suspend/resume (640x480 vga text console only).

Maybe it's possible to have X load really early in the boot process (possibly an initrd- which I don't really like the sound of, but oh well) and send all the console messages to a terminal in an x session?

Any info greatly appreciated.
Thanks
Simon

Posted: Wed Dec 21, 2005 10:11 am
by karmaflux
I have fought these problems to a draw with my T23.

The only solution I found was to disable MTRR and APIC for uniprocessors and use the vesa framebuffer -- and even then, x.org will break suspend-resume, so I had to install that from CVS. The finishing touch is to fix your DSDT, because the T23's ACPI implementation isn't the best.

Posted: Thu Dec 29, 2005 6:10 pm
by systemparadox
karmaflux,
thanks- that info could prove very helpful.
Though I'm going to take a performance hit if I disable MTRR and APIC.
I'll try it anyway- if it fixes suspend/resume with the framebuffer then at least I have somewhere to work from.

Any info on how to fix my dsdt and what to fix it with?

I haven't had any problems with Xorg (or for that matter- my very old version of Xfree86).

Thanks
Simon

Posted: Sat Jan 07, 2006 10:43 am
by chubes
Stupid question but, have you guys updated your BIOS for the T23? I have one at work, and it was giving me loads of problems with ACPI, lots of funny messages in dmesg until I upgraded the BIOS.

Then the issues magically disappeared.