From owner-freebsd-hackers Tue Apr 22 15:58:36 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id PAA13562 for hackers-outgoing; Tue, 22 Apr 1997 15:58:36 -0700 (PDT) Received: from root.com (implode.root.com [198.145.90.17]) by hub.freebsd.org (8.8.5/8.8.5) with ESMTP id PAA13545 for ; Tue, 22 Apr 1997 15:58:23 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by root.com (8.8.5/8.6.5) with SMTP id PAA16161; Tue, 22 Apr 1997 15:59:57 -0700 (PDT) Message-Id: <199704222259.PAA16161@root.com> X-Authentication-Warning: implode.root.com: localhost [127.0.0.1] didn't use HELO protocol To: Jaye Mathisen cc: hackers@freebsd.org Subject: Re: Can't put 512MB ram in box ... Extended memory question. In-reply-to: Your message of "Tue, 22 Apr 1997 10:36:37 PDT." From: David Greenman Reply-To: dg@root.com Date: Tue, 22 Apr 1997 15:59:57 -0700 Sender: owner-hackers@freebsd.org X-Loop: FreeBSD.org Precedence: bulk >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 #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); /*