diff options
| author | John Dyson <dyson@FreeBSD.org> | 1998-03-01 04:18:54 +0000 |
|---|---|---|
| committer | John Dyson <dyson@FreeBSD.org> | 1998-03-01 04:18:54 +0000 |
| commit | ffc82b0a70cb3a4952d29251c5685bacefbf1424 (patch) | |
| tree | bfd278429bcf24024c11fc82e9965dd546551a6a /sys/amd64 | |
| parent | 1ee98f088514d7c5e9f0f41cdb25458d48b3f660 (diff) | |
Notes
Diffstat (limited to 'sys/amd64')
| -rw-r--r-- | sys/amd64/amd64/mp_machdep.c | 4 | ||||
| -rw-r--r-- | sys/amd64/amd64/mptable.c | 4 | ||||
| -rw-r--r-- | sys/amd64/amd64/pmap.c | 44 | ||||
| -rw-r--r-- | sys/amd64/include/mptable.h | 4 |
4 files changed, 17 insertions, 39 deletions
diff --git a/sys/amd64/amd64/mp_machdep.c b/sys/amd64/amd64/mp_machdep.c index 0b5a16262d8b..d532becb7b1a 100644 --- a/sys/amd64/amd64/mp_machdep.c +++ b/sys/amd64/amd64/mp_machdep.c @@ -22,7 +22,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: mp_machdep.c,v 1.64 1997/12/15 02:18:20 tegge Exp $ + * $Id: mp_machdep.c,v 1.65 1998/02/09 06:08:13 eivind Exp $ */ #include "opt_smp.h" @@ -1991,7 +1991,7 @@ int invltlb_ok = 0; /* throttle smp_invltlb() till safe */ SYSCTL_INT(_machdep, OID_AUTO, invltlb_ok, CTLFLAG_RW, &invltlb_ok, 0, ""); /* Warning: Do not staticize. Used from swtch.s */ -int do_page_zero_idle = 0; /* bzero pages for fun and profit in idleloop */ +int do_page_zero_idle = 1; /* bzero pages for fun and profit in idleloop */ SYSCTL_INT(_machdep, OID_AUTO, do_page_zero_idle, CTLFLAG_RW, &do_page_zero_idle, 0, ""); diff --git a/sys/amd64/amd64/mptable.c b/sys/amd64/amd64/mptable.c index 0b5a16262d8b..d532becb7b1a 100644 --- a/sys/amd64/amd64/mptable.c +++ b/sys/amd64/amd64/mptable.c @@ -22,7 +22,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: mp_machdep.c,v 1.64 1997/12/15 02:18:20 tegge Exp $ + * $Id: mp_machdep.c,v 1.65 1998/02/09 06:08:13 eivind Exp $ */ #include "opt_smp.h" @@ -1991,7 +1991,7 @@ int invltlb_ok = 0; /* throttle smp_invltlb() till safe */ SYSCTL_INT(_machdep, OID_AUTO, invltlb_ok, CTLFLAG_RW, &invltlb_ok, 0, ""); /* Warning: Do not staticize. Used from swtch.s */ -int do_page_zero_idle = 0; /* bzero pages for fun and profit in idleloop */ +int do_page_zero_idle = 1; /* bzero pages for fun and profit in idleloop */ SYSCTL_INT(_machdep, OID_AUTO, do_page_zero_idle, CTLFLAG_RW, &do_page_zero_idle, 0, ""); diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index 7efe94da8d13..7ad037f15ad8 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -39,7 +39,7 @@ * SUCH DAMAGE. * * from: @(#)pmap.c 7.7 (Berkeley) 5/12/91 - * $Id: pmap.c,v 1.185 1998/02/10 17:30:26 eivind Exp $ + * $Id: pmap.c,v 1.186 1998/02/12 22:00:01 bde Exp $ */ /* @@ -824,14 +824,8 @@ pmap_page_lookup(object, pindex) vm_page_t m; retry: m = vm_page_lookup(object, pindex); - if (m) { - if (m->flags & PG_BUSY) { - m->flags |= PG_WANTED; - tsleep(m, PVM, "pplookp", 0); - goto retry; - } - } - + if (m && vm_page_sleep(m, "pplookp", NULL)) + goto retry; return m; } @@ -1012,14 +1006,7 @@ static int _pmap_unwire_pte_hold(pmap_t pmap, vm_page_t m) { int s; - if (m->flags & PG_BUSY) { - s = splvm(); - while (m->flags & PG_BUSY) { - m->flags |= PG_WANTED; - tsleep(m, PVM, "pmuwpt", 0); - } - splx(s); - } + while (vm_page_sleep(m, "pmuwpt", NULL)); if (m->hold_count == 0) { vm_offset_t pteva; @@ -1155,7 +1142,7 @@ retry: ptdpg->wire_count = 1; ++cnt.v_wire_count; - ptdpg->flags &= ~(PG_MAPPED|PG_BUSY); /* not mapped normally */ + ptdpg->flags &= ~(PG_MAPPED | PG_BUSY); /* not mapped normally */ ptdpg->valid = VM_PAGE_BITS_ALL; pmap_kenter((vm_offset_t) pmap->pm_pdir, VM_PAGE_TO_PHYS(ptdpg)); @@ -1189,16 +1176,10 @@ pmap_release_free_page(pmap, p) * page-table pages. Those pages are zero now, and * might as well be placed directly into the zero queue. */ - s = splvm(); - if (p->flags & PG_BUSY) { - p->flags |= PG_WANTED; - tsleep(p, PVM, "pmaprl", 0); - splx(s); + if (vm_page_sleep(p, "pmaprl", NULL)) return 0; - } p->flags |= PG_BUSY; - splx(s); /* * Remove the page table page from the processes address space. @@ -1296,7 +1277,7 @@ _pmap_allocpte(pmap, ptepindex) } m->valid = VM_PAGE_BITS_ALL; - m->flags &= ~(PG_ZERO|PG_BUSY); + m->flags &= ~(PG_ZERO | PG_BUSY); m->flags |= PG_MAPPED; return m; @@ -1564,7 +1545,8 @@ pmap_collect() { m = ppv->pv_vm_page; if ((pa = VM_PAGE_TO_PHYS(m)) == 0) continue; - if (m->wire_count || m->hold_count || m->busy || (m->flags & PG_BUSY)) + if (m->wire_count || m->hold_count || m->busy || + (m->flags & PG_BUSY)) continue; pmap_remove_all(pa); } @@ -2329,15 +2311,11 @@ pmap_object_init_pt(pmap, addr, object, pindex, size, limit) if (pmap->pm_pdir[ptepindex = (addr >> PDRSHIFT)]) return; - s = splhigh(); retry: p = vm_page_lookup(object, pindex); - if (p && (p->flags & PG_BUSY)) { - tsleep(p, PVM, "init4p", 0); + if (p && vm_page_sleep(p, "init4p", NULL)) goto retry; - } - splx(s); - + if (p == NULL) { p = vm_page_alloc(object, pindex, VM_ALLOC_NORMAL); if (p == NULL) diff --git a/sys/amd64/include/mptable.h b/sys/amd64/include/mptable.h index 0b5a16262d8b..d532becb7b1a 100644 --- a/sys/amd64/include/mptable.h +++ b/sys/amd64/include/mptable.h @@ -22,7 +22,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: mp_machdep.c,v 1.64 1997/12/15 02:18:20 tegge Exp $ + * $Id: mp_machdep.c,v 1.65 1998/02/09 06:08:13 eivind Exp $ */ #include "opt_smp.h" @@ -1991,7 +1991,7 @@ int invltlb_ok = 0; /* throttle smp_invltlb() till safe */ SYSCTL_INT(_machdep, OID_AUTO, invltlb_ok, CTLFLAG_RW, &invltlb_ok, 0, ""); /* Warning: Do not staticize. Used from swtch.s */ -int do_page_zero_idle = 0; /* bzero pages for fun and profit in idleloop */ +int do_page_zero_idle = 1; /* bzero pages for fun and profit in idleloop */ SYSCTL_INT(_machdep, OID_AUTO, do_page_zero_idle, CTLFLAG_RW, &do_page_zero_idle, 0, ""); |
