AGP driver misconfigures aperture size on Athlon64 with SiS 760
controller (+PATCH)
Mike M
mmcgus at yahoo.com
Sun May 28 22:03:48 PDT 2006
Sorry about the formatting - send-pr doesn't work for
me, and I couldn't see the images on the web form to
submit it there...
To: FreeBSD-gnats-submit at freebsd.org
From: User & <mmcg>
Reply-To: User & <mmcg>
Cc:
X-send-pr-version: 3.113
X-GNATS-Notify:
>Submitter-Id: current-users
>Originator: Mike M
>Organization: none
>Confidential: no
>Synopsis: AGP driver misconfigures aperture size on
Athlon64 with SiS 760 controller (+PATCH)
>Severity: non-critical
>Priority: low
>Category: kern
>Class: sw-bug
>Release: FreeBSD 6.1-STABLE i386
>Environment:
System: FreeBSD blunderbox.domain.actdsltmp 6.1-STABLE
FreeBSD 6.1-STABLE #3: Sun May 28 20:40:21 PDT 2006
mmcg at blunderbox.domain.actdsltmp:/M/0/a/usr.obj/M/0/a/usr.src6/sys/BLUNDERBOX32
i386
Athlon 64, running FreeBSD/i386
>Description:
Running FreeBSD-i386 on an Athlon 64, with a radeon
9600 video card and a SiS760 AGP bridge, using X.org
6.9; GENERIC kernel with agp, dri, and radeon dri
compiled in.
When starting Xorg using the system as configured
above, DRM fails to initialize with the following:
agp0: binding memory at bad offset 0
This causes DRM, hence DRI to fail, resulting in no
acceleration for GLX under X. Somewhat frustrating,
as I had purchased the radeon card to solve precisely
this problem (with the built-in graphics).
The reason: the AGP driver thinks that the aperture
size is 4M - when, in fact, it is 64M. The aperture
initialization then fails because AGP_GET_APERTURE()
is returning 4M, whereas the radeon DRI driver is
using the size information returned by agp_get_info()
(which retrieves the size of the allocated resource
directly from the resource manager, using
rman_get_size(sc->as_aperture) - this may or may not
be a bug). So agp_alloc_gatt() fails because it's
asked to allocate 64M but only believes 4M is
available.
>How-To-Repeat:
Use an Athlon 64 motherboard with a SiS 760 AGP bridge
and (in my case) a radeon 9600 video card. Start
Xorg. No DRI.
>Fix:
After the following patch, things magically started
working (it just adds the SiS760 device ID to the
agp_amd64.c handler):
diff -c /usr/src/sys/pci/agp_amd64.c{.ctm,}
*** /usr/src/sys/pci/agp_amd64.c.ctm Sun May 28
19:37:02 2006
--- /usr/src/sys/pci/agp_amd64.c Sun May 28
19:41:42 2006
***************
*** 97,102 ****
--- 97,104 ----
return ("AMD 8151 AGP graphics
tunnel");
case 0x07551039:
return ("SiS 755 host to AGP bridge");
+ case 0x07601039:
+ return ("SiS 760 host to AGP bridge");
case 0x168910b9:
return ("ULi M1689 AGP Controller");
case 0x00d110de:
glxgears went from 90fps to 1200fps.
WARNING: I do not know how (or whether) this will
affect non-athlon64s.
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
More information about the freebsd-bugbusters
mailing list