The AGP/PCI detection in the radeon driver is totally broken, both in
XFree86 4.3.0, 4.4.0, and current xorg trees, although there were various
attempts to fix it in 4.3.0 and later, none of them succeed.
I got tonnes of bug reports about this in Red Hat bugzilla, and bit my
tongue and fixed the problem for once and for all properly, however the
code is Radeon specific currently as that was easiest at the time. My
plan is to replace this radeon specific code with generic code in the
future which all drivers can use.
My patch should be included in the upcoming release, or else many Radeon AGP
users, which make up the overwhelming majority of Radeon users, will end up
with their cards being treated like PCI cards. In the lesser case, many
users just end up with a large performance loss. In the worst case however,
users who had a previously working AGP card in a prior XFree86 release, may
end up upgrading and getting their card being treated as PCI all of a sudden,
and using pcigart for DRI. On many systems pcigart does not work at all, and
so they upgrade and end up with a totally broken nonfunctional system.
I will submit a patch to fix this problem in the near future. This is
currently a placeholder.
Created attachment 134 [details] [review]
Patch to implement AGP/PCI detection in the Radeon driver properly by walking the PCI capabilities list in PCI config space.
Patch by Mike A. Harris <firstname.lastname@example.org> to implement proper AGP/PCI
autodetection in Radeon driver by walking the PCI capabilities list. This
patch is ported forward from the patch I wrote for XFree86 4.3.0, and I
consider it to be a temporary radeon driver specific fix. In the future,
this should be reimplemented in os-support somewhere, and hooks put in all
drivers to detect AGP/PCI using this method.
I'm going to commit this to the xorg source tree unless there are any
objections. It can always be changed after the fact if someone thinks
there is anything wrong with it.
Checked into XORG-RELEASE-1:
Fixed AGP/PCI card detection in Radeon driver, by walking the PCI capabilities
list in PCI config space (Bugzilla #255) (Mike A. Harris).
./: Tag: XORG-RELEASE-1
xc/programs/Xserver/hw/xfree86/drivers/ati/: Tag: XORG-RELEASE-1
Revision Changes Path
188.8.131.52 +2 -0 xc/Attic/CHANGELOG-RELEASE-1
184.108.40.206.6.2 +56 -18
220.127.116.11.6.2 +7 -0 xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_reg.h
Someone reverted my patch during 6.7.0->6.8.0 development. I haven't yet
tracked down the culprit or the reasoning, but it needs to go back in. The
consequence of it not going back in are tonnes of Radeon user bug reports
hitting bugzilla with oddball bug reports that many people won't be able
to reproduce due to the way the problem manifests itself.
This code is basically still in the current CVS head -- see lines 2404-2464 in
radeon_driver.c -- but it is slightly different from what you checked in. This
change was something that Egbert made in revision 18.104.22.168.6.3. If that change
was incorrect, please submit another patch that fixes the problem.
It appears this was an error on my part. I've examined the current sources,
and the sources from the timeframe that I was looking at when I reopened this,
and the code is indeed there. I believe I may have been in the wrong source
tree of an older set of X sources.
Closing as FIXED.