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 19827C3ABC9 for ; Sun, 18 May 2025 15:18:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 81E7D6B0082; Sun, 18 May 2025 11:18:05 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7A5726B0083; Sun, 18 May 2025 11:18:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 61F1B6B0085; Sun, 18 May 2025 11:18:05 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 3E6C96B0082 for ; Sun, 18 May 2025 11:18:05 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 553741A19C3 for ; Sun, 18 May 2025 15:18:06 +0000 (UTC) X-FDA: 83456384172.17.3A73D11 Received: from mail-qt1-f174.google.com (mail-qt1-f174.google.com [209.85.160.174]) by imf17.hostedemail.com (Postfix) with ESMTP id 54E8F40008 for ; Sun, 18 May 2025 15:18:04 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=oGmbW+Fm; spf=pass (imf17.hostedemail.com: domain of tabba@google.com designates 209.85.160.174 as permitted sender) smtp.mailfrom=tabba@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747581484; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=89H6l5EPE7llhy2U2sdeyWXbsFYSBwqQ2gw98qt9JjI=; b=ozghbCGhbcaeJlz2jc7P16SNPVrXoy63/mUNTEXRKSQT5xXfyzThG73IaqvhVGb+Rso0bR 4REzT+WY2p19l+nSBrYtJq7/nKJtypjkR7d3XkfTBuVGyGmaepNyWGPY1nFV5S80qygI6/ vMgrbpu8DBVTivsHgAhTvzyhs32363E= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=oGmbW+Fm; spf=pass (imf17.hostedemail.com: domain of tabba@google.com designates 209.85.160.174 as permitted sender) smtp.mailfrom=tabba@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747581484; a=rsa-sha256; cv=none; b=Xs7yrufnoviY44VgUveI8eMmUtpzqAqMsLI3tz6jlTBaf2WXZxplXiUahEtZ5XAsU0NXCp iRnPyx4HX1CumcIZFya53GB930LFDPQVmvy4b+NLVntApFWPG4vtDbfMjzjI1hZlyojOG2 pc5b6+inrk1n5qKqqnaNksacn/HbLfc= Received: by mail-qt1-f174.google.com with SMTP id d75a77b69052e-47666573242so370761cf.0 for ; Sun, 18 May 2025 08:18:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1747581483; x=1748186283; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=89H6l5EPE7llhy2U2sdeyWXbsFYSBwqQ2gw98qt9JjI=; b=oGmbW+Fm7dpMLrVp/esF1G2eZxfFxGQDUJgFz7fe87MBIai+qEFqqrEOXmjKpHZYNj c3bYBlr9aaos1fXACTXzIAmIR2Y/VXoIo1HMPvrYjRB4jPbk+PufkpsQW4WsOy1vp2qB JIhZEyAaWGHuG0mZOXDBUOglTyKDQJxO+B9Cow0dKgXHkeHRNIxB3Ju+vqIQRBjcyj5G CRC5UR4ZSamERA40zmlrOQ07SRdZtjgq97uLABxX/RZzQS7XG9u32F0JZQEUHne09/Tf UoiiteiJp3DGeZh2lh8R5F+C/3ttNneSLp1dP+jnkelxjxAhp4isLRPzi046hjUIklBr AAsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747581483; x=1748186283; h=content-transfer-encoding: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=89H6l5EPE7llhy2U2sdeyWXbsFYSBwqQ2gw98qt9JjI=; b=bDKJ8GGL3x3wL5SZWZR9H90f2btZR+Ems+j421tj4b4TxR5Za2RTzAmNkq0YCITrLu 7qFfNZv4sAvc8Q8GQEq2U1dllS6+YuEiPGCPM8l+dGwarjiFr2lhQ1NKxb2Fh7ojbqQe v4LvD7d+MDx1JibaIPUABPi7UAQsD5UBKeSLDC3TlbJKYB5wenIu8396+5fDi/j508am jzViS9npxPABr40fRg1/q2Bb8AHktQGAjIPPrn2U/yGBJAgwdT2JGCB6EKj0cav7KFB4 q4NmLJ40K+T8PI6IjxGO2k0Y84Zq5HfmHRF38i8O2bbUjpd1NQ7JIYvebrYJmDAU2JU2 PJ9g== X-Forwarded-Encrypted: i=1; AJvYcCXSr+00OtNdcvr27PZggWWMgKm/eRVVRuxUt87O0XTCpFg/gj0T5D4+IapOEErxOKR770ozql5uDA==@kvack.org X-Gm-Message-State: AOJu0Ywg9VzF10NGaXCe87VOozr6zXUOcYB2MLyqLdlMi+mIR0i8a+nA bhJRMreX0zoLhrT78OzO27HpvBWzTv/kk0Yi/FPRHm6e+qL7vjZQD1HU1H7nZpVaq4RtXtlgT99 Beoj4ClsmJbCNIpSXiyRBdoIvIHUmOAH6uN00cDyT X-Gm-Gg: ASbGncti4PIUsbIOHJzb5Hu5JJJponXSMpJC//dsEwOgJeZsa5dbnIE9Jge6R0kQztT O63BOl3BWDqjtnndkbzZPszge2lY307A63hwUGrj++C7kLFhJjfAky5iw6pIojKoshLetW/r2Rq hcynFt9iJH0p0NTMH1XbTWzwYrVAu70ygMTEWtK+0WVMrFZ2b4ruSHC4E= X-Google-Smtp-Source: AGHT+IFRzewsTYnfRaUxtfMHOlJKr+aHtCr5bWwYiAywfSAbjQ0plDNnk3E1Hhl9zLOMpM1iIOObSO8HVZNQbyqIF1E= X-Received: by 2002:ac8:5a8e:0:b0:477:8686:901d with SMTP id d75a77b69052e-495ff6d3f0dmr3340951cf.1.1747581482781; Sun, 18 May 2025 08:18:02 -0700 (PDT) MIME-Version: 1.0 References: <20250513163438.3942405-8-tabba@google.com> In-Reply-To: From: Fuad Tabba Date: Sun, 18 May 2025 17:17:10 +0200 X-Gm-Features: AX0GCFssYVagTak9Gz2PtNx886k7vA2OBbm85fBLGgkvBAmAIyAh5VjNRHYwgYY Message-ID: Subject: Re: [PATCH v9 07/17] KVM: guest_memfd: Allow host to map guest_memfd() pages To: James Houghton Cc: Ackerley Tng , kvm@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-mm@kvack.org, 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, 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, peterx@redhat.com, pankaj.gupta@amd.com, ira.weiny@intel.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam10 X-Stat-Signature: kae1z3d3kuuizxkfdqenkrj6cix9pj8r X-Rspamd-Queue-Id: 54E8F40008 X-Rspam-User: X-HE-Tag: 1747581484-585457 X-HE-Meta: U2FsdGVkX1+S3vOZ0ZTTrsRi8XZv8CH+E2xURZ6Tux0QQbVIPglt3kypuJNmlCZQ9ASqBQVP+h103iHO5wShKAchtJzX0KAsDZC4ossvKjkMBFUyRhgSVrwyRTq0/GLdg/FbSc3c1zPLKHwvDxipvjEsgnuZeZXZoPerJwwbM2b9JFWtUE4yPhdRiXrAJUCqak3m+xjSkCCc09j/xHmfRSSdGbfWQqe/BLx31T9acGHLHP9h6+gXM5z61EmjgL3Ph++4I+oGPMReA7JtkfIZd/UzKU+f/MCbazmlle08c9MBka8ZlYmWuxnITk7klBTlKUMuVGBCOeko0Bf/NGL+MMmBUkCo6iV+TdQCDk5XQC3jYE3AB8n5+sk6/eQ245nwCEvivF+K/SjmriG3S+UuitNNEczeBihajDnQcswYLlZiuDe6Cq3MbTrUptI5su4cEye26bMj8JpQAgAIpgtmYUrEXmsD5lplT9vjF+arvrM2WtmJIenuuEi6XKPkog6rdeeXCzza8WjNPvV6ALfz6iJVe2UZCTTFbThMmi0cSA+RSaaliZVxGXuhh9BbBGDRWrh8UFIJw/9/W13G2bq/m8gVddvVm8RZ1NDA59bLxwnbkQmAD52BSbsiTfixDvd5rihUzfsjCQ/n1Jsug7RWk9aCN4Dr89Z4rCQtL8hw6+19xnKJEqDuTHTZm4wzARKPm7HRQ+Drn0wCKXIe/DE0HUc4I4ecac41rNpjPuGIIY3qz6YJVJaTFxJcZf5QcEeOkEaqVBjBlSE3aRlhQodYfrMjGA/UYSIouBbZMZPtqWiL1Viul44pn5RobyHBb1Sg/gqgThgD2N1nqLoPgmPa9CAclsgFdr2zkZxTyNeJNtBPDhZtSNKOszVkg7FA7WaxeN3xJs7wy41v6O8SG9l+X+Q4qkBzFys2B+EBNHLYOtODG9TriPYobMpiKR1k3n7kMKniUVItopRvNxVr3Az jP+1ubo3 ArZVVhT0edIDDWBQ2DI04mclgMUpu2Ei42eD9spj4gwlPDLsjFJP1w221FQL61UOWmHeLA5gQS83aSsPvWO7zfM3Y+usg24p90I/qmYcHQMdsoZrsZ5r9qNKaw/m041lDgazH92fcNkf0KdouxNgKf+V9jnqAJdzaJmc3XoRj3P5T9euxYN1FGvvZp2EzjDljmxrUbA52o+PCIXDPIIVfzIBhlFNjydqDqEYlQXu1jaFTrAlwTWBIAI5XuzPu0G1c+myKW0z6fPn98zns0PI2WI7fnRH72JWU8Q3Re29VffkC94mVlTEPmX/bqza2PQAGpmxziZn9iFmDLfH4bz6VnJvt+w== 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 James, On Fri, 16 May 2025 at 21:22, James Houghton wrote: > > On Tue, May 13, 2025 at 11:37=E2=80=AFAM Ackerley Tng wrote: > > > > Fuad Tabba writes: > > > diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c > > > index 6db515833f61..8e6d1866b55e 100644 > > > --- a/virt/kvm/guest_memfd.c > > > +++ b/virt/kvm/guest_memfd.c > > > @@ -312,7 +312,88 @@ static pgoff_t kvm_gmem_get_index(struct kvm_mem= ory_slot *slot, gfn_t gfn) > > > return gfn - slot->base_gfn + slot->gmem.pgoff; > > > } > > > > > > +#ifdef CONFIG_KVM_GMEM_SHARED_MEM > > > + > > > +static bool kvm_gmem_supports_shared(struct inode *inode) > > > +{ > > > + uint64_t flags =3D (uint64_t)inode->i_private; > > > + > > > + return flags & GUEST_MEMFD_FLAG_SUPPORT_SHARED; > > > +} > > > + > > > +static vm_fault_t kvm_gmem_fault_shared(struct vm_fault *vmf) > > > +{ > > > + struct inode *inode =3D file_inode(vmf->vma->vm_file); > > > + struct folio *folio; > > > + vm_fault_t ret =3D VM_FAULT_LOCKED; > > > + > > > + filemap_invalidate_lock_shared(inode->i_mapping); > > > + > > > + folio =3D kvm_gmem_get_folio(inode, vmf->pgoff); > > > + if (IS_ERR(folio)) { > > > + int err =3D PTR_ERR(folio); > > > + > > > + if (err =3D=3D -EAGAIN) > > > + ret =3D VM_FAULT_RETRY; > > > + else > > > + ret =3D vmf_error(err); > > > + > > > + goto out_filemap; > > > + } > > > + > > > + if (folio_test_hwpoison(folio)) { > > > + ret =3D VM_FAULT_HWPOISON; > > > + goto out_folio; > > > + } > > nit: shmem_fault() does not include an equivalent of the above > HWPOISON check, and __do_fault() already handles HWPOISON. > > It's very unlikely for `folio` to be hwpoison and not up-to-date, and > even then, writing over poison (to zero the folio) is not usually > fatal. No strong preference, but the fact the it's still possible (even if unlikely) makes me lean towards keeping it. > > > + > > > + if (WARN_ON_ONCE(folio_test_large(folio))) { > > > + ret =3D VM_FAULT_SIGBUS; > > > + goto out_folio; > > > + } > > nit: I would prefer we remove this SIGBUS bit and change the below > clearing logic to handle large folios. Up to you I suppose. No strong preference here either. This is meant as a way to point out the lack of hugepage support, based on suggestions from a previous spin of this series. > > > + > > > + if (!folio_test_uptodate(folio)) { > > > + clear_highpage(folio_page(folio, 0)); > > > + kvm_gmem_mark_prepared(folio); > > > + } > > > + > > > + vmf->page =3D folio_file_page(folio, vmf->pgoff); > > > + > > > +out_folio: > > > + if (ret !=3D VM_FAULT_LOCKED) { > > > + folio_unlock(folio); > > > + folio_put(folio); > > > + } > > > + > > > +out_filemap: > > > + filemap_invalidate_unlock_shared(inode->i_mapping); > > > > Do we need to hold the filemap_invalidate_lock while zeroing? Would > > holding the folio lock be enough? > > Do we need to hold the filemap_invalidate_lock for reading *at all*? > > I don't see why we need it. We're not checking gmem->bindings, and > filemap_grab_folio() already synchronizes with filemap removal > properly. Ack. Thanks! /fuad > > > > > + > > > + return ret; > > > +}