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