2006-01-28 15:52:55

by Moritz Muehlenhoff

[permalink] [raw]
Subject: Display corruption with radeonfb after resuming from suspend-to-ram

Hi,
I have a hard-to-reproduce problem with radeonfb and suspend-to-ram:

I'm using radeonfb with fbcon in a pure console environment for most
os the time (with mplayer on X11 being the rare exception) and I
sometimes encounter display corruption after resuming from suspend to
RAM. My notebook is a ThinkPad X31 with this Radeon model:

0000:01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY (prog-if 00 [VGA])
Subsystem: IBM: Unknown device 052f
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping+ SERR+ FastB2B+
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 66 (2000ns min), Cache Line Size: 0x08 (32 bytes)
Interrupt: pin A routed to IRQ 11
Region 0: Memory at e0000000 (32-bit, prefetchable) [size=128M]
Region 1: I/O ports at 3000 [size=256]
Region 2: Memory at c0100000 (32-bit, non-prefetchable) [size=64K]
Expansion ROM at c0120000 [disabled] [size=128K]
Capabilities: <available only to root>

Resuming from suspend-to-ram works flawless in roughly 98% of all cases, but
sometimes the display gets corrupted; some bits are set in the display in a
weird way and the display starts to shift with every line break. An example:

$ foo
$ foo
$ foo

(The display wraps around on the after side for each line)

When running reset(1) the display returns to a state where the whole screen is shifted
to the left by two chars.

The last time the problem occured I started X11 to check, whether it is affected as well
and everything seemed alright expect a blocky area following the mouse cursor, but after
roughly 30 seconds the system locked up hard.

I cannot really reproduce it reliably, but if someone tells me which data I would
need to collect (a register dump or something similar?) I can send it the next time
the problem occurs.

This problem is not specific to the 2.6.15 kernel, it occured with several previous
kernels as well.

Cheers,
Moritz


2006-01-29 15:38:29

by Pavel Machek

[permalink] [raw]
Subject: Re: Display corruption with radeonfb after resuming from suspend-to-ram

Hi!

> I have a hard-to-reproduce problem with radeonfb and suspend-to-ram:
>
> I'm using radeonfb with fbcon in a pure console environment for most
> os the time (with mplayer on X11 being the rare exception) and I
> sometimes encounter display corruption after resuming from suspend to
> RAM. My notebook is a ThinkPad X31 with this Radeon model:
>
> 0000:01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY (prog-if 00 [VGA])
> Subsystem: IBM: Unknown device 052f
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping+ SERR+ FastB2B+
> Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
> Latency: 66 (2000ns min), Cache Line Size: 0x08 (32 bytes)
> Interrupt: pin A routed to IRQ 11
> Region 0: Memory at e0000000 (32-bit, prefetchable) [size=128M]
> Region 1: I/O ports at 3000 [size=256]
> Region 2: Memory at c0100000 (32-bit, non-prefetchable) [size=64K]
> Expansion ROM at c0120000 [disabled] [size=128K]
> Capabilities: <available only to root>
>
> Resuming from suspend-to-ram works flawless in roughly 98% of all cases, but
> sometimes the display gets corrupted; some bits are set in the display in a
> weird way and the display starts to shift with every line break. An
> example:

Happens here, too... or happened, I think I have a solution. Reseting
video card during resume seems like a way to go.

Could you get s2ram.c from http://www.sf.net/projects/suspend, and add your
X31 with same parameters as X32 system, and let me know if it helps?

(You'll need an -mm kernel for parameter to be passed into kernel).

Pavel
--
Thanks, Sharp!

2006-01-30 10:45:35

by Moritz Muehlenhoff

[permalink] [raw]
Subject: Re: Display corruption with radeonfb after resuming from suspend-to-ram

Pavel Machek wrote:
> > Resuming from suspend-to-ram works flawless in roughly 98% of all cases, but
> > sometimes the display gets corrupted; some bits are set in the display in a
> > weird way and the display starts to shift with every line break. An
> > example:
>
> Happens here, too... or happened, I think I have a solution. Reseting
> video card during resume seems like a way to go.
>
> Could you get s2ram.c from http://www.sf.net/projects/suspend, and add your
> X31 with same parameters as X32 system, and let me know if it helps?
>
> (You'll need an -mm kernel for parameter to be passed into kernel).

I'll do that, but it might take a few weeks until I can tell you wether
it worked, the bug only arises every few weeks.

Cheers,
Moritz