summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authordrahn <drahn@openbsd.org>2001-02-20 04:29:08 +0000
committerdrahn <drahn@openbsd.org>2001-02-20 04:29:08 +0000
commit1cc4366005e5d12986a22811ce6eb2ec98e82afc (patch)
treecfbdeb10ab0daf500ba3bc6181122c39d9eed3fc /sys
parentIndicate that wdc is capable of UDMA, print device mode using MI (diff)
downloadwireguard-openbsd-1cc4366005e5d12986a22811ce6eb2ec98e82afc.tar.xz
wireguard-openbsd-1cc4366005e5d12986a22811ce6eb2ec98e82afc.zip
Adhere to VM/UVM pager requirements, do not unmap pager mappings.
recognize pager_sva/pager_eva. Does not seem to change anything under UVM but is recommended, may have been the cause for the "pmap" bug under VM. Test compiled for VM, but not run. Ok'd by art.
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/powerpc/powerpc/pmap.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/sys/arch/powerpc/powerpc/pmap.c b/sys/arch/powerpc/powerpc/pmap.c
index 9a2908b3832..783ee2996b0 100644
--- a/sys/arch/powerpc/powerpc/pmap.c
+++ b/sys/arch/powerpc/powerpc/pmap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.c,v 1.22 2001/02/16 05:18:06 drahn Exp $ */
+/* $OpenBSD: pmap.c,v 1.23 2001/02/20 04:29:08 drahn Exp $ */
/* $NetBSD: pmap.c,v 1.1 1996/09/30 16:34:52 ws Exp $ */
/*
@@ -68,6 +68,10 @@ static u_int nextavail;
static struct mem_region *mem, *avail;
+#ifndef UVM
+ extern vm_offset_t pager_sva, pager_eva;
+#endif
+
#if 1
void
dump_avail()
@@ -1544,6 +1548,15 @@ pmap_page_protect(pa, prot)
while (pv->pv_idx != -1) {
va = pv->pv_va;
pm = pv->pv_pmap;
+#ifdef UVM
+ if ((va >=uvm.pager_sva) && (va < uvm.pager_eva)) {
+ continue;
+ }
+#else
+ if (va >= pager_sva && va < pager_eva) {
+ continue;
+ }
+#endif
pmap_remove(pm, va, va + NBPG);
}
splx(s);