[Bug 14001] Screen corruption on dual-link DVI with r500.
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Sat Jan 12 13:29:50 PST 2008
http://bugs.freedesktop.org/show_bug.cgi?id=14001
--- Comment #8 from Chris Ball <chris-fdbugs at printf.net> 2008-01-12 13:29:49 PST ---
I have this fixed now! I don't yet understand the fix, though.
I noticed that radeon worked when run *after* fglrx, which made things
a lot easier -- fglrx was obviously changing a necessary register that
radeon doesn't touch. Finding that register was difficult; the
<0x1000 registers weren't helping anything, and the "regs all" diff
between radeon-before-fglrx (failing case) and radeon-after-fglrx
(working case) had >100 registers in.
I wrote a perl script which takes two "avivotool regs all" dumps, the
first assumed to be the working state and the second assumed to be the
bad state, and sets every register currently in the bad state to the
good state, with a one second delay between each regset for you to see
whether it fixed the problem on the screen. The script is here:
http://dev.laptop.org/~cjb/apply-regs-diff.pl
This found the culprit register, which is a set of two: 0x6590
(which radeon_reg.h knows to be AVIVO_D1SCL_SCALER_ENABLE) and 0x6594.
Neither of these are touched by radeon, but the problem state is when
they are set; fglrx clears them, and they aren't changed by radeon at
all. The default state at bootup, before any drivers have been loaded,
is for them to be set.
So, the attached works-for-me patch clears just those two registers
at load-time. The placement in atombios_crtc.c is just a guess, and
I haven't commented the writes because I don't expect them to be
committed while 0x6594 remains magic. How would I learn more about
these registers? The AMD docs don't seem to cover them.
By the way, I'm sure other people have similar tools to my perl
script, but I don't know where any are. You're welcome to include
my script with avivotool/radeontool if you'd like to.
--
Configure bugmail: http://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the xorg-driver-ati
mailing list