Re: [PATCH v14 13/22] KVM: selftests: Support guest_memfd in-place conversion
From: Xiaoyao Li
Date: Tue Aug 18 2026 - 04:19:17 EST
On 7/23/2026 7:13 AM, Lisa Wang wrote:
diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c
index 4a48c4b42095..e547ea341ff7 100644
--- a/tools/testing/selftests/kvm/lib/kvm_util.c
+++ b/tools/testing/selftests/kvm/lib/kvm_util.c
@@ -484,8 +484,10 @@ struct kvm_vm *__vm_create(struct vm_shape shape, u32 nr_runnable_vcpus,
u64 nr_pages = vm_nr_pages_required(shape.mode, nr_runnable_vcpus,
nr_extra_pages);
struct userspace_mem_region *slot0;
+ u64 gmem_flags = 0;
struct kvm_vm *vm;
- int i, flags;
+ int flags = 0;
+ int i;
kvm_set_files_rlimit(nr_runnable_vcpus);
@@ -495,14 +497,20 @@ struct kvm_vm *__vm_create(struct vm_shape shape, u32 nr_runnable_vcpus,
vm = ____vm_create(shape);
/*
- * Force GUEST_MEMFD for the primary memory region if necessary, e.g.
- * for CoCo VMs that require GUEST_MEMFD backed private memory.
+ * Force GUEST_MEMFD for the primary memory region if necessary, and
+ * initialize it as shared if in-place conversion is support, so the
+ * selftest framework can populate it exactly like other memory
+ * providers.
*/
- flags = 0;
- if (is_guest_memfd_required(shape))
+ if (is_guest_memfd_required(shape)) {
flags |= KVM_MEM_GUEST_MEMFD;
+ if (kvm_has_gmem_attributes)
+ gmem_flags |= GUEST_MEMFD_FLAG_INIT_SHARED |
+ GUEST_MEMFD_FLAG_MMAP;
+ }
- vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS, 0, 0, nr_pages, flags);
+ vm_mem_add(vm, VM_MEM_SRC_ANONYMOUS, 0, 0, nr_pages, flags,
+ -1, 0, gmem_flags);
for (i = 0; i < NR_MEM_REGIONS; i++)
vm->memslots[i] = 0;
IMO, this diff belongs to the gmem in-place series.