Date: Tue, 22 Apr 1997 15:59:57 -0700 From: David Greenman <dg@root.com> To: Jaye Mathisen <mrcpu@cdsnet.net> Cc: hackers@freebsd.org Subject: Re: Can't put 512MB ram in box ... Extended memory question. Message-ID: <199704222259.PAA16161@root.com> In-Reply-To: Your message of "Tue, 22 Apr 1997 10:36:37 PDT." <Pine.NEB.3.95.970422103449.25438i-100000@mail.cdsnet.net>
next in thread | previous in thread | raw e-mail | index | archive | help
>I get a "kmem_suballoc" panic. > >kmem_suballoc: bad status return of 3 Oh, one more thing: If you are not running -current, then there is one fix which should help your situation a bunch. Attached; I don't know if this will apply cleanly to 2.2, however. Let me know. -DG David Greenman Core-team/Principal Architect, The FreeBSD Project Index: pmap.c =================================================================== RCS file: /home/ncvs/src/sys/i386/i386/pmap.c,v retrieving revision 1.140 retrieving revision 1.141 diff -c -r1.140 -r1.141 *** pmap.c 1997/04/13 01:48:08 1.140 --- pmap.c 1997/04/13 03:35:30 1.141 *************** *** 102,107 **** --- 102,108 ---- #include <machine/specialreg.h> #define PMAP_KEEP_PDIRS + #define PMAP_SHPGPERPROC 200 #if defined(DIAGNOSTIC) #define PMAP_DIAGNOSTIC *************** *** 1429,1445 **** /* * init the pv_entry allocation system */ - #define PVSPERPAGE 64 void init_pv_entries(npg) int npg; { /* ! * allocate enough kvm space for PVSPERPAGE entries per page (lots) ! * kvm space is fairly cheap, be generous!!! (the system can panic if ! * this is too small.) */ ! npvvapg = ((npg * PVSPERPAGE) * sizeof(struct pv_entry) + PAGE_SIZE - 1) / PAGE_SIZE; pvva = kmem_alloc_pageable(kernel_map, npvvapg * PAGE_SIZE); /* --- 1430,1451 ---- /* * init the pv_entry allocation system */ void init_pv_entries(npg) int npg; { /* ! * Allocate enough kvm space for one entry per page, and ! * each process having PMAP_SHPGPERPROC pages shared with other ! * processes. (The system can panic if this is too small, but also ! * can fail on bootup if this is too big.) ! * XXX The pv management mechanism needs to be fixed so that systems ! * with lots of shared mappings amongst lots of processes will still ! * work. The fix will likely be that once we run out of pv entries ! * we will free other entries (and the associated mappings), with ! * some policy yet to be determined. */ ! npvvapg = ((PMAP_SHPGPERPROC * maxproc + npg) * sizeof(struct pv_entry) + PAGE_SIZE - 1) / PAGE_SIZE; pvva = kmem_alloc_pageable(kernel_map, npvvapg * PAGE_SIZE); /*
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199704222259.PAA16161>