NetBSD Problem Report #24013

Received: (qmail 5920 invoked by uid 605); 7 Jan 2004 16:45:57 -0000
Message-Id: <27645-1073493955@rainier.reedmedia.net>
Date: Wed, 07 Jan 2004 08:45:56 -0800
From: reed@reedmedia.net
Sender: gnats-bugs-owner@NetBSD.org
Reply-To: reed@reedmedia.net
To: gnats-bugs@gnats.netbsd.org
Subject: i810 Cannot allocate memory
X-Send-Pr-Version: 3.95

>Number:         24013
>Category:       kern
>Synopsis:       i810 Cannot allocate memory
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Jan 07 16:46:00 +0000 2004
>Closed-Date:    
>Last-Modified:  Wed Jan 07 20:23:33 +0000 2004
>Originator:     
>Release:        NetBSD 1.6.2_RC3
>Organization:
http://bsd.reedmedia.net/
>Environment:


NetBSD bigfour.reedmedia.net 1.6.2_RC3 NetBSD 1.6.2_RC3 (GENERIC) #0: Fri Nov 28 12:06:50 UTC 2003     autobuild@tgm.netbsd.org:/autobuild/netbsd-1-6-PATCH002-RC3/i386/OBJ/autobuild/netbsd-1-6-PATCH002-RC3/src/sys/arch/i386/compile/GENERIC i386
Architecture: i386
Machine: i386
>Description:
XFree86 -configure detected i810. It started up fine a few times.
Then it failed with:

-=-=-=-
(II) I810(0): xf86BindGARTMemory: bind key 15 at 0x00000000 (pgoffset 0)
(WW) I810(0): xf86BindGARTMemory: binding of gart memory with key 15
        at offset 0x0 failed (Cannot allocate memory)

Fatal server error:
AddScreen/ScreenInit failed for driver 0
-=-=-=-

This is XFree86 Version 4.3.0 using
/usr/X11R6/lib/modules/drivers/i810_drv.o.
My X came from ftp://ftp.netbsd.org/pub/NetBSD/misc/jmc/X-1.6.2/

When it works successfully:
-=-=-=-
(II) I810(0): xf86BindGARTMemory: bind key 0 at 0x00000000 (pgoffset 0)
(II) I810(0): xf86BindGARTMemory: bind key 1 at 0x00800000 (pgoffset 2048)
(II) I810(0): xf86BindGARTMemory: bind key 2 at 0x00c00000 (pgoffset 3072)
(II) I810(0): Adding 512 scanlines for pixmap caching
(II) I810(0): Allocated Scratch Memory
(WW) I810(0): remove MTRR eff00000 - eff80000
(WW) I810(0): set MTRR e8000000 - ec000000
(II) I810(0): vgaHWGetIOBase: hwp->IOBase is 0x03d0, hwp->PIOOffset is 0x0000
(WW) I810(0): remove MTRR a0000 - b0000
...
-=-=-=-

Greg Troxel mentioned similar issues:

http://mail-index.netbsd.org/port-i386/2003/01/27/0013.html
http://mail-index.netbsd.org/port-i386/2003/01/29/0008.html 
He said "I edited sys/dev/pci/agp.c to put in more printfs at
failure points, rebooted, and now X works.  It may be that the
fresh boot allows memory allocation to succeed, or something more
complex."
http://mail-index.netbsd.org/port-i386/2003/07/07/0003.html
http://mail-index.netbsd.org/port-i386/2004/01/06/0017.html
>How-To-Repeat:
Start XFree86 a few times using i810.
>Fix:
Workarounds:  printf attempt at debugging and starting X right at
boot (and don't restart X later). 

Another workaround is to use "vga" driver instead (but lower
resolution).

>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: xsrc-manager->kern-bug-people 
Responsible-Changed-By: tron 
Responsible-Changed-When: Wed Jan 7 20:21:40 UTC 2004 
Responsible-Changed-Why:  
The error message is caused by a failure of the following ioctl(): 

if (ioctl(gartFd, AGPIOC_BIND, &bind) != 0) { 
xf86DrvMsg(screenNum, X_WARNING, "xf86BindGARTMemory: " 
"binding of gart memory with key %dn" 
"tat offset 0x%x failed (%s)n", 
key, offset, strerror(errno)); 
return FALSE; 
} 

Whatever goes wrong happens in the kernel. My guess is that it is related 
to memory fragmentation or resources not being freed correctly. 

BTW: the AGP driver in NetBSD 1.6/1.6.x is known to have many problems. 
It would be interesting to try that with a NetBSD-current kernel. 
>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.