i810 server in Xorg 6.9.0 breakage
tannj
tannj at nerdshack.com
Sat Dec 16 11:14:08 PST 2006
I've figured out a quick fix to get the i810 Xorg server running on my
machine.
Originally I tried to trace the problem in the i810 driver because I was
getting a fatal server lockup with hardware acceleration, plus the screen
was
garbled(vertical lines from top to bottom). I could switch to different
consoles, but nothing was showing on my screen. I couldn't even kill the
server with ctrl+backspace. I turned on almost all the debug bits in
I810_DEBUG for the driver, except for an always sync bit, and compiled so I
could see some messages in the log files. I was able to trace the flow of
execution a little bit. It was waiting for the ring buffer to flush when
synching, whatever that means. I had to reboot to be able to do anything
further. I was able to ctrl+alt+del which properly rebooted the machine
and
fsck didn't have to run. I disabled acceleration and there was no more
lockup,
but the screen was still garbled(vertical lines from top to bottom). I was
able to switch to different consoles and see the login prompts. I could
even
kill the server.
Anyway, I noticed a difference between my 6.8.2 and 6.9.0 Xorg.0.log files.
The first important difference was in what was reported as "OS-reported
resource ranges after removing overlaps with PCI:". The block end address
of
the first resource in the list was different. I found out where these
overlaps
were removed(RemoveOverlaps in xf86Bus.c) and noticed new code in 6.9.0
that
replaced old code in 6.8.2. The old 6.8.2 code is still in the 6.9.0
code, but
is conditionally compiled. Out of curiosity I made the 6.8.2
RemoveOverlaps
compile instead of the 6.9.0 code. I ran X with acceleration enabled and
it
worked! The screen was not garbled either. The block end address of the
first
resource after removing overlaps is the same as shown in 6.8.2. I haven't
studied the code to figure out why the 6.9.0 RemoveOverlaps code causes the
breakage on this machine. Another thing I noticed was that there was an
"INVALID MEM ALLOCATION" warning in the log before I enabled the 6.8.2
RemoveOverlaps code. This warning didn't appear after enabling the 6.8.2
code.
Who should I report this problem to? I can provide my logs, xorg.conf, and
dmesg.
I've had this problem on FreeBSD 5.5 and later and DragonFlyBSD 1.6.0,
both of
which use Xorg 6.9.0.
I didn't have this problem on FreeBSD 5.4 which uses Xorg 6.8.2.
Thanks!
More information about the xorg
mailing list