This series adds restricted mmap() support to guest_memfd, as well as support for guest_memfd on arm64. Please see v3 for the context [1]. Main changes since v5 [2]: - Freeze folio refcounts when checking them to avoid races (Kirill, Vlastimili, Ackerley) - Handle invalidation (e.g., on truncation) of potentially shared memory (Ackerley) - Rebased on the `KVM: Mapping guest_memfd backed memory at the host for software protected VMs` series [3], which entails renaming of MAPPABLE to SHAREABLE and a rebase on Linux 6.14-rc7. The state diagram that uses the new states in this patch series, and how they would interact with sharing/unsharing in pKVM [4]. Cheers, /fuad [1] https://lore.kernel.org/all/20241010085930.1546800-1-tabba@xxxxxxxxxx/ [2] https://lore.kernel.org/all/20250117163001.2326672-1-tabba@xxxxxxxxxx/ [3] https://lore.kernel.org/all/20250318161823.4005529-1-tabba@xxxxxxxxxx/ [4] https://lpc.events/event/18/contributions/1758/attachments/1457/3699/Guestmemfd%20folio%20state%20page_type.pdf Ackerley Tng (2): KVM: guest_memfd: Make guest mem use guest mem inodes instead of anonymous inodes KVM: guest_memfd: Track folio sharing within a struct kvm_gmem_private Fuad Tabba (5): KVM: guest_memfd: Introduce kvm_gmem_get_pfn_locked(), which retains the folio lock KVM: guest_memfd: Folio sharing states and functions that manage their transition KVM: guest_memfd: Restore folio state after final folio_put() KVM: guest_memfd: Handle invalidation of shared memory KVM: guest_memfd: Add a guest_memfd() flag to initialize it as shared Documentation/virt/kvm/api.rst | 4 + include/linux/kvm_host.h | 56 +- include/uapi/linux/kvm.h | 1 + include/uapi/linux/magic.h | 1 + .../testing/selftests/kvm/guest_memfd_test.c | 7 +- virt/kvm/guest_memfd.c | 589 ++++++++++++++++-- virt/kvm/kvm_main.c | 62 ++ 7 files changed, 682 insertions(+), 38 deletions(-) base-commit: 1ea0414b447c8c96e6a6f6f953323c3df71b85a6 -- 2.49.0.rc1.451.g8f38331e32-goog