Subject: Re: panic during boot after upgrading from 32 to 64 MB
To: None <firstname.lastname@example.org>
From: John S. Dyson <email@example.com>
Date: 11/13/1996 23:47:06
> >as suggested by Tatoku Ogaito, Zdenek Salvet and Mike Long, I needed
> >to increase NKPDE in /sys/arch/i386/include/pmap.h from 12 to 24.
> >My machine now works with 64 MB.
> this makes no sense to me at all. i've got dozens of machines running
> (1.1, 1.2, and current) that have 64M and have no problems what so ever.
> it's only when i try to convince the kernel to use more than that (96,
> maybe 128) that it can't stay up more than a minute or two. anyone
> got ideas about this?
The problem is that the address space that is allocated from the
kernel map becomes bigger than the number of kernel PDEs can support.
On FreeBSD all maps inside of the kernel are submaps of the kernel map.
This can happen in 4.4-Lite depending on various tuning params. There
has been a fix in FreeBSD that is MI (in the sense that there have
been some strategically placed calls in the MI layer, that fix the
problems using MD code) for the last year or two. Specifically, we sense
the growth of the kernel map and add the PDEs as needed. You really
should not/cannot safely fault the kernel page table pages in like you can a
process page table page, as the process is much more complex, and things
CAN happen in the kernel at unexpected times.
Essentially, on the X86, all you have to do is to add the new page table
page into the kernel, and fixup each of the process address spaces. Not
trivial, but not brain-surgery either. We also start off with very few
kernel PDEs and grow as needed. This keeps small systems (or embedded
systems) from being encumbered with lots of kernel page table pages,
and dynamically adds them as needed to bigger systems.