Subject: UVM questions.
To: None <email@example.com>
From: Anders Magnusson <firstname.lastname@example.org>
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 :-)