Update pagesizes[] to include the ATTR_CONTIGUOUS L3C page size, which is 64KB when the base page size is 4KB and 2MB when the base page size is 16KB.
Add support for L3C pages to shm_create_largepage().
Add support for creating L3C page mappings to pmap_enter(psind=1).
Add support for reporting L3C page mappings to mincore(2) and procstat(8), for example,
978 0x7b0b27200000 0x7b0b27398000 r-- 280 768 26 10 CNS-- vn /lib/libcrypto.so.30 978 0x7b0b27398000 0x7b0b273a8000 --- 0 0 0 0 CN--- gd 978 0x7b0b273a8000 0x7b0b275b2000 r-x 386 768 26 10 CNS-- vn /lib/libcrypto.so.30 978 0x7b0b275b2000 0x7b0b275c1000 --- 0 0 0 0 CN--- gd 978 0x7b0b275c1000 0x7b0b27613000 r-- 82 0 2 0 CN--- vn /lib/libcrypto.so.30 978 0x7b0b27613000 0x7b0b27622000 --- 0 0 0 0 CN--- gd 978 0x7b0b27622000 0x7b0b2762a000 rw- 8 0 2 1 CN--- vn /lib/libcrypto.so.30 978 0x7b0b2762a000 0x7b0b2762c000 rw- 2 2 2 0 CN--- sw
Update vm_fault_soft_fast() and vm_fault_populate() to handle multiple superpage sizes. Consequently, some L3C promotions are converted to L3C mappings created by pmap_enter(psind=1).
Declare arm64 as supporting two superpage reservation sizes, and simulate two superpage reservation sizes, updating the vm page's psind field. (The next patch will replace this simulation. This patch is already big enough.)
Co-authored-by: Eliot Solomon <ehs3@rice.edu>