AGP driver misconfigures aperture size on Athlon64 with SiS 760 controller (+PATCH)

Mike M <[email protected]>
Newsgroups gmane.os.freebsd.bugbusters
Message-ID <[email protected]>
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: [email protected]
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
[email protected]:/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 
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugbusters
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.