Subject: Re: losing with i815, NetBSD 1.6-stable, current xsrc
To: None <port-i386@netbsd.org>
From: Greg Troxel <gdt@ir.bbn.com>
List: port-i386
Date: 01/29/2003 15:29:49
(WW) I810(0): xf86BindGARTMemory: binding of gart memory with key 15
at offset 0x0 failed (Cannot allocate memory)
I downgraded to 4.2.0 (via the 1.6 release tag in xsrc), but that
didn't help. 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.
I am still getting the PGTBL_CTL fixup messages. I'll try -current
xsrc again some time, and see if restarting X next Monday is
successful.
On another note, 24 bpp/1280x1024/75Hz looks horrible with lots of
flicker/artifacts. 24 bpp at 1024x768 looks fine, as does 16 bpp
1280x1024. I'm quite sure the monitor was fine; it worked on the
previous box and 75 Hz is well within spec (~= 21" Dell trinitron).
I commented earlier about a 'return ENOMEM':
I don't understand why the return ENOMEM here isn't 'continue;'; it
seems the idea is to try to allocate smaller chunks if 8 pages doesn't work.
for (contigpages = 8; contigpages > 0; contigpages >>= 1) {
nseg = (mem->am_size / (contigpages * PAGE_SIZE)) + 1;
segs = malloc(nseg * sizeof *segs, M_AGP, M_WAITOK);
if (segs == NULL)
return ENOMEM;
Now I see why this is so: this is merely the malloc of the bus_dma
structs, not the actual pages.
Greg Troxel <gdt@ir.bbn.com>