summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorthib <thib@openbsd.org>2007-05-31 21:20:30 +0000
committerthib <thib@openbsd.org>2007-05-31 21:20:30 +0000
commit86edf6e682e96dcc141453fe06d51e8b4619d744 (patch)
tree27dc2faf7a68316b26c5109d5cb72bd06dc99d45
parentOnly process ENV when in interactive mode as SU says. Started by (diff)
downloadwireguard-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.c29
-rw-r--r--sys/uvm/uvm_amap.h9
-rw-r--r--sys/uvm/uvm_amap_i.h9
-rw-r--r--sys/uvm/uvm_fault.c8
-rw-r--r--sys/uvm/uvm_fault_i.h4
-rw-r--r--sys/uvm/uvm_loan.c10
-rw-r--r--sys/uvm/uvm_map.c6
-rw-r--r--sys/uvm/uvm_mmap.c6
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: