HomeFreeBSD

arm64 pmap: Add ATTR_CONTIGUOUS support [Part 1]

Description

arm64 pmap: Add ATTR_CONTIGUOUS support [Part 1]

The ATTR_CONTIGUOUS bit within an L3 page table entry designates that
L3 page as being part of an aligned, physically contiguous collection
of L3 pages. For example, 16 aligned, physically contiguous 4 KB pages
can form a 64 KB superpage, occupying a single TLB entry. While this
change only creates ATTR_CONTIGUOUS mappings in a few places,
specifically, the direct map and pmap_kenter{,_device}(), it adds all
of the necessary code for handling them once they exist, including
demotion, protection, and removal. Consequently, new ATTR_CONTIGUOUS
usage can be added (and tested) incrementally.

Modify the implementation of sysctl vm.pmap.kernel_maps so that it
correctly reports the number of ATTR_CONTIGUOUS mappings on machines
configured to use a 16 KB base page size, where an ATTR_CONTIGUOUS
mapping consists of 128 base pages.

Additionally, this change adds support for creating L2 superpage
mappings to pmap_kenter{,_device}().

Reviewed by: markj
Tested by: gallatin
Differential Revision: https://reviews.freebsd.org/D42737

Details

Provenance
ehs3_rice.eduAuthored on Mar 24 2024, 7:01 PM
alcCommitted on Mar 30 2024, 6:37 PM
Reviewer
markj
Differential Revision
D42737: arm64 pmap: Add ATTR_CONTIGUOUS support [Part 1]
Parents
rG9241ebc796c1: thread_single(9): decline external requests for traced or debugger-stopped procs
Branches
Unknown
Tags
Unknown