Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 29 May 2006 16:19:54 +0100
From:      Mike M <mmcgus@yahoo.com>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   kern/98094: AGP driver misconfigures aperture size on
Message-ID:  <E1FkjX8-000AB5-HU@shrike.submonkey.net>
Resent-Message-ID: <200605291520.k4TFKQJS055740@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>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@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)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E1FkjX8-000AB5-HU>