From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qt1-f170.google.com (mail-qt1-f170.google.com [209.85.160.170]) (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 6010E333442 for ; Wed, 24 Jun 2026 18:58:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=209.85.160.170 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782327488; cv=pass; b=SHzQMqL+J8pIRsBCSFVtFzT4VrPFx8qvvAeDmwlYi3RrMIDY9P4HcbE4gKuVHNveKx6lbREbSPBmRgSacAHtZiGR61m8H/QSCZFAI7dpFms2uUjIcHcRvQP7eaSFmR5Qr5Gx3r/bXdrepP9/QRyGbJimraXT1nnUcmAElBu0rVk= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782327488; c=relaxed/simple; bh=nxiRjQbOPZYmEdcjYYgjgTTY9n8vy7cCQU+hd4oV7a0=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=AtdsNVgWPr+09QSwf/SsRDT5O+X+2unNHxQt1fAyI3hp0zEi6lfCXtLmPMnw7gPxDoXJc3xdWygzJVAPk3e9YNQmyYIh8uM7CfjNXgsbg6lQHe2rwl7XGm65PtrMd+C6oTxt+6DqUMDCLgp5Ev3pGfTAsOCBpS/TLD+sZf2zfPc= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=AS/xcRRN; arc=pass smtp.client-ip=209.85.160.170 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=google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="AS/xcRRN" Received: by mail-qt1-f170.google.com with SMTP id d75a77b69052e-5177d1ff061so49211cf.1 for ; Wed, 24 Jun 2026 11:58:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782327486; cv=none; d=google.com; s=arc-20260327; b=f6XnAVQTRhFHr6H1kPqhWzDQH2AnM32QcjsVJJlUavJf9/FK6X3p9VyWDwJjdkFs+q 25q4k20O1eXd6PhQ9baU1MVUEWttWJqKh0gZ5qBg1VHahaGYxc+LzbWn0/8Mkye7FB/D xhPsLXPEossuPj9BEHCudOCvFDHOnxXsnsIYeCmrHBkTpmpqnesEf7cLpETZw8rbDH3p zW35BJ6YMR2NWBXrfgcZE6s3et5IT+rMRv+Y9KMazx/de1I2P7xE2RMoo7gEviHSCdDD Q5Cz876YGDZGk//OAXB6kT7zbkIB1vV2qec4xSroejJOiIyiSR1p0i0J7+9vDbZNdCyw so8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=lYP2MIWClSeA6+M0aw+ZhWTqj4KB8PioFvb0d+sMqRU=; fh=KOEu0pTO6Xk6NJlOIbtnM+Qg48QvpNao5G+xgZJZfls=; b=mb7JPZi5H9y8wf2wipBoDFOQeuX9JqL/ov9qCiqepc6T1z7PRfRnAV5FkzmtSfrcym 8Uh67cg2bSKZ5+ZtzDxMbCLQmmR29B8nzdKe3Kw/3Duj6v/xhO5fg99rkygZuYFJDotF +qlXlEiApafRVxOoSvhgZms0ZKypzxcS8HTASoosd8asdQ7RZdCGrW5tW2J42WrfcpE7 vnbqYTc7ERUDMaxEerqurbmVqh5SzGGz/PGBADn/JQOSNYWzLUgOxPZvJBtqeXPPugwC IFSxbHbppedz//ejsuJv4cwJUwNtz/fe5n/woWq1+vMdxap3tg0OawQY5AyiphFTtkTq O+6w==; darn=vger.kernel.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1782327486; x=1782932286; darn=vger.kernel.org; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=lYP2MIWClSeA6+M0aw+ZhWTqj4KB8PioFvb0d+sMqRU=; b=AS/xcRRNmR+bDCVyt1I6w9zVKGijxhbJJ5vrAk/nwfRMsxdxVXrVDofaNYrh5uCJw3 P13iTlLk/isUw/i5iob5fhAqiNsP3F6A/ynSmrXrQKsr4BXFTBe+A+6rGbys+c4fl+PN JpLXjcqg4atwKj3t1JRcC3LZY4ZeWa8G5hgE9bAqH0OkC9agCJwPBZUxGpHW3cJoCEcu ug7nIAL31EPFpLsQEIH4bOVvLiVwnA9xkhDfkQhTljGxNXa8OSdtaYzECfPhjlq48CgA eGZYt4ZJjbonTcG29ve/uyim3bqXhqC5PPcHE4/ZRhIE2OS+ZGCrxMuBF6/8lb6gmKj3 A/ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782327486; x=1782932286; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=lYP2MIWClSeA6+M0aw+ZhWTqj4KB8PioFvb0d+sMqRU=; b=QOvi6rdqRpCfr07cDEJsc8RZC5xDizG1Z7KsUyU+IYNo8D73ogHnSSfQ7bnNV6WDNB SYak2Iemjy6fmGdUkySRJMpuUHjpoPpUktIUH/o8XFpQu9sJnQi+FQBdYK6SFQP9XQyi YDm3yG+HUq7icuV7RDl/PL9f0mbU/oGIX7+9xmL/mCsuoNTjUphjY/zJ/Gmu8/imZFn5 ip8qF44V62kn/TszkQLYBHvTcztPLaxFNPK/H1IJxoeC8vhqVuVtg6XvDzOGJbet8F2n yAjlvE6/z6njvJCne4/vqZCBAPlQ8xQom4KR5x2Ny4IFZNEk+8a4KPIAXhvMRLG+P1tv LoAg== X-Forwarded-Encrypted: i=1; AFNElJ9QU0MVb9fW9rVL0ZwUpTfhG6EIntL2b51KYYNDyWRKrk88+yiCM6eKC7bmurQzPFyUmahm3P2MRwnLa1k=@vger.kernel.org X-Gm-Message-State: AOJu0YwUEETofrTyNfzKDMQjIntIg0wHg/xPJOXyGBLyLQtTznQjGC+m 4SIv1oigR913HTuc+AfHvfGybpOi9yiqIEtJzysZyR9+t4Uejnl1lwEyfx8E+r8932u+40W/qbE Q0j1HYUT/a2Q20xv0gAnaoZKFVdyYoXxa676UTD9L X-Gm-Gg: AfdE7cns4+0v1qLROgMVD2WS+wNN8GpVcZafm/GeX57AmxLMIUZfL2kxKcp0ejPUZV5 iJse6pS2c48sXVbVITCefpWSr7lpbKejUePbHynGWpjlfgYq7lqVXnmZ3NrzD6aFKaN8lSIYWa1 R7TUlL9f2sbzuGOwpAq8rZQZ99Hd6ey7tlN/6ErvYN3XJn4pF4v7cGqG38G5kIaU2RfusOmYBXi nxd1OiG8/Xaa0ap+O9Ekk1zPZVMHaTA20zaMTEhS32kbBOiPgiAp04IXVRbK8d2yY/+juENfGys Lmcc4KIZ X-Received: by 2002:ac8:7f51:0:b0:517:5ac7:332e with SMTP id d75a77b69052e-51a6e99e871mr1220721cf.6.1782327485393; Wed, 24 Jun 2026 11:58:05 -0700 (PDT) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20260618-gmem-inplace-conversion-v8-0-9d2959357853@google.com> <20260618-gmem-inplace-conversion-v8-24-9d2959357853@google.com> In-Reply-To: <20260618-gmem-inplace-conversion-v8-24-9d2959357853@google.com> From: Fuad Tabba Date: Wed, 24 Jun 2026 19:57:28 +0100 X-Gm-Features: AVVi8CeYyqolczp9quGS2mTDT-o2xHvKCexfoBhgu9RXIzSIPhnTHlePhYz9Iw8 Message-ID: Subject: Re: [PATCH v8 24/46] KVM: guest_memfd: Make in-place conversion the default To: ackerleytng@google.com Cc: aik@amd.com, andrew.jones@linux.dev, binbin.wu@linux.intel.com, brauner@kernel.org, chao.p.peng@linux.intel.com, david@kernel.org, jmattson@google.com, jthoughton@google.com, michael.roth@amd.com, oupton@kernel.org, pankaj.gupta@amd.com, qperret@google.com, rick.p.edgecombe@intel.com, rientjes@google.com, shivankg@amd.com, steven.price@arm.com, willy@infradead.org, wyihan@google.com, yan.y.zhao@intel.com, forkloop@google.com, pratyush@kernel.org, suzuki.poulose@arm.com, aneesh.kumar@kernel.org, liam@infradead.org, Paolo Bonzini , Sean Christopherson , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Jonathan Corbet , Shuah Khan , Shuah Khan , Vishal Annapurve , Andrew Morton , Chris Li , Kairui Song , Kemeng Shi , Nhat Pham , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Youngjun Park , Qi Zheng , Shakeel Butt , Kiryl Shutsemau , Baoquan He , Jason Gunthorpe , Vlastimil Babka , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org, linux-coco@lists.linux.dev Content-Type: text/plain; charset="UTF-8" On Fri, 19 Jun 2026 at 01:31, Ackerley Tng via B4 Relay wrote: > > From: Ackerley Tng > > Make in-place conversion the default if the arch has private mem. > > The default can be overridden at compile type by enabling compile _time_ > CONFIG_KVM_VM_MEMORY_ATTRIBUTES, or at KVM load time through a module > parameter. > > In-place conversion also implies tracking a guest's private/shared state in > guest_memfd. To avoid inconsistencies in the way memory attributes are > tracked between the per-VM or by guest_memfd, make the module_param > read-only (0444). > > Document that using per-VM attributes for tracking private/shared state of > guest memory is deprecated in favor of tracking in guest_memfd. > > Warn if the admin sets gmem_in_place_conversion as false when > CONFIG_KVM_VM_MEMORY_ATTRIBUTES is not enabled. Add warning in the code > path where guest memory is populated for a CoCo VM, since that's the > earliest point in a CoCo VM's lifecycle where memory attributes are > queried. Unlike other query sites, this site is exclusively used by CoCo > VMs. > > Signed-off-by: Sean Christopherson > --- > arch/x86/kvm/Kconfig | 7 ++++++- > virt/kvm/guest_memfd.c | 5 +++++ > virt/kvm/kvm_main.c | 3 ++- > 3 files changed, 13 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig > index c28393dc664eb..a3c189d765150 100644 > --- a/arch/x86/kvm/Kconfig > +++ b/arch/x86/kvm/Kconfig > @@ -85,7 +85,12 @@ config KVM_VM_MEMORY_ATTRIBUTES > bool "Enable per-VM PRIVATE vs. SHARED attributes (for CoCo VMs)" > help > Enable support for tracking PRIVATE vs. SHARED memory using per-VM > - memory attributes. > + memory attributes. Using per-VM attributes are deprecated in favor nit: are->is Reviewed-by: Fuad Tabba Cheers, /fuad > + of tracking PRIVATE state in guest_memfd. Select this if you need > + to run CoCo VMs using a VMM that doesn't support guest_memfd memory > + attributes. > + > + If unsure, say N. > > config KVM_SW_PROTECTED_VM > bool "Enable support for KVM software-protected VMs" > diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c > index 86c9f5b0863cb..5cb73543c03c8 100644 > --- a/virt/kvm/guest_memfd.c > +++ b/virt/kvm/guest_memfd.c > @@ -1193,10 +1193,15 @@ static bool kvm_gmem_range_is_private(struct file *file, pgoff_t index, > { > struct maple_tree *mt = &GMEM_I(file_inode(file))->attributes; > > +#ifdef CONFIG_KVM_VM_MEMORY_ATTRIBUTES > if (!gmem_in_place_conversion) > return kvm_range_has_vm_memory_attributes(kvm, gfn, gfn + nr_pages, > KVM_MEMORY_ATTRIBUTE_PRIVATE, > KVM_MEMORY_ATTRIBUTE_PRIVATE); > +#else > + if (WARN_ON_ONCE(!gmem_in_place_conversion)) > + return false; > +#endif > > return kvm_gmem_range_has_attributes(mt, index, nr_pages, > KVM_MEMORY_ATTRIBUTE_PRIVATE); > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > index dd1d18a1d2f68..46e92b5dc3804 100644 > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -102,7 +102,8 @@ static bool __ro_after_init allow_unsafe_mappings; > module_param(allow_unsafe_mappings, bool, 0444); > > #ifdef kvm_arch_has_private_mem > -bool __ro_after_init gmem_in_place_conversion = false; > +bool __ro_after_init gmem_in_place_conversion = !IS_ENABLED(CONFIG_KVM_VM_MEMORY_ATTRIBUTES); > +module_param(gmem_in_place_conversion, bool, 0444); > EXPORT_SYMBOL_FOR_KVM_INTERNAL(gmem_in_place_conversion); > #endif > > > -- > 2.55.0.rc0.738.g0c8ab3ebcc-goog > >