This is the hopefully final version of the gmem common API patches, adding target-independent functionality and hooks that are needed by SEV-SNP and TDX. Changes from https://patchew.org/linux/20240404185034.3184582-1-pbonzini@xxxxxxxxxx/: - added acks and comments from Vlastimil to patches 1-2 - dropped FGP_CREAT_ONLY, which also means removing kvm_gmem_undo_get_pfn() in the last patch - filemap_grab_folio() cannot return NULL - dropped weak implementation of kvm_arch_gmem_prepare_needed() - dropped __kvm_gmem_punch_hole() - introduced kvm_gmem_populate_cb typedef - renamed argument of kvm_gmem_populate from gfn to start_gfn, variable from this_gfn to gfn - post_populate hook is mandatory - replaced implementation of "KVM: x86: Add hook for determining max NPT mapping level" with suggestion from SNP series Contrarily to my answer to Yilun, prepare does not need to test hwpoison. It's kvm_gmem_populate() that needs it, and in fact it already does via __kvm_gmem_get_pfn(). Paolo Michael Roth (4): mm: Introduce AS_INACCESSIBLE for encrypted/confidential memory KVM: guest_memfd: Use AS_INACCESSIBLE when creating guest_memfd inode KVM: guest_memfd: Add hook for invalidating memory KVM: x86: Add hook for determining max NPT mapping level Paolo Bonzini (5): KVM: guest_memfd: pass error up from filemap_grab_folio KVM: guest_memfd: limit overzealous WARN KVM: guest_memfd: Add hook for initializing memory KVM: guest_memfd: extract __kvm_gmem_get_pfn() KVM: guest_memfd: Add interface for populating gmem pages with user data arch/x86/include/asm/kvm-x86-ops.h | 3 + arch/x86/include/asm/kvm_host.h | 3 + arch/x86/kvm/mmu/mmu.c | 23 +++- arch/x86/kvm/x86.c | 13 +++ include/linux/kvm_host.h | 36 +++++++ include/linux/pagemap.h | 1 + mm/truncate.c | 3 +- virt/kvm/Kconfig | 8 ++ virt/kvm/guest_memfd.c | 167 +++++++++++++++++++++++++---- 9 files changed, 231 insertions(+), 26 deletions(-) -- 2.43.0