diff options
author | Artur Grabowski <art@cvs.openbsd.org> | 2001-07-18 14:31:28 +0000 |
---|---|---|
committer | Artur Grabowski <art@cvs.openbsd.org> | 2001-07-18 14:31:28 +0000 |
commit | d771eb7d4a9f39b7a28590d46946192b5cc6bf14 (patch) | |
tree | 647c5a2de62ffe0bcd969045c821567a56f7f8ea /sys | |
parent | d53d46674101a22a8b28b4b30aebfb38ac6d81cd (diff) |
Sync in more from NetBSD.
Original commit message:
Patch from chuq for uvm r/w map oscillation bug.
Fixes the XalphaNetBSD slowdown.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/uvm/uvm_device.c | 12 |
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); |