HomeFreeBSD

amd64: Add a leaf PTP when pmap_enter(psind=1) creates a wired mapping

Description

amd64: Add a leaf PTP when pmap_enter(psind=1) creates a wired mapping

This patch reverts the changes made in D19670 and fixes the original
issue by allocating and prepopulating a leaf page table page for wired
userspace 2M pages.

The original issue is an edge case that creates an unmapped, wired
region in userspace. Subsequent faults on this region can trigger wired
superpage creation, which leads to a panic in pmap_demote_pde_locked()
as the pmap does not create a leaf page table page for the wired
superpage. D19670 fixed this by disallowing preemptive creation of
wired superpage mappings, but that fix is currently interfering with an
ongoing effort of speeding up vm_map_wire for large, contiguous entries
(e.g. bhyve wiring guest memory).

Reviewed by: alc, markj
Sponsored by: Google, Inc. (GSoC 2023)
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D41132

(cherry picked from commit aa3bcaad51076ceb346fa0c64ab69a35e5241b20)

Details

Provenance
bnovkovAuthored on Sep 15 2023, 10:41 AM
markjCommitted on Oct 2 2023, 12:55 PM
Reviewer
alc
Differential Revision
D41132: amd64 pmap: allocate leaf page table page for wired userspace 2M pages
Parents
rG3ab984bbe014: pf: only create sctp multihome states if we pass the packet
Branches
Unknown
Tags
Unknown