From owner-freebsd-hackers Wed Jun 6 21:22: 0 2001 Delivered-To: freebsd-hackers@freebsd.org Received: from core.usrlib.org (CC2-861.charter-stl.com [24.217.115.99]) by hub.freebsd.org (Postfix) with ESMTP id 0700337B405 for ; Wed, 6 Jun 2001 21:21:55 -0700 (PDT) (envelope-from ajh3@core.usrlib.org) Received: by core.usrlib.org (Postfix, from userid 1001) id E53AFA874; Wed, 6 Jun 2001 23:20:45 -0500 (CDT) Date: Wed, 6 Jun 2001 23:20:45 -0500 From: Andrew Hesford To: FreeBSD-hackers Subject: XFree86 4.1.0 and i810 Message-ID: <20010606232045.A453@core.usrlib.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i X-Loop: Andrew Hesford Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG Many have had problems with the XFree86 and i810 or i815 chipsets under FreeBSD. Specifically, the server crashes after switching to a text console and switching back to the console X is running on. Unlike versions 4.0.2 and 4.0.3 (4.0.1 magically works for me), 4.1.0 prints an error message: xf86BindGARTMemory: binding of gart memory with key %d at offset 0x%x failed (%s), where %d, %x, and %s all have their standard C interpretations. %s is the string produced by interpreting the global variable errno as set by ioctl. The file where the error occurs is in (relative to the xc directory) programs/Xserver/hw/xfree86/os-support/bsd/lnx_agp.c (a link to ../linux/lnx_agp.c), line 257. The problem is a failed AGPIOC_BIND ioctl call. The variable errno is set to 2, or "No such file or directory." The biggest problem with the crashing server is that it will not restart properly until the machine is shutdown; it seems the GART is not cleared after the crash. However, I have not investigated this at all. I submit this here in the hopes that somebody who understands ioctl (specifically AGPIOC_BIND, defined in /usr/include/sys/agpio.h) might be able to explain why I'm getting errno=2. I can't see why this specific problem would occur, unless the ioctl is trying to access the AGP GART at some device node other than /dev/agpgart. I hope somebody can provide more information. I am in the process of fetching and extracting the XFree86 4.0.1 sources, I will take a look at how they handled the ioctl. Unfortunately, I do not know enough about the design of the FreeBSD kernel to go poking in there; if XFree86 4.0.1 can't offer some hints on the right way to handle things, I'm fresh out of ideas. -- Andrew Hesford ajh3@usrlib.org To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message