Subject: Re: 1.4A problem on 5000/200
To: Andy Doran <ad@psn.ie>
From: Simon Burge <simonb@telstra.com.au>
List: port-pmax
Date: 04/11/1999 11:15:07
Andy Doran wrote:

> > Okay. Not being able to install 1.4A on the 5000/200
> > directly I've attempted to boot from the HD I setup
> > for the 5000/240. I get the following error:
> > 
> > real_mem = 33554432
> > panic: uvm_km_suballoc: unable to allocate space in parent map
> > halted.
> 
> I've been seeing the *exact* same thing from time to time. This is
> happening in machdep.c. Can somebody with the know-how investigate?

Well, I don't have any know-how when it comes to UVM, but a wild stab in
the dark is that there _may_ be an uninitialised variable.  Can you try
the following patch to machdep.c?  If minaddr or maxaddr is non-zero in
the first print it _may_ be wrong, and changing the "#if 0" to "#if 1"
_may_ help.

Note, this is a pre-coffee analysis and patch :-)

Simon.

ps: I'll build a test kernel if you can't.
--

Index: machdep.c
===================================================================
RCS file: /cvsroot/src/sys/arch/pmax/pmax/machdep.c,v
retrieving revision 1.134
diff -u -r1.134 machdep.c
--- machdep.c	1999/04/01 00:17:49	1.134
+++ machdep.c	1999/04/11 01:12:23
@@ -581,16 +581,22 @@
 			curbufsize -= PAGE_SIZE;
 		}
 	}
+#if 0
+minaddr = 0;
+maxaddr = 0;
+#endif
 	/*
 	 * Allocate a submap for exec arguments.  This map effectively
 	 * limits the number of processes exec'ing at any time.
 	 */
+printf("uvm_km_suballoc: exec_map, size %d, minaddr %p, maxaddr %p\n", 16 * NCARGS, minaddr, maxaddr);
 	exec_map = uvm_km_suballoc(kernel_map, &minaddr, &maxaddr,
 				   16 * NCARGS, TRUE, FALSE, NULL);
 
 	/*
 	 * Allocate a submap for physio
 	 */
+printf("uvm_km_suballoc: phys_map, size %d, minaddr %p, maxaddr %p\n", VM_PHYS_SIZE, minaddr, maxaddr);
 	phys_map = uvm_km_suballoc(kernel_map, &minaddr, &maxaddr,
 				   VM_PHYS_SIZE, TRUE, FALSE, NULL);