Subject: pmap questions
To: None <tech-kern@sun-lamp.cs.berkeley.edu>
From: Joachim Isaksson <ic@ludd.luth.se>
List: tech-kern
Date: 06/09/1994 03:28:31
As I decided to rewrite the pmap module for the vax from scratch, I looked
through MACH documentation on the pmap routines. What I'm wondering is
basically why the routines that are used in startup of the pmap module, ie;
- pmap_free_pages
- pmap_virtual_space
- pmap_next_page
have been eliminated in the NetBSD code and (apparently) have been substituted
for the kernel freely manipulating the global variables(sigh) avail_start and
virtual_avail.
Question is only why this has been done. As I see it, the MACH solution to
bootstrap solves the contig/noncontig memory problem much smoother than having
two separate vm_page bootstraps depending on the memory configuration.
Ie if pmap knows the memory isn't contig, it only gives 'away' the existing
pages with pmap_next_page, and the others will automatically never be added to
the free list.
Am I missing something here? Somehow it seems to me that locore could send a
list of available physical memory up to pmap, and it distributes the pages it
doesn't need for internal structures via pmap_next_page to the machine
independent parts.
I'm not in any way trying to flame the existing implementation, just found the
MACH method well explained while I have no clue about the reasons why it looks
as it does in NetBSD.
/me
------------------------------------------------------------------------------