Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/x68k/x68k Reserve more bootstrap kernel PT pages if...



details:   https://anonhg.NetBSD.org/src/rev/790d22b0db02
branches:  trunk
changeset: 777603:790d22b0db02
user:      tsutsui <tsutsui%NetBSD.org@localhost>
date:      Sat Feb 25 02:43:08 2012 +0000

description:
Reserve more bootstrap kernel PT pages if options EXTENDED_MEMORY is defined
for VA allocation in the extended memory probe function and possible 128MB
memory on 060turbo, as worksaround for x68k specific part of PR/45915.
Fixes GENERIC kernel panic on X68030 even without extended memory.
XXX: we should rather have proper probe function before pmap_bootstrap()

Tested on 060turbo with 128MB SIMM by Y.Sugahara, and also
tested on XM6i with 68030 and custom 128MB memory settings by isaki@.

Should be pulled up to netbsd-6.

diffstat:

 sys/arch/x68k/x68k/pmap_bootstrap.c |  18 ++++++++++++++++--
 1 files changed, 16 insertions(+), 2 deletions(-)

diffs (41 lines):

diff -r 43bf23d1d909 -r 790d22b0db02 sys/arch/x68k/x68k/pmap_bootstrap.c
--- a/sys/arch/x68k/x68k/pmap_bootstrap.c       Sat Feb 25 00:13:28 2012 +0000
+++ b/sys/arch/x68k/x68k/pmap_bootstrap.c       Sat Feb 25 02:43:08 2012 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: pmap_bootstrap.c,v 1.58 2012/02/10 06:28:39 mhitch Exp $       */
+/*     $NetBSD: pmap_bootstrap.c,v 1.59 2012/02/25 02:43:08 tsutsui Exp $      */
 
 /* 
  * Copyright (c) 1991, 1993
@@ -36,9 +36,10 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.58 2012/02/10 06:28:39 mhitch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.59 2012/02/25 02:43:08 tsutsui Exp $");
 
 #include "opt_m68k_arch.h"
+#include "opt_extmem.h"
 
 #include <sys/param.h>
 #include <uvm/uvm_extern.h>
@@ -124,6 +125,19 @@
        kptpa = nextpa;
        nptpages = RELOC(Sysptsize, int) + howmany(RELOC(physmem, int), NPTEPG) +
                (IIOMAPSIZE + NPTEPG - 1) / NPTEPG;
+#ifdef EXTENDED_MEMORY
+       /*
+        * Current supported maximum EXTENDED_MEMORY is 128MB on 060turbo.
+        */
+#define MAX_EXTENDED_MEMORY    (128 * 1024 * 1024)
+       nptpages += howmany(btoc(MAX_EXTENDED_MEMORY), NPTEPG);
+
+       /*
+        * mem_exist() in machdep.c needs two extra VA pages before pmap_init()
+        * to probe >16MB memory.
+        */
+       nptpages += 1;
+#endif
        nextpa += nptpages * PAGE_SIZE;
 
        /*



Home | Main Index | Thread Index | Old Index