Undo revision 1.251. This change was a performance pessimizing work-around
that is no longer required. (In fact, it is not clear that it was ever required in HEAD or RELENG_4, only RELENG_3 required a work-around.) Now, as before revision 1.251, if the preexisting PTE is invalid, pmap_enter() does not call pmap_invalidate_page() to update the TLB(s). Note: Even with this change, the handling of a copy-on-write fault is inefficient, in such cases pmap_enter() calls pmap_invalidate_page() twice. Discussed with: bde@ PR: kern/16568
This commit is contained in:
parent
a9b5dc7d6d
commit
caa665aae3
@ -1978,7 +1978,7 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot,
|
||||
*/
|
||||
if ((origpte & ~(PG_M|PG_A)) != newpte) {
|
||||
pte_store(pte, newpte | PG_A);
|
||||
/*if (origpte)*/ {
|
||||
if (origpte) {
|
||||
pmap_invalidate_page(pmap, va);
|
||||
}
|
||||
}
|
||||
|
@ -2041,7 +2041,7 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot,
|
||||
*/
|
||||
if ((origpte & ~(PG_M|PG_A)) != newpte) {
|
||||
pte_store(pte, newpte | PG_A);
|
||||
/*if (origpte)*/ {
|
||||
if (origpte) {
|
||||
pmap_invalidate_page(pmap, va);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user