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