Skip site navigation (1)Skip section navigation (2)
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>