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 5B8FAC83F1A for ; Mon, 14 Jul 2025 08:04:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EF4536B007B; Mon, 14 Jul 2025 04:04:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id ECD856B0089; Mon, 14 Jul 2025 04:04:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D79A96B0092; Mon, 14 Jul 2025 04:04:56 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 672246B007B for ; Mon, 14 Jul 2025 04:04:56 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id EE2FE1DA26D for ; Mon, 14 Jul 2025 08:04:55 +0000 (UTC) X-FDA: 83662134150.01.A3B583C Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf25.hostedemail.com (Postfix) with ESMTP id 19B12A000A for ; Mon, 14 Jul 2025 08:04:53 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=ZgZvm7Ec; spf=pass (imf25.hostedemail.com: domain of maz@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=maz@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752480294; 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=/S4uQ5k+HW8JNmVlv/zlaWT+7LH43sdbR+JBChhjXbI=; b=kzvkQU9+J5Qscj+G11P49jv0PK0D/w9AqliuXRNNwzogNBJ+jdekj9xMZDHcDgcTjISnEg dSFtorjBw2CW5upoKvwASIS4miKdUX/adWY2tYqwHOHiaJx1zlc4Jt1s1q+8Jtixa2Hexy 1wWpHwMUeBBm/u4w1YYdRhLQRFPDEEE= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752480294; a=rsa-sha256; cv=none; b=Yszq2itetsLMaXzEZnn2z6U2rvl6pgWGXMqCK/5NJIp0ho0DtusuYPy7XFjI0hyjGA807R Lmmq8akly2m+GCxuUNh9X2ON1ZOAjJZ7Bcl2cP22SymlkuuCgvWL4bL3xh0ruUiW37fAdq wbDvMPOVuALX4vST6eb8adxe58qWINY= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=ZgZvm7Ec; spf=pass (imf25.hostedemail.com: domain of maz@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=maz@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 34395A53794; Mon, 14 Jul 2025 08:04:53 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C6E3DC4CEED; Mon, 14 Jul 2025 08:04:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1752480292; bh=H9kiQECWZOW5ov4j9VoAQjWYSxSJ36A7Y3M4vXz83Ng=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=ZgZvm7EcBxADHZBQMVcToBi9IJWjthwxrTPdhAE/knyvKBJkroL+lV5qMFJz3wrMA A4HmA7y1rIf2i3QUgaAIRSXmQ17NnpT5FPyZD7vFLnZ26kC0OFnn43mERJBs9ofwwr yOdUqvtFjlg4wqotMBl7ccKC+oxc3HTqi/dDF/o8sWlbaN9EkXlRQiEFciSxWkUj2e jJ3KGix/mc3uzs3L2NXz/xJfFpFgPBgXN6sY6fu173EQiCxvi2dpQTytSHVvGfUI7x oWdb7O+ohBYxSP05RYHuFCVU/FozUF11ITg+lSUa6b5aZemek9hMYIh4815xVVzdNC CqzORr7Fxyliw== Received: from sofa.misterjones.org ([185.219.108.64] helo=goblin-girl.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1ubEB7-00FR6s-FO; Mon, 14 Jul 2025 09:04:49 +0100 Date: Mon, 14 Jul 2025 09:04:48 +0100 Message-ID: <8634az9p0f.wl-maz@kernel.org> From: Marc Zyngier To: Fuad Tabba 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 Subject: Re: [PATCH v13 16/20] KVM: arm64: Handle guest_memfd-backed guest page faults In-Reply-To: References: <20250709105946.4009897-1-tabba@google.com> <20250709105946.4009897-17-tabba@google.com> <865xfyadjv.wl-maz@kernel.org> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/30.1 (aarch64-unknown-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: tabba@google.com, 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, qu ic_pderr in@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 X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-Rspamd-Queue-Id: 19B12A000A X-Rspam-User: X-Rspamd-Server: rspam09 X-Stat-Signature: wxpnpn47edi7a187scdqomz9bn1ge6pd X-HE-Tag: 1752480293-240484 X-HE-Meta: U2FsdGVkX19areWGc5NBqJ2axYfcHoNhKurcgXFB5KMWv6xX8/uXXbWgJR+Y76T1KkAQ3kSp3Kj9gNKBZkQBRu/r7+VAU125nXd7LTYQo17/Q0RR6GZ3c/8gP6s3uxTA0Ttm063ZPR3ogkzMwZ59szOwRDdZXtKMPrznSAWrEmVRA081lBJ+0IFBZdOCrqpNNAz0GJP21s5VT1H2ZYrIxM4/7K7zmRl82B3lph5pTfevugj6nvbAptDHtXE2QFn1ugEpacWP+9g8CY2qx751jjgg6DKiPGBs3CkPkasnwrc7ddS8E+UHyUCDtoGdhCgdlpajfO0ve0l3f/XMYvs5ZPSANK4x8D7zumAhm2sYn8IEoKa/Ni1mqnkVyZngm7kCYlKVyWGuQlVjqogE4jwF408erRHEjwxB57rq8lY3rqQXZ2I+522uO7mCmAgYZAUXP2afD9ZZDQuSNDUgG5UHF2uxKx8Z3hHCw00iFJ02jJ79SmHcGUYmNkd4VkLre81nfbVDxDCzhh9dW2SvvWBqgVTng3VWHMQRIVaVpwhf/AfQ2Tz0iod6tXU7xTYBHq9q0pdOnDw4aAQfzEBsgLIx3c2zQkg+FMLw2DMyMXHs9yfbVmKKyGT68c0v7EHiGkezIN4MAgoMYDaCBgkvupghEd9qgQFUlu9YnxkLNOmGlZHjTvA1qKH/fR0J8+eK1AaV8q08wCTjgGUGPMvtsomIZXLObdCmgMAJlmwpT8gWD1jYpDuxcxpV/r5Nczdd2myxldHOzxXaLyELjiQNoii5oAq6n4hEuLUajAiZ4ERp3DAnj0qrIhv6nhecJeElOCJg0EFd06hhFeefhqXnoVxuLwpzjwvBzFzkWYW/6/ptTHD5T5BKCAwqiyTs7AXKeH86WCemJ/IPQ/776U86X5wWvMfKSun9IjMlFlYrLAKF15bwQ64jzDRmahJPwGRBLm8Rv7S560lXnzC64oxbFXm A2rC95xw 6aTc4x8tWkTwMBBgZF+XgpNZSyjKnNJDvPOrUESk+Mve7z46B/5KAie21uejEuG7e/FWElZQvsvxqKT6E/F//wkkwcbVJSjx6PoSkVMNvPxxw70aWKQgoMRkw+wSv541gBJw3T900d4LvUDUdaPizBkwoOLdsEfe4F65EtAFk9BfL0xx2SM2ldzCRfpLxc2famHa/ke0jT5/EqJVlgLCdQA/N1Pfbx9yDG48Hbx3qn+k6pc1aWirNi4vmNG5f6rHLLgZtHDBf50FUz/TVGpf40dbnSP49sss0OnD1wNrMJZVgOHAjgr/y9TPzskSs9F00aGCeLRdHGTT15zpNTOzFimcGkyGSb86VX+6fyZiJnR42w7NZ76b4aNETfiLEcahPqUc+sLKKG5JYntlEmCUDg6FaS79lz1YF/qXu 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: On Mon, 14 Jul 2025 08:42:00 +0100, Fuad Tabba wrote: > > Hi Marc, > > > On Fri, 11 Jul 2025 at 17:38, Marc Zyngier wrote: > > > > On Wed, 09 Jul 2025 11:59:42 +0100, > > Fuad Tabba wrote: > > > > > > Add arm64 architecture support for handling guest page faults on memory > > > slots backed by guest_memfd. > > > > > > This change introduces a new function, gmem_abort(), which encapsulates > > > the fault handling logic specific to guest_memfd-backed memory. The > > > kvm_handle_guest_abort() entry point is updated to dispatch to > > > gmem_abort() when a fault occurs on a guest_memfd-backed memory slot (as > > > determined by kvm_slot_has_gmem()). > > > > > > Until guest_memfd gains support for huge pages, the fault granule for > > > these memory regions is restricted to PAGE_SIZE. > > > > > > Reviewed-by: Gavin Shan > > > Reviewed-by: James Houghton > > > Signed-off-by: Fuad Tabba > > > --- > > > arch/arm64/kvm/mmu.c | 82 ++++++++++++++++++++++++++++++++++++++++++-- > > > 1 file changed, 79 insertions(+), 3 deletions(-) > > > > > > diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c > > > index 58662e0ef13e..71f8b53683e7 100644 > > > --- a/arch/arm64/kvm/mmu.c > > > +++ b/arch/arm64/kvm/mmu.c > > > @@ -1512,6 +1512,78 @@ static void adjust_nested_fault_perms(struct kvm_s2_trans *nested, > > > *prot |= kvm_encode_nested_level(nested); > > > } > > > > > > +#define KVM_PGTABLE_WALK_MEMABORT_FLAGS (KVM_PGTABLE_WALK_HANDLE_FAULT | KVM_PGTABLE_WALK_SHARED) > > > + > > > +static int gmem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa, > > > + struct kvm_s2_trans *nested, > > > + struct kvm_memory_slot *memslot, bool is_perm) > > > +{ > > > + bool write_fault, exec_fault, writable; > > > + enum kvm_pgtable_walk_flags flags = KVM_PGTABLE_WALK_MEMABORT_FLAGS; > > > + enum kvm_pgtable_prot prot = KVM_PGTABLE_PROT_R; > > > + struct kvm_pgtable *pgt = vcpu->arch.hw_mmu->pgt; > > > + struct page *page; > > > + struct kvm *kvm = vcpu->kvm; > > > + void *memcache; > > > + kvm_pfn_t pfn; > > > + gfn_t gfn; > > > + int ret; > > > + > > > + ret = prepare_mmu_memcache(vcpu, true, &memcache); > > > + if (ret) > > > + return ret; > > > + > > > + if (nested) > > > + gfn = kvm_s2_trans_output(nested) >> PAGE_SHIFT; > > > + else > > > + gfn = fault_ipa >> PAGE_SHIFT; > > > + > > > + write_fault = kvm_is_write_fault(vcpu); > > > + exec_fault = kvm_vcpu_trap_is_exec_fault(vcpu); > > > + > > > + if (write_fault && exec_fault) { > > > + kvm_err("Simultaneous write and execution fault\n"); > > > + return -EFAULT; > > > + } > > > > I don't think we need to cargo-cult this stuff. This cannot happen > > architecturally (data and instruction aborts are two different > > exceptions, so you can't have both at the same time), and is only > > there because we were young and foolish when we wrote this crap. > > > > Now that we (the royal We) are only foolish, we can save a few bits by > > dropping it. Or turn it into a VM_BUG_ON() if you really want to keep > > it. > > Will do, but if you agree, I'll go with a VM_WARN_ON_ONCE() since > VM_BUG_ON is going away [1][2] > > [1] https://lore.kernel.org/all/b247be59-c76e-4eb8-8a6a-f0129e330b11@redhat.com/ > [2] https://lore.kernel.org/all/20250604140544.688711-1-david@redhat.com/T/#u Ah, sure. We've never seen these anyway in any situation other than "I've mutated this kernel so badly it's closer to a hamster". Thanks, M. -- Without deviation from the norm, progress is not possible.