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 3B1CCC5AD49 for ; Fri, 6 Jun 2025 09:30:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CBB846B0089; Fri, 6 Jun 2025 05:30:40 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C932D6B008A; Fri, 6 Jun 2025 05:30:40 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BA9F06B008C; Fri, 6 Jun 2025 05:30:40 -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 999A06B0089 for ; Fri, 6 Jun 2025 05:30:40 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 4A4E5141102 for ; Fri, 6 Jun 2025 09:30:40 +0000 (UTC) X-FDA: 83524455840.05.72A7E1C Received: from mail-qt1-f179.google.com (mail-qt1-f179.google.com [209.85.160.179]) by imf09.hostedemail.com (Postfix) with ESMTP id 4085C14000E for ; Fri, 6 Jun 2025 09:30:38 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=nhRcAoAJ; spf=pass (imf09.hostedemail.com: domain of tabba@google.com designates 209.85.160.179 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=1749202238; 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=AHMke6C+g7YRY9qvjK/py0IA+evmz7x9/AgLeMPLZq4=; b=V1bbyKADSXOHtA8HCLKrFHAadV9F9MlDKJ77vxX/jjNfB+wfqCkbGa27KzyGoa/uvnjK33 0McmJjC6hBSKGCTvaXrqcVqD9iT8SZeHShwjYaOPfm8VzkTqDXyo+QLe84D/oA03/0F0BY raZtMUZCRGFGqjfOVHqHkZWBSVKF6MU= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=nhRcAoAJ; spf=pass (imf09.hostedemail.com: domain of tabba@google.com designates 209.85.160.179 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=1749202238; a=rsa-sha256; cv=none; b=qNzUb8eKw0ZqNv4zT0Abo2qTptnn7xhBi+liKF24qpYLUHAtLdabIfIipORKsMAfBivkZ1 8dDTrHXixXvV9MkGQgjghn4/o38LTchZZT5PaUCdG2RAxe/VKoszde+UzbH5+tqyQPsbkz CrA+mfWibkirDOhsMbx1SM4n3XwFEHY= Received: by mail-qt1-f179.google.com with SMTP id d75a77b69052e-47e9fea29easo292131cf.1 for ; Fri, 06 Jun 2025 02:30:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1749202237; x=1749807037; 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=AHMke6C+g7YRY9qvjK/py0IA+evmz7x9/AgLeMPLZq4=; b=nhRcAoAJAHxbAEJFntazLxkW7crjhia7vXK/k0PbkqJUsX98kir3HMTpia7+v6AI8X vK9dbvOjr5zdzdXHM0HRnra0k+8q/Mu5XCpuG4Eu2ynC+B2oJ4pIPn2TBz52qeb+GmkZ +IE1cueJ7UhqLM4jdp1bAR7wRI7q+0L/k0dz5ztMJrmWcCrQaeoYfO+4zm664W8E2yHI x9zRJktvU2HlBEv+U6O2MIYK/2Xz+me6K8ks9sOjT1fz9XYQxn5ZCX6Ig0PTZfpA8Ilp /nQo35eTihlRDIvBWnofmbnvzOhtXoohUkJNWetrzFWl5peydQMtf7xuYFKFUgzJCYTF jM2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749202237; x=1749807037; 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=AHMke6C+g7YRY9qvjK/py0IA+evmz7x9/AgLeMPLZq4=; b=O5WgS4c1qExHKMvzVv/bP1AxgBTsuNRC2rJEKyrT91jAmq/85+YeKhIQiII/4inhWO Uf0pzZ6qISEUq74ewiu7ViAEj7JOCzfpV12L13mc+pbVJjxuYMh/caBnSptLYB0Gc3a6 ZbrTETxEyH11qSM3M0bUW2CUeigImMcq2mHzEmG3ovJuxT2uYexPKfw9f8LLy6b8Sz8A s0gbcDPptTUcjefVlip7vmwiUlC3JqZ47EmUeyHAHeLt0fbj4dch1vZHQcRu5u1PhWVz zxQrJzXLYrRgXkh3vLljLX4n+7UdrjJK5uBWi6BO4twxjSm2dtVASV2baRZHVkVLYcH0 1bGw== X-Forwarded-Encrypted: i=1; AJvYcCV7UPYBPQWt93fYj8XFNQM695nbPwb/LT6yM7orXk8wkMCbaNaOIh7j9u2v8y579Zlxv4ZJ/e64VQ==@kvack.org X-Gm-Message-State: AOJu0Yy5JWa4X+Y0kzoHXqeL8sYq9VmKx625SqNcGcuLgquIHsIGg4qU FfEimLkg0smdAZgLQPkmbhd3EemSE6Q7wsSDPE04O16Rs0mUr/hyJcuVbqQAS6NLtlgKD/g//Il 8NTh6ncXruu7xzxTlf82lWPs2afAzz1zPQ1tDIfuy X-Gm-Gg: ASbGncuNn5utjsxSOZ87oYrR8NXNPgVyfBCj+CkAZHFf6r3wWWhU+2RSfAt/pU+7v4X FpLkFnhgu3bb6YmERpMY6xYcadYuTISj6BLGEL7c22FYCAc1Prh6GdKtpvX3PcSTUeO1u2UUsPH bdpIo9r0W1nCx57iy/AeFdMdz/MnmN4I1vfX65u37KK94= X-Google-Smtp-Source: AGHT+IH0ZdQDgWYn0D1IxBbNogXfkYZpSsJPMcWn3ZIbTJ/pAnpfxFEKuRL8D1abQDg1x7njp8cRUPduA0bIkHHCnys= X-Received: by 2002:ac8:580b:0:b0:476:f1a6:d8e8 with SMTP id d75a77b69052e-4a643bafe10mr2073391cf.11.1749202237028; Fri, 06 Jun 2025 02:30:37 -0700 (PDT) MIME-Version: 1.0 References: <20250605153800.557144-1-tabba@google.com> <20250605153800.557144-9-tabba@google.com> In-Reply-To: From: Fuad Tabba Date: Fri, 6 Jun 2025 10:30:00 +0100 X-Gm-Features: AX0GCFuvjlKB2JP904W-jAiPrFFo9C41E95GRy92kulxqRvrv_hy1VMtB0oS2WQ Message-ID: Subject: Re: [PATCH v11 08/18] KVM: guest_memfd: Allow host to map guest_memfd pages To: David Hildenbrand 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, 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="UTF-8" X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 4085C14000E X-Stat-Signature: cw3wfffyoozbbwhkif7ebk6o75387q1f X-Rspam-User: X-HE-Tag: 1749202238-892086 X-HE-Meta: U2FsdGVkX1/fDITK+gYZNxmZwqf74thef5eznvsjdug6212c0uubIVLYZA3Fi6IqsmTLb2cvr5/GS99LEIo26H4CbL6Su6bc/YJlV5h8vVpiyQcgPmm58OC01WAD036oMotsM8H1vVINjeeW4dMKrWQtn2obhiM1vZIN5UXvLibMbogKWO+lf/X8q2tkYaIbOQVOtO+fywNo58zpi32qYBKSy18Unx2zFsNGueMTmvirWQHyb9o5zU4vsKayZWKGG21MB9wFKrKbxqdncDG1G2fKxqrAr35fKWbJx6YxYEJbjkIwSq6xwT5NhBA5E80vPh2E8Ax+PZM6IG7qWG8auTBd7qO2BJ92BFdC+awBsFwD4aqhj5DloGgjPJ4DYMUAyiWpnkX9egAzBqHfK1B7rDkPx+II1AdBXXLlgRKyEtu043hcx8nAqfa/w+JOKaK93bgLwyJnV8l0+vHEjqjLKtUoAV00PrGWAlvmbKmy/zllXJORC4UHgwZ+Wv9f/yuM70UsvkwTFVIsBMlBs+mBGXe30niU2494WPmF9ZXVDsv4y8ZGW3RwHCkDhNP1nJfvkS7NLjhALwbsz4dtUyKtuZHR9nTQFYOlVKwVy4s3x6W0Fri02sY35ONvmu7SvMOFFMI8C9Uo0tGsv6j3L9hqiUwGQrWdGj13Gb2fVaXF4+fMQuLmo27hLTclyygj8ix/9lkT++BGw/54EVCPVfzI+f4TYRlN6R7QZSVnbeKTQ7fltFNEWfeiQB4vlHNrrZTknNA97p4l2RjxTm5OY+AnPGw9HB5FvWZOJCr2YcChbyfky8Vj4AP9nphpNP7CexazMikHpkLIt27HfQde4LNuPaVX9Kx5+h+Xwbh2u6wPSlMUPzUz+PggZw6OtfHpd1uhdlBQpSqLQfm8jDP8lwfgN5aqwx/KsAcooxptfDmuPTAakJhjbjmSej+s99EuyazKIghA0BQDIyjswwUxLj+ 3dMUEvG6 LvhIAJngLlMojsP8Ind4vwbZ7R/ZLaIcTlJoRYfFfGfqlVdU/TYwzYQ/LuSwMar9+GPgBIQdZN7SZvM83vtc+IUFAjWw6UbwSrjV3OsR2lQij1fqEaTz5+V2xmwWNjdv3o7AXDhPWYGsAs9j0uKvtce+9VuqHrgNDsC7/oA+DiocoaYC229tCzX8G0Y7/lSC41z/JKmcTOGYQSvbNRA06SgKxLXtxY4yU2uZSRFt8fqipyLzL9bXHw65XRz4iwWSyP903fF3kFsyVbD77wRf/0RlETi5e1JaJeuJPTH5AHleyKjMcTuuTj1ZTOwvnDt03clmz3Fg/eq2eijD/ZadmFPHAtjUAvskKMs+7qVeoxKiGrAUzaExjMS0S4YhYNo9mdvhj 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 David, On Fri, 6 Jun 2025 at 10:12, David Hildenbrand wrote: > > On 05.06.25 17:37, Fuad Tabba wrote: > > This patch enables support for shared memory in guest_memfd, including > > mapping that memory from host userspace. > > > > This functionality is gated by the KVM_GMEM_SHARED_MEM Kconfig option, > > and enabled for a given instance by the GUEST_MEMFD_FLAG_SUPPORT_SHARED > > flag at creation time. > > > > Co-developed-by: Ackerley Tng > > Signed-off-by: Ackerley Tng > > Signed-off-by: Fuad Tabba > > --- > > [...] > > > +static bool kvm_gmem_supports_shared(struct inode *inode) > > +{ > > + u64 flags; > > + > > + if (!IS_ENABLED(CONFIG_KVM_GMEM_SHARED_MEM)) > > + return false; > > + > > + flags = (u64)inode->i_private; > > Can probably do above > > const u64 flags = (u64)inode->i_private; > Ack. > > + > > + return flags & GUEST_MEMFD_FLAG_SUPPORT_SHARED; > > +} > > + > > +static vm_fault_t kvm_gmem_fault_shared(struct vm_fault *vmf) > > +{ > > + struct inode *inode = file_inode(vmf->vma->vm_file); > > + struct folio *folio; > > + vm_fault_t ret = VM_FAULT_LOCKED; > > + > > + if (((loff_t)vmf->pgoff << PAGE_SHIFT) >= i_size_read(inode)) > > + return VM_FAULT_SIGBUS; > > + > > + folio = kvm_gmem_get_folio(inode, vmf->pgoff); > > + if (IS_ERR(folio)) { > > + int err = PTR_ERR(folio); > > + > > + if (err == -EAGAIN) > > + return VM_FAULT_RETRY; > > + > > + return vmf_error(err); > > + } > > + > > + if (WARN_ON_ONCE(folio_test_large(folio))) { > > + ret = VM_FAULT_SIGBUS; > > + goto out_folio; > > + } > > + > > + if (!folio_test_uptodate(folio)) { > > + clear_highpage(folio_page(folio, 0)); > > + kvm_gmem_mark_prepared(folio); > > + } > > + > > + vmf->page = folio_file_page(folio, vmf->pgoff); > > + > > +out_folio: > > + if (ret != VM_FAULT_LOCKED) { > > + folio_unlock(folio); > > + folio_put(folio); > > + } > > + > > + return ret; > > +} > > + > > +static const struct vm_operations_struct kvm_gmem_vm_ops = { > > + .fault = kvm_gmem_fault_shared, > > +}; > > + > > +static int kvm_gmem_mmap(struct file *file, struct vm_area_struct *vma) > > +{ > > + if (!kvm_gmem_supports_shared(file_inode(file))) > > + return -ENODEV; > > + > > + if ((vma->vm_flags & (VM_SHARED | VM_MAYSHARE)) != > > + (VM_SHARED | VM_MAYSHARE)) { > > + return -EINVAL; > > + } > > + > > + vma->vm_ops = &kvm_gmem_vm_ops; > > + > > + return 0; > > +} > > + > > static struct file_operations kvm_gmem_fops = { > > + .mmap = kvm_gmem_mmap, > > .open = generic_file_open, > > .release = kvm_gmem_release, > > .fallocate = kvm_gmem_fallocate, > > @@ -428,6 +500,7 @@ static int __kvm_gmem_create(struct kvm *kvm, loff_t size, u64 flags) > > } > > > > file->f_flags |= O_LARGEFILE; > > + allow_write_access(file); > > Why is that required? > > As the docs mention, it must be paired with a previous deny_write_access(). > > ... and I don't find similar usage anywhere else. This is to address Gavin's concern [*] regarding MADV_COLLAPSE, which isn't an issue until hugepage support is enabled. Should we wait until we have hugepage support? [*] https://lore.kernel.org/all/a3d6ff25-236b-4dfd-8a04-6df437ecb4bb@redhat.com/ > Apart from that here > > Acked-by: David Hildenbrand Thanks! /fuad > -- > Cheers, > > David / dhildenb >