Subject: Re: 1.4A problem on 5000/200
To: Simon Burge <simonb@telstra.com.au>
From: Jason Thorpe <thorpej@nas.nasa.gov>
List: port-pmax
Date: 04/14/1999 09:13:16
On Wed, 14 Apr 1999 12:32:47 +1000 
 Simon Burge <simonb@telstra.com.au> wrote:

 > > This uvm_km_suballoc() panic in machdep.c is back again for me (with a
 > > fresh source tree) when allocating exec_map.
 > > 
 > > 	minaddr is 0xffffffff (doesn't matter)
 > > 	maxaddr is 0xffffffff (doesn't matter)
 > > 	kernel_map is nonzero
 > > 	size is 4194304			
 > > 
 > > Any ideas? I'll recompile with the UVMHIST stuff tomorrow. BTW, tried
 > > linking a MIPS kernel that uses any of the bswap() functions lately?

Um, actually, it's fairly obvious why the uvm_km_suballoc() is failing.

Basically, the MIPS pmap statically allocates all the PTEs for the lifetime
of the kernel pmap in pmap_bootstrap().  This creates a fixed amount of
virtual space available to the kernel.  Obviously, the calculation to
figure the size of the kernel page table is wrong (not accounting for
everything), and so you're running out of KVA space.

	/*
	 * Allocate a PTE table for the kernel.
	 * We also reserve space for kmem_alloc_pageable() for vm_fork().
	 */

...that block of code.

NOTE: I took out the code that allocates mb_map, since it is not used on
the MIPS.  This means that there is no longer VM_MBUF_SIZE PTEs figured
into the kernel PTE table.

 > 
 > Just of the top of my head and without looking at code, did you try
 > changing the "#if 0" to "#if 1" at the top of my patch and see if that
 works?
 > 
 > Simon.

        -- Jason R. Thorpe <thorpej@nas.nasa.gov>