HomeFreeBSD

In short, pmap_enter_quick_locked("user space", ..., VM_PROT_READ) doesn't

Description

In short, pmap_enter_quick_locked("user space", ..., VM_PROT_READ) doesn't
work. More precisely, it doesn't set ATTR_AP(ATTR_AP_USER) in the page
table entry, so any attempt to read from the mapped page by user space
generates a page fault. This problem has gone unnoticed because the page
fault handler, vm_fault(), will ultimately call pmap_enter(), which
replaces the non-working page table entry with one that has
ATTR_AP(ATTR_AP_USER) set.

This change reduces the number of page faults during a "buildworld" by
about 19.4%.

Reviewed by: andrew, markj
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D21841

Details

Provenance
alcAuthored on
Reviewer
andrew
Differential Revision
D21841: Fix arm64's pmap_enter_quick_locked()
Parents
rS352929: Add a top-level makeman target
Branches
Unknown
Tags
Unknown