diff options
author | 2007-05-31 21:20:30 +0000 | |
---|---|---|
committer | 2007-05-31 21:20:30 +0000 | |
commit | 86edf6e682e96dcc141453fe06d51e8b4619d744 (patch) | |
tree | 27dc2faf7a68316b26c5109d5cb72bd06dc99d45 | |
parent | Only process ENV when in interactive mode as SU says. Started by (diff) | |
download | wireguard-openbsd-86edf6e682e96dcc141453fe06d51e8b4619d744.tar.xz wireguard-openbsd-86edf6e682e96dcc141453fe06d51e8b4619d744.zip |
zap the vm_amap am_l simplelock, and amap_{lock/unlock} macros for
simple_{lock/unlock}.
ok art@
-rw-r--r-- | sys/uvm/uvm_amap.c | 29 | ||||
-rw-r--r-- | sys/uvm/uvm_amap.h | 9 | ||||
-rw-r--r-- | sys/uvm/uvm_amap_i.h | 9 | ||||
-rw-r--r-- | sys/uvm/uvm_fault.c | 8 | ||||
-rw-r--r-- | sys/uvm/uvm_fault_i.h | 4 | ||||
-rw-r--r-- | sys/uvm/uvm_loan.c | 10 | ||||
-rw-r--r-- | sys/uvm/uvm_map.c | 6 | ||||
-rw-r--r-- | sys/uvm/uvm_mmap.c | 6 |
8 files changed, 9 insertions, 72 deletions
diff --git a/sys/uvm/uvm_amap.c b/sys/uvm/uvm_amap.c index adbc0ea929f..8bb30dc1c59 100644 --- a/sys/uvm/uvm_amap.c +++ b/sys/uvm/uvm_amap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: uvm_amap.c,v 1.36 2007/04/27 16:38:13 art Exp $ */ +/* $OpenBSD: uvm_amap.c,v 1.37 2007/05/31 21:20:30 thib Exp $ */ /* $NetBSD: uvm_amap.c,v 1.27 2000/11/25 06:27:59 chs Exp $ */ /* @@ -175,7 +175,6 @@ amap_alloc1(int slots, int padslots, int waitf) totalslots = malloc_roundup((slots + padslots) * sizeof(int)) / sizeof(int); - simple_lock_init(&amap->am_l); amap->am_ref = 1; amap->am_flags = 0; #ifdef UVM_AMAP_PPREF @@ -258,7 +257,6 @@ amap_free(struct vm_amap *amap) if (amap->am_ppref && amap->am_ppref != PPREF_NONE) free(amap->am_ppref, M_UVMAMAP); #endif - amap_unlock(amap); /* mainly for lock debugging */ pool_put(&uvm_amap_pool, amap); UVMHIST_LOG(maphist,"<- done, freed amap = %p", amap, 0, 0, 0); @@ -296,7 +294,6 @@ amap_extend(struct vm_map_entry *entry, vsize_t addsize) * there are some unused slots before us in the amap. */ - amap_lock(amap); /* lock! */ AMAP_B2SLOT(slotmapped, entry->end - entry->start); /* slots mapped */ AMAP_B2SLOT(slotadd, addsize); /* slots to add */ slotneed = slotoff + slotmapped + slotadd; @@ -313,7 +310,6 @@ amap_extend(struct vm_map_entry *entry, vsize_t addsize) amap_pp_adjref(amap, slotoff + slotmapped, slotadd, 1); } #endif - amap_unlock(amap); UVMHIST_LOG(maphist,"<- done (case 1), amap = %p, sltneed=%ld", amap, slotneed, 0, 0); return (0); @@ -336,7 +332,6 @@ amap_extend(struct vm_map_entry *entry, vsize_t addsize) } #endif amap->am_nslot = slotneed; - amap_unlock(amap); /* * no need to zero am_anon since that was done at @@ -354,7 +349,6 @@ amap_extend(struct vm_map_entry *entry, vsize_t addsize) * XXXCDC: could we take advantage of a kernel realloc()? */ - amap_unlock(amap); /* unlock in case we sleep in malloc */ slotalloc = malloc_roundup(slotneed * sizeof(int)) / sizeof(int); #ifdef UVM_AMAP_PPREF newppref = NULL; @@ -386,7 +380,6 @@ amap_extend(struct vm_map_entry *entry, vsize_t addsize) } return (ENOMEM); } - amap_lock(amap); /* re-lock! */ KASSERT(amap->am_maxslot < slotneed); /* @@ -432,9 +425,6 @@ amap_extend(struct vm_map_entry *entry, vsize_t addsize) amap->am_nslot = slotneed; amap->am_maxslot = slotalloc; - /* unlock */ - amap_unlock(amap); - /* and free */ free(oldsl, M_UVMAMAP); free(oldbck, M_UVMAMAP); @@ -635,7 +625,6 @@ amap_copy(struct vm_map *map, struct vm_map_entry *entry, int waitf, return; } srcamap = entry->aref.ar_amap; - amap_lock(srcamap); /* * need to double check reference count now that we've got the @@ -649,7 +638,6 @@ amap_copy(struct vm_map *map, struct vm_map_entry *entry, int waitf, entry->etype &= ~UVM_ET_NEEDSCOPY; amap->am_ref--; /* drop final reference to map */ amap_free(amap); /* dispose of new (unused) amap */ - amap_unlock(srcamap); return; } @@ -690,8 +678,6 @@ amap_copy(struct vm_map *map, struct vm_map_entry *entry, int waitf, } #endif - amap_unlock(srcamap); - /* * install new amap. */ @@ -742,8 +728,6 @@ amap_cow_now(struct vm_map *map, struct vm_map_entry *entry) * am_anon[] array on us while the lock is dropped. */ ReStart: - amap_lock(amap); - for (lcv = 0 ; lcv < amap->am_nused ; lcv++) { /* @@ -781,7 +765,6 @@ ReStart: */ if (pg->pg_flags & PG_BUSY) { atomic_setbits_int(&pg->pg_flags, PG_WANTED); - amap_unlock(amap); UVM_UNLOCK_AND_WAIT(pg, &anon->an_lock, FALSE, "cownow", 0); goto ReStart; @@ -807,7 +790,6 @@ ReStart: uvm_anfree(nanon); } simple_unlock(&anon->an_lock); - amap_unlock(amap); uvm_wait("cownowpage"); goto ReStart; } @@ -838,8 +820,6 @@ ReStart: */ } /* end of 'for' loop */ - - amap_unlock(amap); } /* @@ -859,11 +839,6 @@ amap_splitref(struct vm_aref *origref, struct vm_aref *splitref, vaddr_t offset) panic("amap_splitref: split at zero offset"); /* - * lock the amap - */ - amap_lock(origref->ar_amap); - - /* * now: amap is locked and we have a valid am_mapped array. */ @@ -881,8 +856,6 @@ amap_splitref(struct vm_aref *origref, struct vm_aref *splitref, vaddr_t offset) splitref->ar_amap = origref->ar_amap; splitref->ar_amap->am_ref++; /* not a share reference */ splitref->ar_pageoff = origref->ar_pageoff + leftslots; - - amap_unlock(origref->ar_amap); } #ifdef UVM_AMAP_PPREF diff --git a/sys/uvm/uvm_amap.h b/sys/uvm/uvm_amap.h index 88e45beb01a..10a619fbd6d 100644 --- a/sys/uvm/uvm_amap.h +++ b/sys/uvm/uvm_amap.h @@ -1,4 +1,4 @@ -/* $OpenBSD: uvm_amap.h,v 1.15 2006/07/13 22:51:26 deraadt Exp $ */ +/* $OpenBSD: uvm_amap.h,v 1.16 2007/05/31 21:20:30 thib Exp $ */ /* $NetBSD: uvm_amap.h,v 1.14 2001/02/18 21:19:08 chs Exp $ */ /* @@ -98,8 +98,6 @@ int amap_flags(struct vm_amap *); void amap_free(struct vm_amap *); /* init amap module (at boot time) */ void amap_init(void); - /* lock amap */ -void amap_lock(struct vm_amap *); AMAP_INLINE /* lookup an anon @ offset in amap */ struct vm_anon *amap_lookup(struct vm_aref *, vaddr_t); AMAP_INLINE /* lookup multiple anons */ @@ -114,8 +112,6 @@ void amap_share_protect(vm_map_entry_t, vm_prot_t); void amap_splitref(struct vm_aref *, struct vm_aref *, vaddr_t); AMAP_INLINE /* remove an anon from an amap */ void amap_unadd(struct vm_aref *, vaddr_t); - /* unlock amap */ -void amap_unlock(struct vm_amap *); AMAP_INLINE /* drop reference to an amap */ void amap_unref(struct vm_amap *, vaddr_t, vsize_t, int); /* remove all anons from amap */ @@ -150,7 +146,6 @@ void amap_wipeout(struct vm_amap *); */ struct vm_amap { - simple_lock_data_t am_l; /* simple lock [locks all vm_amap fields] */ int am_ref; /* reference count */ int am_flags; /* flags */ int am_maxslot; /* max # of slots allocated */ @@ -249,9 +244,7 @@ struct vm_amap { */ #define amap_flags(AMAP) ((AMAP)->am_flags) -#define amap_lock(AMAP) simple_lock(&(AMAP)->am_l) #define amap_refs(AMAP) ((AMAP)->am_ref) -#define amap_unlock(AMAP) simple_unlock(&(AMAP)->am_l) /* * if we enable PPREF, then we have a couple of extra functions that diff --git a/sys/uvm/uvm_amap_i.h b/sys/uvm/uvm_amap_i.h index 39eb1924106..2ed912ab6c0 100644 --- a/sys/uvm/uvm_amap_i.h +++ b/sys/uvm/uvm_amap_i.h @@ -1,4 +1,4 @@ -/* $OpenBSD: uvm_amap_i.h,v 1.16 2006/07/31 11:51:29 mickey Exp $ */ +/* $OpenBSD: uvm_amap_i.h,v 1.17 2007/05/31 21:20:30 thib Exp $ */ /* $NetBSD: uvm_amap_i.h,v 1.15 2000/11/25 06:27:59 chs Exp $ */ /* @@ -207,7 +207,6 @@ amap_ref(amap, offset, len, flags) { UVMHIST_FUNC("amap_ref"); UVMHIST_CALLED(maphist); - amap_lock(amap); amap->am_ref++; if (flags & AMAP_SHARED) amap->am_flags |= AMAP_SHARED; @@ -222,7 +221,6 @@ amap_ref(amap, offset, len, flags) amap_pp_adjref(amap, offset, len, 1); } #endif - amap_unlock(amap); UVMHIST_LOG(maphist,"<- done! amap=%p", amap, 0, 0, 0); } @@ -244,10 +242,6 @@ amap_unref(amap, offset, len, all) { UVMHIST_FUNC("amap_unref"); UVMHIST_CALLED(maphist); - /* - * lock it - */ - amap_lock(amap); UVMHIST_LOG(maphist," amap=%p refs=%ld, nused=%ld", amap, amap->am_ref, amap->am_nused, 0); @@ -278,7 +272,6 @@ amap_unref(amap, offset, len, all) amap_pp_adjref(amap, offset, len, -1); } #endif - amap_unlock(amap); UVMHIST_LOG(maphist,"<- done!", 0, 0, 0, 0); } diff --git a/sys/uvm/uvm_fault.c b/sys/uvm/uvm_fault.c index 9dd6d242862..38a6a08c8b1 100644 --- a/sys/uvm/uvm_fault.c +++ b/sys/uvm/uvm_fault.c @@ -1,4 +1,4 @@ -/* $OpenBSD: uvm_fault.c,v 1.47 2007/04/15 11:15:08 art Exp $ */ +/* $OpenBSD: uvm_fault.c,v 1.48 2007/05/31 21:20:30 thib Exp $ */ /* $NetBSD: uvm_fault.c,v 1.51 2000/08/06 00:22:53 thorpej Exp $ */ /* @@ -416,9 +416,6 @@ uvmfault_anonget(ufi, amap, anon) */ locked = uvmfault_relock(ufi); - if (locked && amap != NULL) { - amap_lock(amap); - } if (locked || we_own) simple_lock(&anon->an_lock); @@ -739,7 +736,6 @@ ReFault: */ if (amap) { - amap_lock(amap); anons = anons_store; amap_lookups(&ufi.entry->aref, startva - ufi.entry->start, anons, npages); @@ -1376,8 +1372,6 @@ Case2: */ locked = uvmfault_relock(&ufi); - if (locked && amap) - amap_lock(amap); simple_lock(&uobj->vmobjlock); /* locked(locked): maps(read), amap(if !null), uobj, uobjpage */ diff --git a/sys/uvm/uvm_fault_i.h b/sys/uvm/uvm_fault_i.h index fc264cd4410..525c1e1c433 100644 --- a/sys/uvm/uvm_fault_i.h +++ b/sys/uvm/uvm_fault_i.h @@ -1,4 +1,4 @@ -/* $OpenBSD: uvm_fault_i.h,v 1.11 2007/04/11 12:10:42 art Exp $ */ +/* $OpenBSD: uvm_fault_i.h,v 1.12 2007/05/31 21:20:30 thib Exp $ */ /* $NetBSD: uvm_fault_i.h,v 1.11 2000/06/26 14:21:17 mrg Exp $ */ /* @@ -90,8 +90,6 @@ uvmfault_unlockall(ufi, amap, uobj, anon) simple_unlock(&anon->an_lock); if (uobj) simple_unlock(&uobj->vmobjlock); - if (amap) - amap_unlock(amap); uvmfault_unlockmaps(ufi, FALSE); } diff --git a/sys/uvm/uvm_loan.c b/sys/uvm/uvm_loan.c index f022cb7ef35..c1859f02da4 100644 --- a/sys/uvm/uvm_loan.c +++ b/sys/uvm/uvm_loan.c @@ -1,4 +1,4 @@ -/* $OpenBSD: uvm_loan.c,v 1.26 2007/04/13 18:57:49 art Exp $ */ +/* $OpenBSD: uvm_loan.c,v 1.27 2007/05/31 21:20:30 thib Exp $ */ /* $NetBSD: uvm_loan.c,v 1.22 2000/06/27 17:29:25 mrg Exp $ */ /* @@ -142,8 +142,6 @@ uvm_loanentry(ufi, output, flags) /* * lock us the rest of the way down */ - if (aref->ar_amap) - amap_lock(aref->ar_amap); if (uobj) simple_lock(&uobj->vmobjlock); @@ -475,8 +473,6 @@ uvm_loanuobj(ufi, output, flags, va) */ locked = uvmfault_relock(ufi); - if (locked && amap) - amap_lock(amap); simple_lock(&uobj->vmobjlock); /* @@ -629,8 +625,6 @@ uvm_loanzero(ufi, output, flags) uvm_wait("loanzero1"); if (!uvmfault_relock(ufi)) return(0); - if (ufi->entry->aref.ar_amap) - amap_lock(ufi->entry->aref.ar_amap); if (ufi->entry->object.uvm_obj) simple_lock( &ufi->entry->object.uvm_obj->vmobjlock); @@ -670,8 +664,6 @@ uvm_loanzero(ufi, output, flags) return (0); /* relock everything else */ - if (ufi->entry->aref.ar_amap) - amap_lock(ufi->entry->aref.ar_amap); if (ufi->entry->object.uvm_obj) simple_lock(&ufi->entry->object.uvm_obj->vmobjlock); /* ... and try again */ diff --git a/sys/uvm/uvm_map.c b/sys/uvm/uvm_map.c index 0f4c73b8750..17101f593e2 100644 --- a/sys/uvm/uvm_map.c +++ b/sys/uvm/uvm_map.c @@ -1,4 +1,4 @@ -/* $OpenBSD: uvm_map.c,v 1.92 2007/04/27 18:01:49 art Exp $ */ +/* $OpenBSD: uvm_map.c,v 1.93 2007/05/31 21:20:30 thib Exp $ */ /* $NetBSD: uvm_map.c,v 1.86 2000/11/27 08:40:03 chs Exp $ */ /* @@ -2919,7 +2919,6 @@ uvm_map_clean(struct vm_map *map, vaddr_t start, vaddr_t end, int flags) if (amap_clean_works == 0) goto flush_object; - amap_lock(amap); offset = start - current->start; size = MIN(end, current->end) - start; for ( ; size != 0; size -= PAGE_SIZE, offset += PAGE_SIZE) { @@ -3012,9 +3011,8 @@ uvm_map_clean(struct vm_map *map, vaddr_t start, vaddr_t end, int flags) panic("uvm_map_clean: weird flags"); } } - amap_unlock(amap); - flush_object: +flush_object: /* * flush pages if we've got a valid backing object. * diff --git a/sys/uvm/uvm_mmap.c b/sys/uvm/uvm_mmap.c index 294a4c0beef..7a8982a9f7d 100644 --- a/sys/uvm/uvm_mmap.c +++ b/sys/uvm/uvm_mmap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: uvm_mmap.c,v 1.67 2007/03/27 16:13:46 art Exp $ */ +/* $OpenBSD: uvm_mmap.c,v 1.68 2007/05/31 21:20:30 thib Exp $ */ /* $NetBSD: uvm_mmap.c,v 1.49 2001/02/18 21:19:08 chs Exp $ */ /* @@ -321,8 +321,6 @@ sys_mincore(p, v, retval) amap = entry->aref.ar_amap; /* top layer */ uobj = entry->object.uvm_obj; /* bottom layer */ - if (amap != NULL) - amap_lock(amap); if (uobj != NULL) simple_lock(&uobj->vmobjlock); @@ -360,8 +358,6 @@ sys_mincore(p, v, retval) if (uobj != NULL) simple_unlock(&uobj->vmobjlock); - if (amap != NULL) - amap_unlock(amap); } out: |