HomeFreeBSD

arm64: Implement final level only TLB invalidations

Description

arm64: Implement final level only TLB invalidations

A feature of arm64's instruction for TLB invalidation is the ability
to determine whether cached intermediate entries, i.e., L{0,1,2}_TABLE
entries, are invalidated in addition to the final entry, e.g., an
L3_PAGE entry.

Update pmap_invalidate_{page,range}() to support both types of
invalidation, allowing the caller to determine which type of
invalidation is performed.

Update the callers to request the appropriate type of invalidation.

Eliminate redundant TLB invalidations in pmap_abort_ptp() and
pmap_remove_l3_range().

Add a comment to pmap_invalidate_all() making clear that it always
invalidates entries at all levels.

As expected, these changes result in a tiny yet measurable
performance improvement.

Reviewed by: kib, markj
MFC after: 3 weeks
Differential Revision: https://reviews.freebsd.org/D33705

Details

Provenance
alcAuthored on Dec 29 2021, 7:50 AM
Reviewer
kib
Differential Revision
D33705: arm64: Eliminate unnecessary "page walk cache" invalidations
Parents
rGafad340a14f8: inpcb: garbage collect INP_LOCK_INIT(), used only once in sctp
Branches
Unknown
Tags
Unknown