svn commit: r278882 - user/nwhitehorn/ppc64-pmap-rework/pseries

Nathan Whitehorn nwhitehorn at FreeBSD.org
Tue Feb 17 05:36:17 UTC 2015


Author: nwhitehorn
Date: Tue Feb 17 05:36:16 2015
New Revision: 278882
URL: https://svnweb.freebsd.org/changeset/base/278882

Log:
  Enable use of H_PROTECT.
  
  This branch currently uses half the system time (and 65% the wall time) of
  HEAD to complete a make -j32 buildworld.

Modified:
  user/nwhitehorn/ppc64-pmap-rework/pseries/mmu_phyp.c

Modified: user/nwhitehorn/ppc64-pmap-rework/pseries/mmu_phyp.c
==============================================================================
--- user/nwhitehorn/ppc64-pmap-rework/pseries/mmu_phyp.c	Tue Feb 17 05:10:41 2015	(r278881)
+++ user/nwhitehorn/ppc64-pmap-rework/pseries/mmu_phyp.c	Tue Feb 17 05:36:16 2015	(r278882)
@@ -289,27 +289,27 @@ mphyp_pte_unset(mmu_t mmu, struct pvo_en
 static void
 mphyp_pte_replace(mmu_t mmu, struct pvo_entry *pvo, int flags)
 {
-	struct lpte evicted;
+	struct lpte pte;
 	int64_t result;
 
 	PMAP_LOCK_ASSERT(pvo->pvo_pmap, MA_OWNED);
 
-	if (0 && flags == MOEA64_PTE_PROT_UPDATE) {
-		moea64_pte_from_pvo(pvo, &evicted);
+	if (flags == MOEA64_PTE_PROT_UPDATE) {
+		moea64_pte_from_pvo(pvo, &pte);
 
 		result = phyp_hcall(H_PROTECT,
-		    H_AVPN | (pvo->pvo_pte.pa & LPTE_PP), pvo->pvo_pte.slot,
-		    evicted.pte_hi & LPTE_AVPN_MASK);
+		    H_AVPN | (pte.pte_lo & (LPTE_PP | LPTE_NOEXEC)),
+		    pvo->pvo_pte.slot, pte.pte_hi & LPTE_AVPN_MASK);
 		if (result == H_NOT_FOUND)
 			return;
 		KASSERT(result == H_SUCCESS || result == H_NOT_FOUND,
 		    ("Error changing page protection: %d", (int)result));
 
-		/* Mark RC changes */
-		result = mphyp_pte_clear(mmu, pvo, LPTE_REF | LPTE_CHG);
+		/* Mark C changes (R zeroed by H_PROTECT) */
+		result = mphyp_pte_clear(mmu, pvo, LPTE_CHG);
 		if (result > 0)
 			moea64_sync_refchg(pvo->pvo_pte.pa |
-			    (result & (LPTE_REF | LPTE_CHG)));
+			    (result & LPTE_CHG));
 		return;
 	}
 


More information about the svn-src-user mailing list