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>
