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.
This commit is contained in:
parent
cff570f6d5
commit
d404b3ae19
|
@ -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
|
* Copyright (c) 1991, 1993
|
||||||
|
@ -36,9 +36,10 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#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_m68k_arch.h"
|
||||||
|
#include "opt_extmem.h"
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <uvm/uvm_extern.h>
|
#include <uvm/uvm_extern.h>
|
||||||
|
@ -124,6 +125,19 @@ pmap_bootstrap(paddr_t nextpa, paddr_t firstpa)
|
||||||
kptpa = nextpa;
|
kptpa = nextpa;
|
||||||
nptpages = RELOC(Sysptsize, int) + howmany(RELOC(physmem, int), NPTEPG) +
|
nptpages = RELOC(Sysptsize, int) + howmany(RELOC(physmem, int), NPTEPG) +
|
||||||
(IIOMAPSIZE + NPTEPG - 1) / 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;
|
nextpa += nptpages * PAGE_SIZE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue