Main changes since v3 [1]: - Dropped the arm64 sw protected vm type. Instead, non-confidential arm64 VM types support guest_memfd with sharing in place when the configuration option is enabled. Future VM types can restrict that. - Expand the guest_memfd host fault error return values to cover more cases. - Fixes to faulting in guest_memfd pages in arm64. - Rebased on Linux 6.14-rc3. The purpose of this series is to serve as a base for _restricted_ mmap() support for guest_memfd backed memory at the host [2]. It allows experimentation with what that support would be like in the safe environment of software and non-confidential VM types. For more background and for how to test this series, please refer to v2 [3]. Note that an updated version of kvmtool that works with this series is available here [4]. Cheers, /fuad [1] https://lore.kernel.org/all/20250211121128.703390-1-tabba@xxxxxxxxxx/ [2] https://lore.kernel.org/all/20250117163001.2326672-1-tabba@xxxxxxxxxx/ [3] https://lore.kernel.org/all/20250129172320.950523-1-tabba@xxxxxxxxxx/ [4] https://android-kvm.googlesource.com/kvmtool/+/refs/heads/tabba/guestmem-6.14 Fuad Tabba (10): mm: Consolidate freeing of typed folios on final folio_put() KVM: guest_memfd: Handle final folio_put() of guest_memfd pages KVM: guest_memfd: Allow host to map guest_memfd() pages KVM: guest_memfd: Add KVM capability to check if guest_memfd is shared KVM: guest_memfd: Handle in-place shared memory as guest_memfd backed memory KVM: x86: Mark KVM_X86_SW_PROTECTED_VM as supporting guest_memfd shared memory KVM: arm64: Refactor user_mem_abort() calculation of force_pte KVM: arm64: Handle guest_memfd()-backed guest page faults KVM: arm64: Enable mapping guest_memfd in arm64 KVM: guest_memfd: selftests: guest_memfd mmap() test when mapping is allowed arch/arm64/include/asm/kvm_host.h | 10 ++ arch/arm64/kvm/Kconfig | 1 + arch/arm64/kvm/mmu.c | 83 ++++++++----- arch/x86/include/asm/kvm_host.h | 5 + arch/x86/kvm/Kconfig | 3 +- include/linux/kvm_host.h | 23 +++- include/linux/page-flags.h | 32 +++++ include/uapi/linux/kvm.h | 1 + mm/debug.c | 1 + mm/swap.c | 32 ++++- tools/testing/selftests/kvm/Makefile.kvm | 1 + .../testing/selftests/kvm/guest_memfd_test.c | 75 +++++++++++- virt/kvm/Kconfig | 5 + virt/kvm/guest_memfd.c | 110 ++++++++++++++++++ virt/kvm/kvm_main.c | 9 +- 15 files changed, 345 insertions(+), 46 deletions(-) base-commit: 0ad2507d5d93f39619fc42372c347d6006b64319 -- 2.48.1.601.g30ceb7b040-goog