summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtur Grabowski <art@cvs.openbsd.org>2001-07-18 14:31:28 +0000
committerArtur Grabowski <art@cvs.openbsd.org>2001-07-18 14:31:28 +0000
commitd771eb7d4a9f39b7a28590d46946192b5cc6bf14 (patch)
tree647c5a2de62ffe0bcd969045c821567a56f7f8ea
parentd53d46674101a22a8b28b4b30aebfb38ac6d81cd (diff)
Sync in more from NetBSD.
Original commit message: Patch from chuq for uvm r/w map oscillation bug. Fixes the XalphaNetBSD slowdown.
-rw-r--r--sys/uvm/uvm_device.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/uvm/uvm_device.c b/sys/uvm/uvm_device.c
index ac7085baa10..6cd818e924b 100644
--- a/sys/uvm/uvm_device.c
+++ b/sys/uvm/uvm_device.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: uvm_device.c,v 1.7 2001/03/22 03:05:54 smart Exp $ */
-/* $NetBSD: uvm_device.c,v 1.16 1999/04/08 10:26:21 drochner Exp $ */
+/* $OpenBSD: uvm_device.c,v 1.8 2001/07/18 14:31:27 art Exp $ */
+/* $NetBSD: uvm_device.c,v 1.17 1999/10/24 16:29:23 ross Exp $ */
/*
*
@@ -414,6 +414,7 @@ udv_fault(ufi, vaddr, pps, npages, centeridx, fault_type, access_type, flags)
int lcv, retval, mdpgno;
dev_t device;
int (*mapfn) __P((dev_t, int, int));
+ vm_prot_t mapprot;
UVMHIST_FUNC("udv_fault"); UVMHIST_CALLED(maphist);
UVMHIST_LOG(maphist," flags=%d", flags,0,0,0);
@@ -472,11 +473,12 @@ udv_fault(ufi, vaddr, pps, npages, centeridx, fault_type, access_type, flags)
break;
}
paddr = pmap_phys_address(mdpgno);
+ mapprot = ufi->entry->protection;
UVMHIST_LOG(maphist,
" MAPPING: device: pm=0x%x, va=0x%x, pa=0x%x, at=%d",
- ufi->orig_map->pmap, curr_va, (int)paddr, access_type);
- pmap_enter(ufi->orig_map->pmap, curr_va, paddr, access_type, 0,
- access_type);
+ ufi->orig_map->pmap, curr_va, (int)paddr, mapprot);
+ pmap_enter(ufi->orig_map->pmap, curr_va, paddr, mapprot, 0,
+ mapprot);
}
uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, uobj, NULL);