Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 Apr 2010 22:42:19 +0000 (UTC)
From:      Kip Macy <kmacy@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r207398 - user/kmacy/head_page_lock_incr/sys/ia64/ia64
Message-ID:  <201004292242.o3TMgJeV080532@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201004292242.o3TMgJeV080532>