In x86 pmap_extract_and_hold(), there is no need to recalculate the

physical address, which is readily available after sucessfull
vm_page_pa_tryrelock().

Noted and reviewed by:	alc
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D16085
This commit is contained in:
Konstantin Belousov 2018-07-05 16:38:54 +00:00
parent 39d44f7f15
commit c59dfa63bf
2 changed files with 4 additions and 6 deletions

View file

@ -2308,7 +2308,6 @@ retry:
PG_PS_FRAME) | (va & PDRMASK), &pa))
goto retry;
m = PHYS_TO_VM_PAGE(pa);
vm_page_hold(m);
}
} else {
pte = *pmap_pde_to_pte(pdep, va);
@ -2318,10 +2317,10 @@ retry:
&pa))
goto retry;
m = PHYS_TO_VM_PAGE(pa);
if (m != NULL)
vm_page_hold(m);
}
}
if (m != NULL)
vm_page_hold(m);
}
PA_UNLOCK_COND(pa);
PMAP_UNLOCK(pmap);

View file

@ -1673,7 +1673,6 @@ retry:
PG_PS_FRAME) | (va & PDRMASK), &pa))
goto retry;
m = PHYS_TO_VM_PAGE(pa);
vm_page_hold(m);
}
} else {
pte = pmap_pte_ufast(pmap, va, pde);
@ -1683,10 +1682,10 @@ retry:
&pa))
goto retry;
m = PHYS_TO_VM_PAGE(pa);
if (m != NULL)
vm_page_hold(m);
}
}
if (m != NULL)
vm_page_hold(m);
}
PA_UNLOCK_COND(pa);
PMAP_UNLOCK(pmap);