svn commit: r207398 - user/kmacy/head_page_lock_incr/sys/ia64/ia64
Kip Macy
kmacy at FreeBSD.org
Thu Apr 29 22:42:19 UTC 2010
Author: kmacy
Date: Thu Apr 29 22:42:18 2010
New Revision: 207398
URL: http://svn.freebsd.org/changeset/base/207398
Log:
add page lock hold support to ia64
Modified:
user/kmacy/head_page_lock_incr/sys/ia64/ia64/pmap.c
Modified: user/kmacy/head_page_lock_incr/sys/ia64/ia64/pmap.c
==============================================================================
--- user/kmacy/head_page_lock_incr/sys/ia64/ia64/pmap.c Thu Apr 29 22:40:12 2010 (r207397)
+++ user/kmacy/head_page_lock_incr/sys/ia64/ia64/pmap.c Thu Apr 29 22:42:18 2010 (r207398)
@@ -1028,18 +1028,22 @@ pmap_extract_and_hold(pmap_t pmap, vm_of
struct ia64_lpte *pte;
pmap_t oldpmap;
vm_page_t m;
+ vm_paddr_t pa;
+ pa = 0;
m = NULL;
- vm_page_lock_queues();
PMAP_LOCK(pmap);
oldpmap = pmap_switch(pmap);
+retry:
pte = pmap_find_vhpt(va);
if (pte != NULL && pmap_present(pte) &&
(pmap_prot(pte) & prot) == prot) {
m = PHYS_TO_VM_PAGE(pmap_ppn(pte));
+ if (vm_page_pa_tryrelock(pmap, pmap_ppn(pte), &pa))
+ goto retry;
vm_page_hold(m);
}
- vm_page_unlock_queues();
+ PA_UNLOCK_COND(pa);
pmap_switch(oldpmap);
PMAP_UNLOCK(pmap);
return (m);
More information about the svn-src-user
mailing list