T23 suspend/sleep framebuffer corruption
Posted: Wed Nov 23, 2005 1:03 pm
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
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