Changes since v2 [1]: - Added more documentation - Hook the folio_put callback as a stub with a warning - Tidying up and refactoring - Rebased on Linux 6.14-rc2 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 would allow experimentation with what that support would be like in the safe environment of the software VM types, which are meant for testing and experimentation. For more background and how to test this series, please refer to v2 [1]. Cheers, /fuad [1] https://lore.kernel.org/all/20250129172320.950523-1-tabba@xxxxxxxxxx/ [2] https://lore.kernel.org/all/20250117163001.2326672-1-tabba@xxxxxxxxxx/ Fuad Tabba (11): 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: Introduce KVM_VM_TYPE_ARM_SW_PROTECTED machine type KVM: arm64: Enable mapping guest_memfd in arm64 KVM: guest_memfd: selftests: guest_memfd mmap() test when mapping is allowed Documentation/virt/kvm/api.rst | 5 + arch/arm64/include/asm/kvm_host.h | 10 ++ arch/arm64/kvm/Kconfig | 1 + arch/arm64/kvm/arm.c | 5 + arch/arm64/kvm/mmu.c | 91 ++++++++++------ arch/x86/include/asm/kvm_host.h | 5 + arch/x86/kvm/Kconfig | 3 +- include/linux/kvm_host.h | 28 ++++- include/linux/page-flags.h | 32 ++++++ include/uapi/linux/kvm.h | 7 ++ mm/debug.c | 1 + mm/swap.c | 32 +++++- tools/testing/selftests/kvm/Makefile.kvm | 1 + .../testing/selftests/kvm/guest_memfd_test.c | 75 +++++++++++-- tools/testing/selftests/kvm/lib/kvm_util.c | 3 +- virt/kvm/Kconfig | 4 + virt/kvm/guest_memfd.c | 100 ++++++++++++++++++ virt/kvm/kvm_main.c | 9 +- 18 files changed, 360 insertions(+), 52 deletions(-) base-commit: a64dcfb451e254085a7daee5fe51bf22959d52d3 -- 2.48.1.502.g6dc24dfdaf-goog