Subject: UVM questions.
To: None <tech-kern@netbsd.org>
From: Anders Magnusson <ragge@ludd.luth.se>
List: tech-kern
Date: 06/28/1999 17:21:55
I have lately trying to find what causes the problem with swapping
on vax. After much searching I have found that the following does not
seem to do what I think. Scenario:

A submap is created for page tables:

	pte_map = uvm_km_suballoc(kernel_map, &ptemapstart, &ptemapend,
	    USRPTSIZE * 4 * maxproc, FALSE, FALSE, &pte_map_store);

This would (I assume) create a submap with unpageable entries.
Page tables are allocated with:

	pmap->pm_p0br = (void *)uvm_km_valloc_wait(pte_map, bytesiz);

which would then allow pages to be faulted in on demand, and the pages
would be unpageable. BUT:

As soon as the system comes short of memory, uvmpd_scan() starts to unmap
those pages, via pmap_page_protect(). Why? What is the mechanism that
controls if pages should be paged or not?

This is kind of fatal, because VAXen normally needs swapping :-)

-- Ragge