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);