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 20B79C83F1A for ; Mon, 21 Jul 2025 16:47:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 928936B0098; Mon, 21 Jul 2025 12:47:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9005B6B0099; Mon, 21 Jul 2025 12:47:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 83CC96B009A; Mon, 21 Jul 2025 12:47:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 722306B0098 for ; Mon, 21 Jul 2025 12:47:55 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 45C351A0113 for ; Mon, 21 Jul 2025 16:47:55 +0000 (UTC) X-FDA: 83688853710.22.A917998 Received: from mail-pg1-f201.google.com (mail-pg1-f201.google.com [209.85.215.201]) by imf30.hostedemail.com (Postfix) with ESMTP id 85D0F80004 for ; Mon, 21 Jul 2025 16:47:53 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=bNEJ3ELc; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf30.hostedemail.com: domain of 3OG9-aAYKCFsL73GC59HH9E7.5HFEBGNQ-FFDO35D.HK9@flex--seanjc.bounces.google.com designates 209.85.215.201 as permitted sender) smtp.mailfrom=3OG9-aAYKCFsL73GC59HH9E7.5HFEBGNQ-FFDO35D.HK9@flex--seanjc.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1753116473; 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=JeSv3gHvUTPTfLdAm/yvdFeSA2QB26knaAlvT/a7PFE=; b=1axsnUMNVzfupxL9ApLRFPjgb+kHR3SwT5ByQaJxGlD9Xtt3V/ByZfA7gBg8to1YkEJnrf ewOKmfL060Pmxu+Lx/RfpF4w3qxFGEuKhfK7wmwYTpOGgHAtwKfAlnt9pFibdmcnNEgg+t huk0aV7IKQRNW1tQb9wBZJnUHsXXes0= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1753116473; a=rsa-sha256; cv=none; b=hmKGmqUQAC+7OsfTVuT5kQuZW0R+biL9mm7J4BvdsIhp8aJyen/ac2Q2RoaGJn1uwHHobQ GsWOBSO1oZ9ObdJfnJpltKW5iBHmQkxwW1chDegfLLf9LzaWx8Bd7G2VGDwR5XK9GVBc6U 8M/72DLAcQhiCWu1aidU6tEzZjLB/rw= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=bNEJ3ELc; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf30.hostedemail.com: domain of 3OG9-aAYKCFsL73GC59HH9E7.5HFEBGNQ-FFDO35D.HK9@flex--seanjc.bounces.google.com designates 209.85.215.201 as permitted sender) smtp.mailfrom=3OG9-aAYKCFsL73GC59HH9E7.5HFEBGNQ-FFDO35D.HK9@flex--seanjc.bounces.google.com Received: by mail-pg1-f201.google.com with SMTP id 41be03b00d2f7-b3510c0cfc7so3077089a12.2 for ; Mon, 21 Jul 2025 09:47:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1753116472; x=1753721272; darn=kvack.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=JeSv3gHvUTPTfLdAm/yvdFeSA2QB26knaAlvT/a7PFE=; b=bNEJ3ELcNyVxmr+y+BVvCpjbaUy5NQ/R3nKPSHbMUIe6pv+uQeVy4PNRWBLTr2rblJ JMTRWuG/3Houbn9NO1HFIgrYGt4voy90S/VYWrjbN9L6fO9ledfg4VNklDvbU6RxhRb7 3iXf/kpvhdZk597I/rTFURI6i5dFRSk0A/N2+H3ICF79nH7xoB1q2vsRmQI1KoRITPBG ya5YlBT2cJoDjQIFlUM63o5fmTW5nuBDELih1fOuAgolEJIHnOcsDhm8IaHEvVUgY9Xa 12NNgKwOO7o67+sC779hjqGLfyMJ8+R0HqMRdvN+PWXxjjoLTGKis34FlylUW+cCvDGn iWZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753116472; x=1753721272; 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=JeSv3gHvUTPTfLdAm/yvdFeSA2QB26knaAlvT/a7PFE=; b=Lx2khC2xMhU9pziQjdzHRAfMwcwSP0CAHGvIFDIv9gq8HSL0qhQVObvIfu/NGXFweM 7rHUInKj1DngKXBxRdTWijJEtD0Op8TpHrDmi47t/QlMG77fomjqiBLOq928Aq8Z0Sez fop+oRZur2pTZ6JApZSW/8E0thfVJEqsUkkjeTI18dF++pEAyx4izOdpDUQKk4+ghyp2 +5/u62p/F92R2Jv6/GUZ9ppZuIpnuhUsbQX828TZjvs/MeAZa0PQrO2OvpiHE9Ffma/I Vf1x39RE3jHQH1JhnRPPlLURA7FwYFLXjZb61g7L4AAl95U5i6jvRsIxDHMqnk1g6S2c Qpiw== X-Forwarded-Encrypted: i=1; AJvYcCWlGp/mGk944WjKmGUtlOlKKG+mqbo4CGJfTMGiGNCirB/E9f/dy5B3gcljKtVejUPwLkvEJqPlUQ==@kvack.org X-Gm-Message-State: AOJu0YwtJfDRcoVhW5jVwmhv2ehAaJgj65lp2DrdJrI02qH8cGkaJ2TF 6zcEB+HI9HM+LYYduvtvPKXfc4NbNE5uaPCX5/WwONWiS+QLZ/TRSl1HvbDb1p4sMNZDEVvwgfj cyS3ydw== X-Google-Smtp-Source: AGHT+IE/cOKwq4Fz42CXevBf86/8AcgfZ4Shrse64gwOZtr6yxqQauczM06pGk5soclLR2YvbV9vIqjBOj4= X-Received: from pfbhd13.prod.google.com ([2002:a05:6a00:658d:b0:748:f98a:d97b]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:7d9f:b0:232:1be:1e09 with SMTP id adf61e73a8af0-237d7545cf7mr36104602637.34.1753116472317; Mon, 21 Jul 2025 09:47:52 -0700 (PDT) Date: Mon, 21 Jul 2025 09:47:50 -0700 In-Reply-To: <20250717162731.446579-14-tabba@google.com> Mime-Version: 1.0 References: <20250717162731.446579-1-tabba@google.com> <20250717162731.446579-14-tabba@google.com> Message-ID: Subject: Re: [PATCH v15 13/21] KVM: x86/mmu: Handle guest page faults for guest_memfd with shared memory From: Sean Christopherson 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, 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, maz@kernel.org, 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="us-ascii" X-Rspamd-Queue-Id: 85D0F80004 X-Stat-Signature: 8tin893j1rwhqhy1dj6ep7h3bmwi99xj X-Rspam-User: X-Rspamd-Server: rspam11 X-HE-Tag: 1753116473-621073 X-HE-Meta: U2FsdGVkX18xNJNlILEu+L0L2YOhIwipIn6sWjvZ9u2AML9URP85+YmWwVQGmWrTNg/VIeGaM2FHVTaY+Xm2v6yXJ4E+nL0c6mEqGR92clybdTmoQr6QcASHRgBxceL1r+bErLDOcySscrAcEMpLIwYbdqenDo1GjxObwXjjlH0CKvNUEJyVTN6Cst3BDzC9oEdvVDCoNYQO45fzbz7XvAg5ofROn2lFjOh2fYG3XpAq1s03FzDeUQR65QBYbO9HgyuvW4p6oT22gHFayhSwsQABAvj8CQMRfiVAzERdZM0w+FaeuAbj1nUtfQfjKFoHv3dKRRETPbjrqo4McX2I2dIXbS+aa9EbA/ECtHTS9lsYTTTaPKBsOW31kskkP4KTk2AM+MWfOw7MeiP0NxqPINg3JLgwGQgYg15DPNY4g9hiJxteKI2hyINZQ140vc0YLs36Y7UKnxTM/dP2jI3EUumbRtyhP4663X53xUQuOUuNA+9j2iaj/dTGwQj+Ugjj0Wj8sEXgc85EFQtmp+BoDdzzxhUFq1XFGTGsKzkPrJrny9wfEHWF/nkRgzjSQYdqKPa+cvGRjrcou2ng9fBLQf8OzMRE5NPs7sR+wCVgefvtJ//1+Ly1GjKV8AcSXZK1oYea2vnCE0GJP0DaFMM28uYqtP1WtZqroZKShTLgffXvfuRfP4DeEQgZ3VqKU10w3UPShN1R/qTJImkFRSHTrTZLiDVGvuxMf1UkOnqYAPccsq1q58sr63e7Ths0Fl3mw/EKfeKlqBnHDRGENizmHbZd7n66kmZyiSgxa6uQxtFzrky7kckd8r3bzEg5NT1l1uRjkJ3z2GCIoyhxkvgHEW0xbAdVmGxWf9S0XLTP+4QqUwYG8BHu4H0jwYaHbjv0u4FMlehMIIyCwTaVWte19XL3kBsT0rJ1enZpmt8/jTfDhBd9wFFLjzkoRYt42QMXsob5PXKBnx4+MgDQVWo bm3MOeCr Y0QxvFvYEXoByh/MpNKq2bt0lpU8pCVUq4spRVM8Qk2NoBZNT5WTN15zZD3X8JyVKpzcxrnRNwuJuJ+1cYPiphJZ13NwnJC70+krl5X5Y3hdmtz/qAFPuR+kw4GXegTZNs484SULD3FAhFghdoia7UiA93jovDswl0Gbw/klWPRmNrSZbGAE6LyH2Lkvkt6JOn8bHqOoY8pqVYVwPRaUlEwlZmrK+0d+28eyVdgwOc/mv70YgDZ643FOXwLSwK68n3qgb5iKEfiMvWadLpttQ2gbCiwywPXoGOQKW4P2Y7lc71X3Hn5eSAvLl7ja/26f9U9DH/XdLXVRtw5koz+/RwxFyDZKwB8yiQDAGR9Ob1frZ9p+U0ijSc39tos0RiOLAyYWq0BnETtReZMtI7C9HLlYN5iOZliFdUKe34USkStT03KpXqCeFjr7ZL4h9QDjwo4Mwj0NuFCM/sng1zvet6DOkLoJtNw6Vp0Uwv/yGxgGutCgqMXSOretBtgBWIyk5mJVkn6ZaLWO8G9/kaBrJ7nWwFC6xLJHeNLcIcJeDt8heQAeIhZMnvsMVyCeT1SMwmc2csmSqwRYH8S/A/Vd6pqXxkDoTDGRERnkaMPIdhNvU5L4U0PHPPFBhM6fFIMaJbV3xTem7ssNxI06XvoJvgDCmM8NzpP6TX3q1mcal03DObtM5eaJxCfzGybPxqMazXGkmTOY+3XJ1enfHXg7fl+eZBA== 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 Thu, Jul 17, 2025, Fuad Tabba wrote: > From: Ackerley Tng > > Update the KVM MMU fault handler to service guest page faults > for memory slots backed by guest_memfd with mmap support. For such > slots, the MMU must always fault in pages directly from guest_memfd, > bypassing the host's userspace_addr. > > This ensures that guest_memfd-backed memory is always handled through > the guest_memfd specific faulting path, regardless of whether it's for > private or non-private (shared) use cases. > > Additionally, rename kvm_mmu_faultin_pfn_private() to > kvm_mmu_faultin_pfn_gmem(), as this function is now used to fault in > pages from guest_memfd for both private and non-private memory, > accommodating the new use cases. > > Co-developed-by: David Hildenbrand > Signed-off-by: David Hildenbrand > Signed-off-by: Ackerley Tng > Co-developed-by: Fuad Tabba > Signed-off-by: Fuad Tabba > --- > arch/x86/kvm/mmu/mmu.c | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > > diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c > index 94be15cde6da..ad5f337b496c 100644 > --- a/arch/x86/kvm/mmu/mmu.c > +++ b/arch/x86/kvm/mmu/mmu.c > @@ -4511,8 +4511,8 @@ static void kvm_mmu_finish_page_fault(struct kvm_vcpu *vcpu, > r == RET_PF_RETRY, fault->map_writable); > } > > -static int kvm_mmu_faultin_pfn_private(struct kvm_vcpu *vcpu, > - struct kvm_page_fault *fault) > +static int kvm_mmu_faultin_pfn_gmem(struct kvm_vcpu *vcpu, > + struct kvm_page_fault *fault) > { > int max_order, r; > > @@ -4536,13 +4536,18 @@ static int kvm_mmu_faultin_pfn_private(struct kvm_vcpu *vcpu, > return RET_PF_CONTINUE; > } > > +static bool fault_from_gmem(struct kvm_page_fault *fault) Drop the helper. It has exactly one caller, and it makes the code *harder* to read, e.g. raises the question of what "from gmem" even means. If a separate series follows and needs/justifies this helper, then it can/should be added then. > +{ > + return fault->is_private || kvm_memslot_is_gmem_only(fault->slot); > +} > + > static int __kvm_mmu_faultin_pfn(struct kvm_vcpu *vcpu, > struct kvm_page_fault *fault) > { > unsigned int foll = fault->write ? FOLL_WRITE : 0; > > - if (fault->is_private) > - return kvm_mmu_faultin_pfn_private(vcpu, fault); > + if (fault_from_gmem(fault)) > + return kvm_mmu_faultin_pfn_gmem(vcpu, fault); > > foll |= FOLL_NOWAIT; > fault->pfn = __kvm_faultin_pfn(fault->slot, fault->gfn, foll, > -- > 2.50.0.727.gbf7dc18ff4-goog >