From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id BA1EBC83F1B for ; Fri, 11 Jul 2025 14:35:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2BDCE6B00A1; Fri, 11 Jul 2025 10:35:33 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 257826B00A3; Fri, 11 Jul 2025 10:35:33 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 146F06B00A4; Fri, 11 Jul 2025 10:35:33 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 00BAF6B00A1 for ; Fri, 11 Jul 2025 10:35:32 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 63EA2586F5 for ; Fri, 11 Jul 2025 14:35:32 +0000 (UTC) X-FDA: 83652232104.24.BA270E3 Received: from mail-qt1-f182.google.com (mail-qt1-f182.google.com [209.85.160.182]) by imf16.hostedemail.com (Postfix) with ESMTP id 87526180015 for ; Fri, 11 Jul 2025 14:35:30 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=IGwLUjb+; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf16.hostedemail.com: domain of tabba@google.com designates 209.85.160.182 as permitted sender) smtp.mailfrom=tabba@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752244530; a=rsa-sha256; cv=none; b=Zd8Hi8ZF1/LK9x9cj9VVgFj/NauKTl9INWnZbJ6GV0aAberYPVP1bT1VLhZmlLkIQHWmiQ 8VvqAx/JO/8eXgTwVD2+YtyhxQsk3ROsds88oVrhoeIrszM95AGuRF22u8mwpztmyTjUXL pIszYdMcdQhDm/BF8UZn1/rqoE9SLC4= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=IGwLUjb+; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf16.hostedemail.com: domain of tabba@google.com designates 209.85.160.182 as permitted sender) smtp.mailfrom=tabba@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752244530; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=lq9VKw2x/Ujw6EnIVfnsvSfkn8foGEThRri1rsKatHU=; b=uzReR84tKbQVsP4jT6pTl7h9dlcfRgl9g0Jjx71ZFkyWVvoHbuWiTaVyebGpTXCcOlUpoS KEVrDIseOMECxLtaqcrMncRf9LiDEQLeTh7QE55HUacljI50aJwQSoEPNCzMTAUU5sZ0ul z/M8pMQfVER9Dnvw4qlPla8vdpxpgEw= Received: by mail-qt1-f182.google.com with SMTP id d75a77b69052e-4aaf43cbbdcso142301cf.1 for ; Fri, 11 Jul 2025 07:35:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1752244529; x=1752849329; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=lq9VKw2x/Ujw6EnIVfnsvSfkn8foGEThRri1rsKatHU=; b=IGwLUjb+I22TOQ3cOkWOQOz1jOFjwbwHTyRTthd9mQyWac9E2qZFktGYnhm0p10W9J i00s5Ci89DNULzzDAnLMr/2OCQ33oX+XesGtEGJ79XcMWPdl5+XK4fi0QhlkQ/MOoVyh 1e4NzidrmQYkiudTIMq7dbjF3sgSWFnY+1U2aUNy9JBVggalNrfbipy6qJEcwll5zR3h hnjG3LjfbjsfFzENU5ycVif0e3aILGBPcAvyIdh8r69DEBJecqFS0I/Ny8L2+pIOwS6F xjosXHrjhN8AhznJYnxotE/ZWVwSMZOj+280gnQP5ry5yvhuxy3BBoOcAIHih+FXZ7ZB J2Pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752244529; x=1752849329; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=lq9VKw2x/Ujw6EnIVfnsvSfkn8foGEThRri1rsKatHU=; b=pl2UE35DTTW99FhyVGu8+9jNPKYa6lKUOojBpRVLi2uFcz+MtzST5X/3eyQCavXdBM zupKMyUwHeUreCqrQFpzoTsatMCA+LY7TPkRXuT/yJjsARynJggQq4axaA9sMyoHktng wBdqXQcdWCuLV4QDrV1YGsg0dubDW/L/pv21L9r5rD2UBYARFxdUMDf37t2hMdSZxQIv vz3Vhnpp+tT7JGlzh7BiWoubajQKCHK1dDFmqZM+QcOMap61xCo/FfPKrs3HjXTHOw3J yrrSOKCV78CajKU8hGYar7Zfe9A4GzMcrs1vbZ6ZFtUcLQe4R+Id94oB2L95YbYyMgK2 LdPg== X-Forwarded-Encrypted: i=1; AJvYcCXWKgIAIE/k5h2gwBXLLZ06J4JeOFLV7vvqnvw9kfe7BLSjerkhbUX32G6f99RGgExEIuyOeQWx3g==@kvack.org X-Gm-Message-State: AOJu0YxpwPT/0wh740eUJNUs5+DIjEHvWziFTrLDZEwXzvwXVf++1r08 cGRhRTeTu4j4nB7iB/zoTTmjfHtGzYYGjQVRWSeb+kvh9vkxEG9zRVXx6/HZjTbYDe59OXq3k/o 04TTeTr8q2LzaDhu19RgK7qrZFzy1i59KkV4paHhG X-Gm-Gg: ASbGncvdehIZ4/fmh5F9h0JwJX3v/6wGJkZX5qR6M3QNqpyXfid8kD1VicHgx0dVbsd RzlM8XB4FFyF2YVGuX2mBHSqzldOOGCtsxDRg0/YUl7D2FazqUkUHsICPZJrT6Pc01l62uH0ATC iwEJeFBW++AtWnfxfNG1ZQ/XV0f28lTd9HlVrSDFmo4+CWy7SCQHtxLvcqXpxVoGL2sFZ3obqfI Wkp9dQ= X-Google-Smtp-Source: AGHT+IEg2fONqFcuPbkvHSvdaQWL9AC5pLiTMJKYpsFoLYghSZ8SAhnIGrRn3LSgKjXg81dETxMVSTy5T/qS3dgr4ks= X-Received: by 2002:a05:622a:49:b0:4a9:d263:d983 with SMTP id d75a77b69052e-4a9fbf49438mr3781321cf.22.1752244528763; Fri, 11 Jul 2025 07:35:28 -0700 (PDT) MIME-Version: 1.0 References: <20250709105946.4009897-1-tabba@google.com> <20250709105946.4009897-18-tabba@google.com> <868qkuajp2.wl-maz@kernel.org> In-Reply-To: <868qkuajp2.wl-maz@kernel.org> From: Fuad Tabba Date: Fri, 11 Jul 2025 15:34:52 +0100 X-Gm-Features: Ac12FXzYWJsd6Iwz-ekA2LSj-AUmL9hUg1W3iguQuC8VOR_mqt0hoqU_djhQ6-A Message-ID: Subject: Re: [PATCH v13 17/20] KVM: arm64: Enable host mapping of shared guest_memfd memory To: Marc Zyngier Cc: kvm@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-mm@kvack.org, kvmarm@lists.linux.dev, pbonzini@redhat.com, chenhuacai@kernel.org, mpe@ellerman.id.au, anup@brainfault.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, seanjc@google.com, viro@zeniv.linux.org.uk, brauner@kernel.org, willy@infradead.org, akpm@linux-foundation.org, xiaoyao.li@intel.com, yilun.xu@intel.com, chao.p.peng@linux.intel.com, jarkko@kernel.org, amoorthy@google.com, dmatlack@google.com, isaku.yamahata@intel.com, mic@digikod.net, vbabka@suse.cz, vannapurve@google.com, ackerleytng@google.com, mail@maciej.szmigiero.name, david@redhat.com, michael.roth@amd.com, wei.w.wang@intel.com, liam.merwick@oracle.com, isaku.yamahata@gmail.com, kirill.shutemov@linux.intel.com, suzuki.poulose@arm.com, steven.price@arm.com, quic_eberman@quicinc.com, quic_mnalajal@quicinc.com, quic_tsoni@quicinc.com, quic_svaddagi@quicinc.com, quic_cvanscha@quicinc.com, quic_pderrin@quicinc.com, quic_pheragu@quicinc.com, catalin.marinas@arm.com, james.morse@arm.com, yuzenghui@huawei.com, oliver.upton@linux.dev, will@kernel.org, qperret@google.com, keirf@google.com, roypat@amazon.co.uk, shuah@kernel.org, hch@infradead.org, jgg@nvidia.com, rientjes@google.com, jhubbard@nvidia.com, fvdl@google.com, hughd@google.com, jthoughton@google.com, peterx@redhat.com, pankaj.gupta@amd.com, ira.weiny@intel.com Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam11 X-Rspam-User: X-Stat-Signature: hj5xftxoowdq4pg4wdd4y1en7k7f5bbz X-Rspamd-Queue-Id: 87526180015 X-HE-Tag: 1752244530-959111 X-HE-Meta: U2FsdGVkX1+1cOx6DSgTPX5KLtfHLhKsyLlhLMifjaaQJbsKNnPanbihYqENSFK1eT9Hh76MKs1y/oam1SRerKLggIhVyoHaACfXnRo8KqH/OyK2QygW0AhxFrwuqJmNVIHBoeD0QA1YK12Hn6B9YqX1IHmFOBf/WSWQGeTLCijaUcEedh5WdROEvXzi+YbMjkUkgxT/G5B3Hdr2xTuV0Tc6pAUkk7XdALME15vla/l5SWnrlb3IOXQjtrKAyg+qbFzNgf8wMtwUPOoYd92OKWa0jB/qjfJ6DIjCXtYhTg0k1/Q7W6c7a7LQMv7NZpsFjC3ovm1JOxGylTo8mm1DFB6lzI9p4+Pqi9PtO6psZNr9r5rIdBNVZlvf3DK2YTk8ePDZdz0L/0l2SU1ptE3+rRwjk3dOoMf/z3b6h91yuZcia9xVx8bDH+ii4L0X7wrr58DCvDYzxOzU1gTy5Ie6KUbfVw2Ja0JzjvLEy8eEeyh1GwLzLrPt/uLVezSQIiBoqN7c9PxUAYqjp1WT3YtIDNf4yXKZiNYokJp/Ao+fHzoXWduWV3QWy4JF3Sr3oRdSvT179VCIoAUyECRooRt0NFKmaKu91W0/fZIe9eK4466UZJke+8R/i41W48200dz39s4wyOYk8OwlaPB4QsT6tk7G2rCJr38NaVYky6Z3RI5LRc8k9QAGfRl2vNF1SfyTIr36QmsqC/GjMdSPS5Z9fcAqi1P1O5qv6GJn9eRVSlqpsZgPDTkl/ysgqWQ5iSHRzQlKf1Tx2usD9ggdV3ddECJnHr/bL5CDkC2qJZyb44VJSTCU+aD1O00+eAI48zyeLfWEqYMiQPIAcHpB3FPlElbzuas8AYtigrZQDdqPv/tyaojn0wEnBhJeg2Vpkax2Jn+dnU0oLAPIniolNpR4tHuuYMe/01/nZOiGsB76sUt0io/jcOeCLlQ4bm8mtsOmk9DoxhUeUGQxgo2uiho N9ctXJdf fAFmlLw0JJKxt7UhRKYNK/iMNwVFUnu3RGqKVyu8JshpmTU/yKuXOFgiFl34NfU+g6KSLyQrrWYgASdcrZxb9D32iq2F7ZhAGkJx1nMqVh8EUeGuO2Zu7QQ8WtUR5VGm4ls5u+0xm64U6R2zWtcFz+Ep2POE9/xBS/KbCkbzqyKbewxqCdYaNuFYy4E+w5BctMrsR6DeeFs3bLaVHIeW7dH7zT6AjHVRCVSH2yXCWsP9/E1qdPAPbYFMyQ/ciKxDjuNFyNNF9ahLD8xxwB9su3uocN21xjWOZsHtXK56HAYkge4B4kW3khYrjrKeQTzq06wydewf/d2ea5FynDTXt4n86ME1I4LY3I/Uy1b+BLaPG7s7lvwAuZro8OYJuKuYRp00B X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Hi Marc, On Fri, 11 Jul 2025 at 15:25, Marc Zyngier wrote: > > On Wed, 09 Jul 2025 11:59:43 +0100, > Fuad Tabba wrote: > > > > Enable host userspace mmap support for guest_memfd-backed memory on > > arm64. This change provides arm64 with the capability to map guest > > memory at the host directly from guest_memfd: > > > > * Define kvm_arch_supports_gmem_mmap() for arm64: The > > kvm_arch_supports_gmem_mmap() macro is defined for arm64 to be true if > > CONFIG_KVM_GMEM_SUPPORTS_MMAP is enabled. For existing arm64 KVM VM > > types that support guest_memfd, this enables them to use guest_memfd > > with host userspace mappings. This provides a consistent behavior as > > there are currently no arm64 CoCo VMs that rely on guest_memfd solely > > for private, non-mappable memory. Future arm64 VM types can override > > or restrict this behavior via the kvm_arch_supports_gmem_mmap() hook > > if needed. > > > > * Select CONFIG_KVM_GMEM_SUPPORTS_MMAP in arm64 Kconfig. > > > > * Enforce KVM_MEMSLOT_GMEM_ONLY for guest_memfd on arm64: Compile and > > runtime checks are added to ensure that if guest_memfd is enabled on > > arm64, KVM_GMEM_SUPPORTS_MMAP must also be enabled. This means > > guest_memfd-backed memory slots on arm64 are currently only supported > > if they are intended for shared memory use cases (i.e., > > kvm_memslot_is_gmem_only() is true). This design reflects the current > > arm64 KVM ecosystem where guest_memfd is primarily being introduced > > for VMs that support shared memory. > > > > Reviewed-by: James Houghton > > Reviewed-by: Gavin Shan > > Acked-by: David Hildenbrand > > Signed-off-by: Fuad Tabba > > --- > > arch/arm64/include/asm/kvm_host.h | 4 ++++ > > arch/arm64/kvm/Kconfig | 1 + > > arch/arm64/kvm/mmu.c | 8 ++++++++ > > 3 files changed, 13 insertions(+) > > > > diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h > > index d27079968341..bd2af5470c66 100644 > > --- a/arch/arm64/include/asm/kvm_host.h > > +++ b/arch/arm64/include/asm/kvm_host.h > > @@ -1675,5 +1675,9 @@ void compute_fgu(struct kvm *kvm, enum fgt_group_id fgt); > > void get_reg_fixed_bits(struct kvm *kvm, enum vcpu_sysreg reg, u64 *res0, u64 *res1); > > void check_feature_map(void); > > > > +#ifdef CONFIG_KVM_GMEM > > +#define kvm_arch_supports_gmem(kvm) true > > +#define kvm_arch_supports_gmem_mmap(kvm) IS_ENABLED(CONFIG_KVM_GMEM_SUPPORTS_MMAP) > > +#endif > > > > #endif /* __ARM64_KVM_HOST_H__ */ > > diff --git a/arch/arm64/kvm/Kconfig b/arch/arm64/kvm/Kconfig > > index 713248f240e0..28539479f083 100644 > > --- a/arch/arm64/kvm/Kconfig > > +++ b/arch/arm64/kvm/Kconfig > > @@ -37,6 +37,7 @@ menuconfig KVM > > select HAVE_KVM_VCPU_RUN_PID_CHANGE > > select SCHED_INFO > > select GUEST_PERF_EVENTS if PERF_EVENTS > > + select KVM_GMEM_SUPPORTS_MMAP > > help > > Support hosting virtualized guest machines. > > > > diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c > > index 71f8b53683e7..b92ce4d9b4e0 100644 > > --- a/arch/arm64/kvm/mmu.c > > +++ b/arch/arm64/kvm/mmu.c > > @@ -2274,6 +2274,14 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm, > > if ((new->base_gfn + new->npages) > (kvm_phys_size(&kvm->arch.mmu) >> PAGE_SHIFT)) > > return -EFAULT; > > > > + /* > > + * Only support guest_memfd backed memslots with mappable memory, since > > + * there aren't any CoCo VMs that support only private memory on arm64. > > + */ > > + BUILD_BUG_ON(IS_ENABLED(CONFIG_KVM_GMEM) && !IS_ENABLED(CONFIG_KVM_GMEM_SUPPORTS_MMAP)); > > + if (kvm_slot_has_gmem(new) && !kvm_memslot_is_gmem_only(new)) > > + return -EINVAL; > > + > > hva = new->userspace_addr; > > reg_end = hva + (new->npages << PAGE_SHIFT); > > > > Honestly, I don't see the point in making CONFIG_KVM_GMEM a buy in. We > have *no* configurability for KVM/arm64, the only exception being the > PMU support, and that has been a pain at every step of the way. > > Either KVM is enabled, and it comes with "batteries included", or it's > not. Either way, we know exactly what we're getting, and it makes > reproducing problems much easier. Batteries included is always best I think (all the times I got disappointed as a kid..... sight :) ). I'll always enable guest_memfd when KVM is enabled on arm64. Cheers, /fuad > Thanks, > > M. > > -- > Without deviation from the norm, progress is not possible.