kern/98094: AGP driver misconfigures aperture size on
Mike M
mmcgus at yahoo.com
Mon May 29 08:20:48 PDT 2006
>Number: 98094
>Category: kern
>Synopsis: AGP driver misconfigures aperture size on
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Mon May 29 15:20:25 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator: Mike M
>Release: FreeBSD 6.1-STABLE i386
>Organization:
none
>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/BLUNDE=
RBOX32
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.
>Release-Note:
>Audit-Trail:
>Unformatted:
Athlon64 with SiS 760 controller (+PATCH)
More information about the freebsd-bugs
mailing list