From nobody Thu Apr 2 20:20:27 2026 Received: from mail-pf1-f201.google.com (mail-pf1-f201.google.com [209.85.210.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C38D03BFE21 for ; Thu, 26 Mar 2026 23:37:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774568223; cv=none; b=iPsijaQAWdJTHLSE+81cmHMHxHTtHl3b039EpZ4xK0D3NxvmbmMIXU3MCWancad8ZB0J/rW+WJAx04KQKpCgdkfUeph9SGjDaV1oqsTNzYbx0cNA1QgVLIjtRaBpzSBMMjgyMO6MWxvHxPJLj1zy+D+YZW870Oew+EC7mwsHSUU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774568223; c=relaxed/simple; bh=ROguWgeRYmW2NGhxshL1J1m27mkAuyVZqWW+Rnqw28E=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=bQMx+RyrmRdTFi80Q4A09IrmF8zE+oyptee9D2Fp69eMz/dfoy61+U98Zn3WJeIKnpoolD0OjWj1GRTwMXVpbN7i1lorkYVTce6ABnZ8cUjmCHC8oXjOBds/Rku6r8PgaMNS+pJELzkz/iKVOkpQmPxR7NUnE8vtUxbACKzRvSo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--ackerleytng.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=vZgrgyId; arc=none smtp.client-ip=209.85.210.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--ackerleytng.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="vZgrgyId" Received: by mail-pf1-f201.google.com with SMTP id d2e1a72fcca58-82c73627355so971793b3a.2 for ; Thu, 26 Mar 2026 16:37:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1774568221; x=1775173021; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=aDbojp2aZv00FIsDRORjdXTSkhyjR06hadNHaz3T5HI=; b=vZgrgyIdruznXS3apR6PkaMLFIwfMMJ3+VFF7qXbh95cEVD90txuA+wi5KhKmSTnyP lVUloHXpPI9Gubiy5AyoAN+hrCy6wL0cDeWuPVaV2t0OtKj+cS6At14SxUFDIJ2c4Z7G 2G+zmhLn5unIjEQZjfPWXqKU5F3C5OaKBvIc9PCA8pYW71dblj5yyHSYSpL5HdENT4mu J4P8lZkJY1zXjjJG03+olBXKSgu1kjg86FqKXokkdXo/raJ6L0x1ruuK5o6awquFgJZ8 EaJQHd9/oG2VKbPvlL/xx8ZUE/FVSNli6gNcP3AEfhasIFCo11g3BxAWaBoXGqBK2rQ+ NESA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774568221; x=1775173021; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=aDbojp2aZv00FIsDRORjdXTSkhyjR06hadNHaz3T5HI=; b=IfoJbkmQxLW+cfSIfnyg4MkzxUVOjacP7sUuLKse7hXgUaa9W7lqOV8S2VDAjeVzix THdY4WqpUSpN6Mq71x7tHEfWJqh37AxE/lD5V177H9ceYFWHrTPE3EbSfwyZQbNuRuJm ND7bVKlgNCwcnz8XQkN+bQGGol15oIrpE5hyOCfgFCKhc9c4khGQSI/KDQFNWGVybtwa BST3tM8HOpTwHQ8dnhg1jmC4FjanDP4x4iDv4p8P8ky0l2oR+ngYmkRxaivbzU5GHp5T kX6FHUppiJEUgI1bAjxfidyHgJ7ofaHa6R3RvoRa33Hxg9jIj2uIOBf8C4xplFVTRBwl 71cg== X-Forwarded-Encrypted: i=1; AJvYcCWu9jzfoYtPCKAdFPzdeBbfPjvj3r0CHSGAT7UzT1ITdR48z5y54MShUShnbY34D3dN6KaYJVAc2n/1GTU=@vger.kernel.org X-Gm-Message-State: AOJu0Yw/cfWpnExPc7UoiYiu6PtMmRreidNjIW227lcZaIreBWsGltiq 2ZT4cqdsq8v+4we7ph81lqvUR7XCakyMmw57ExhbpCPplB21YZEVXapelJXyebXCrPO0nBWIVeJ xglIx+Tn814tJMoEcG5C3fPJgOQ== X-Received: from pfnj5.prod.google.com ([2002:aa7:83c5:0:b0:82c:649d:baf4]) (user=ackerleytng job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:9090:b0:82c:6cbe:7935 with SMTP id d2e1a72fcca58-82c95ee4b93mr291131b3a.28.1774568220675; Thu, 26 Mar 2026 16:37:00 -0700 (PDT) Date: Thu, 26 Mar 2026 16:36:39 -0700 In-Reply-To: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260326-gmem-inplace-conversion-v4-0-e202fe950ffd@google.com> X-Mailer: git-send-email 2.53.0.1018.g2bb0e51243-goog Message-ID: <5f3dc762b9f08c1c398027e2ff4863ab46c3c04d.1774568083.git.ackerleytng@google.com> Subject: [POC PATCH 1/6] KVM: selftests: Initialize guest_memfd with INIT_SHARED From: Ackerley Tng To: ackerleytng@google.com Cc: aik@amd.com, akpm@linux-foundation.org, andrew.jones@linux.dev, aneesh.kumar@kernel.org, axelrasmussen@google.com, baohua@kernel.org, bhe@redhat.com, binbin.wu@linux.intel.com, bp@alien8.de, brauner@kernel.org, chao.p.peng@linux.intel.com, chrisl@kernel.org, corbet@lwn.net, dave.hansen@linux.intel.com, david@kernel.org, forkloop@google.com, hpa@zytor.com, ira.weiny@intel.com, jgg@ziepe.ca, jmattson@google.com, jroedel@suse.de, jthoughton@google.com, kasong@tencent.com, kvm@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org, linux-trace-kernel@vger.kernel.org, mathieu.desnoyers@efficios.com, mhiramat@kernel.org, michael.roth@amd.com, mingo@redhat.com, nphamcs@gmail.com, oupton@kernel.org, pankaj.gupta@amd.com, pbonzini@redhat.com, pratyush@kernel.org, qperret@google.com, rick.p.edgecombe@intel.com, rientjes@google.com, rostedt@goodmis.org, seanjc@google.com, shikemeng@huaweicloud.com, shivankg@amd.com, shuah@kernel.org, skhan@linuxfoundation.org, steven.price@arm.com, suzuki.poulose@arm.com, tabba@google.com, tglx@kernel.org, vannapurve@google.com, vbabka@kernel.org, weixugc@google.com, willy@infradead.org, wyihan@google.com, x86@kernel.org, yan.y.zhao@intel.com, yuanchu@google.com, Sagi Shahar Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Initialize guest_memfd with INIT_SHARED for VM types that require guest_memfd. Memory in the first memslot is used by the selftest framework to load code, page tables, interrupt descriptor tables, and basically everything the selftest needs to run. The selftest framework sets all of these up assuming that the memory in the memslot can be written to from the host. Align with that behavior by initializing guest_memfd as shared so that all the writes from the host are permitted. guest_memfd memory can later be marked private if necessary by CoCo platform-specific initialization functions. Suggested-by: Sagi Shahar Signed-off-by: Ackerley Tng --- tools/testing/selftests/kvm/lib/kvm_util.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index eaa5a1afa1d9b..68241e458807a 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -483,8 +483,10 @@ struct kvm_vm *__vm_create(struct vm_shape shape, uint= 32_t nr_runnable_vcpus, { uint64_t nr_pages =3D vm_nr_pages_required(shape.mode, nr_runnable_vcpus, nr_extra_pages); + enum vm_mem_backing_src_type src_type; struct userspace_mem_region *slot0; struct kvm_vm *vm; + u64 gmem_flags; int i, flags; =20 kvm_set_files_rlimit(nr_runnable_vcpus); @@ -502,7 +504,15 @@ struct kvm_vm *__vm_create(struct vm_shape shape, uint= 32_t nr_runnable_vcpus, if (is_guest_memfd_required(shape)) flags |=3D KVM_MEM_GUEST_MEMFD; =20 - vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS, 0, 0, nr_pages, fla= gs); + gmem_flags =3D 0; + src_type =3D VM_MEM_SRC_ANONYMOUS; + if (is_guest_memfd_required(shape) && kvm_has_gmem_attributes) { + src_type =3D VM_MEM_SRC_SHMEM; + gmem_flags =3D GUEST_MEMFD_FLAG_MMAP | GUEST_MEMFD_FLAG_INIT_SHARED; + } + + vm_mem_add(vm, src_type, 0, 0, nr_pages, flags, -1, 0, gmem_flags); + for (i =3D 0; i < NR_MEM_REGIONS; i++) vm->memslots[i] =3D 0; =20 --=20 2.53.0.1018.g2bb0e51243-goog