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 27954C02194 for ; Fri, 7 Feb 2025 16:45:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 897966B008A; Fri, 7 Feb 2025 11:45:48 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8203D6B0092; Fri, 7 Feb 2025 11:45:48 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 699096B0093; Fri, 7 Feb 2025 11:45:48 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 3898A6B008A for ; Fri, 7 Feb 2025 11:45:48 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 530ED4CC9D for ; Fri, 7 Feb 2025 16:45:47 +0000 (UTC) X-FDA: 83093725134.26.7D7D7BF Received: from smtp-fw-52002.amazon.com (smtp-fw-52002.amazon.com [52.119.213.150]) by imf17.hostedemail.com (Postfix) with ESMTP id 349A440005 for ; Fri, 7 Feb 2025 16:45:44 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=amazon.co.uk header.s=amazon201209 header.b=vnti31SJ; spf=pass (imf17.hostedemail.com: domain of "prvs=126b2568a=roypat@amazon.co.uk" designates 52.119.213.150 as permitted sender) smtp.mailfrom="prvs=126b2568a=roypat@amazon.co.uk"; dmarc=pass (policy=quarantine) header.from=amazon.co.uk ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738946744; 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=q7xTDS28+TP5gE07LEBmeY0j/rksTUzAlt42eYMiWY0=; b=SUmUdFEstFYaPLWBjUUf5FJRga4jb+5bMQwWVq+5po8xndoKQvk4L+FiVzQtMhYscrW1Uh 5uVk2Brqy4yjVfDi1TnsAziSKqz8UZoPFWNjQWZromoa/GzAILx2P2hmAHGepKbn8did2p enfm2flh6Rl1LqSRM/YveDXyhl/DLcQ= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=amazon.co.uk header.s=amazon201209 header.b=vnti31SJ; spf=pass (imf17.hostedemail.com: domain of "prvs=126b2568a=roypat@amazon.co.uk" designates 52.119.213.150 as permitted sender) smtp.mailfrom="prvs=126b2568a=roypat@amazon.co.uk"; dmarc=pass (policy=quarantine) header.from=amazon.co.uk ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738946744; a=rsa-sha256; cv=none; b=nCTzHvnnnfLF64AMylaAm+xcpYtLFyRqTKofkO9NRtxDaw3Wt8ZqINI/qUm5AhRjtQrxBq dOwiT8M3QcOBo0uTq6nvgpJExn/L6zLEAXdGFTOHCQOZ/GASq5QndO1dl4rzGNGPieZNsz Ljkmm6Mf9UKach34XZ/YIdPufy7U5nY= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.co.uk; i=@amazon.co.uk; q=dns/txt; s=amazon201209; t=1738946744; x=1770482744; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=q7xTDS28+TP5gE07LEBmeY0j/rksTUzAlt42eYMiWY0=; b=vnti31SJNAH3UGyz27v3s/Vbftx6cd72bLbqeRBjirC/hulp308/y4w3 W2yybvCxZOlk4Wscas2eZ+nJv/U17/TqUpRWnNvzLe/k/lA7pXz9nSq6i gfre/QHSQvbf04Z583p0rouqprRxuqN+C+dj3NUGDU9oPYS38ji0d6mqt g=; X-IronPort-AV: E=Sophos;i="6.13,267,1732579200"; d="scan'208";a="695293597" Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev) ([10.43.8.6]) by smtp-border-fw-52002.iad7.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Feb 2025 16:45:39 +0000 Received: from EX19MTAUEA001.ant.amazon.com [10.0.44.209:6027] by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.50.106:2525] with esmtp (Farcaster) id dee60c17-5d6e-402f-a518-ec17b6594e0d; Fri, 7 Feb 2025 16:45:38 +0000 (UTC) X-Farcaster-Flow-ID: dee60c17-5d6e-402f-a518-ec17b6594e0d Received: from EX19EXOUEC002.ant.amazon.com (10.252.135.179) by EX19MTAUEA001.ant.amazon.com (10.252.134.203) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1258.39; Fri, 7 Feb 2025 16:45:34 +0000 Received: from EX19MTAUEA001.ant.amazon.com (10.252.134.203) by EX19EXOUEC002.ant.amazon.com (10.252.135.179) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1258.39; Fri, 7 Feb 2025 16:45:33 +0000 Received: from email-imr-corp-prod-iad-1box-1a-6851662a.us-east-1.amazon.com (10.43.8.2) by mail-relay.amazon.com (10.252.134.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1258.39 via Frontend Transport; Fri, 7 Feb 2025 16:45:33 +0000 Received: from [127.0.0.1] (dev-dsk-roypat-1c-dbe2a224.eu-west-1.amazon.com [172.19.88.180]) by email-imr-corp-prod-iad-1box-1a-6851662a.us-east-1.amazon.com (Postfix) with ESMTPS id 8644C40575; Fri, 7 Feb 2025 16:45:27 +0000 (UTC) Message-ID: <0b1cc981-52e8-4f8f-846a-f19507e3a630@amazon.co.uk> Date: Fri, 7 Feb 2025 16:45:26 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC PATCH v2 03/11] KVM: guest_memfd: Allow host to map guest_memfd() pages To: Fuad Tabba , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , References: <20250129172320.950523-1-tabba@google.com> <20250129172320.950523-4-tabba@google.com> From: Patrick Roy Content-Language: en-US Autocrypt: addr=roypat@amazon.co.uk; keydata= xjMEY0UgYhYJKwYBBAHaRw8BAQdA7lj+ADr5b96qBcdINFVJSOg8RGtKthL5x77F2ABMh4PN NVBhdHJpY2sgUm95IChHaXRodWIga2V5IGFtYXpvbikgPHJveXBhdEBhbWF6b24uY28udWs+ wpMEExYKADsWIQQ5DAcjaM+IvmZPLohVg4tqeAbEAgUCY0UgYgIbAwULCQgHAgIiAgYVCgkI CwIEFgIDAQIeBwIXgAAKCRBVg4tqeAbEAmQKAQC1jMl/KT9pQHEdALF7SA1iJ9tpA5ppl1J9 AOIP7Nr9SwD/fvIWkq0QDnq69eK7HqW14CA7AToCF6NBqZ8r7ksi+QLOOARjRSBiEgorBgEE AZdVAQUBAQdAqoMhGmiXJ3DMGeXrlaDA+v/aF/ah7ARbFV4ukHyz+CkDAQgHwngEGBYKACAW IQQ5DAcjaM+IvmZPLohVg4tqeAbEAgUCY0UgYgIbDAAKCRBVg4tqeAbEAtjHAQDkh5jZRIsZ 7JMNkPMSCd5PuSy0/Gdx8LGgsxxPMZwePgEAn5Tnh4fVbf00esnoK588bYQgJBioXtuXhtom 8hlxFQM= In-Reply-To: <20250129172320.950523-4-tabba@google.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 349A440005 X-Stat-Signature: qxx511chh6e3metk9fafs9sr3pzemek8 X-HE-Tag: 1738946744-955426 X-HE-Meta: U2FsdGVkX18rNWSDZ52QCFuwuir17lCmh3jclCjhIbSNa5S7cylRm6a9HpcBYnVuac2by3v0HoClsuk91BzDl2Dv4jMCantVKxXRi6VivX9a20gA4m6GmxtcOg/zOq3UgXzfcv6W8s1tDsXPtgfbw4WDe7FgxDozPMvRKiv2wcnNjzbR5QBwVztJd3qr6oSyBYnlyqyr7952wmUDyoOzG9p2VAmz8Gst2Ab9bhEVkAYUgGOrRS2LL2pxQgrokOWdu9zFl/wVwVGmse9uosPpHpUMscGbfcNuC96Xv90DeYmakRhZVUhCfadu3cJ1LOL4bTeZ+kqq3KsXV5hx4HH2H0Cuum5hmpaE3wb03ZTVumAN4RQfAlW/a5b7Y69qd8KNsSl2XsAi2pNSvrGZwfTRv8kbWubV70a/6342ulkU/diKfmyYIF4pyQXWq1RuXsBJYysYoG6fMmRl1Ir1QQeFBz40o++3jVH07nRWv6mfa10OBF80r+//QY9Wnu185ejB1UFQ/hWBNmK9JyFVNc/HwhIz8bnSOYlU9kv/eT3c148Sr6ZeEwEBhrBD5BHMyzhXE0RQmwQHT9qJGymIlG/qTkM8YTHtAF6czw30WQVBhw9vUgEvemf/rNFv8LPUtEtTftJjEEeCf8Cx9uzp/MMdmMFEEAi2WKM+fFsMq5oPnItrJbKYiuVOhDXm83zuxnfuNQNQbS7Ihw9LncjFaAcYffU3MRBCaPEJTi9oqW0GmwGH11OVLIS9VyXGCQH1/2BB5NeTeIhZAhv1etoSqjYaWMxWJwYmRkTnc2qWupdTgz0mnlF/Ok19Xlyc1Iok5ZpHfUSOTx9vfyWuXVLeEK86B89jt9plYk5hVcUitkG2lRjweR8TAOxwK/FzmHNni/pNY62ltTWbqcfmohwd8IUTPegP5Z+KbkNDfARzgbU/7heZW2FIaq+UmiK4zMvCL4ppc4BIfDosQ4w84s9u4fH YKFn6uTf MC1s/55krnhpK3Qk9FkHfSmSucPkUB8EJ9ysmySMbi82B9L2xQcIDWLEzI+IS0vcAEeKG22HWDkfyfs9z2XU0O0St1blafS2QIxIvexq/R3JSVgAla3MMwCtCobKGaNntrJ1CGqZ7dlgliK/Op2n6BwOsujG3xfRTXlQPE/qEIZ0fK7H2lreNLpzpQsWlgGVvPDpfQQPtP6NH3hHEb90uriDt2Eh1WIcTKdM1QbswczoVsaAvA95N1UvYCOP8uHmPPcq6ZVwJ6xfR+Y7qNgasvWCRJwUV5JBb/EZQEy6Ch7fxYwd2T1Oa7Q80sqqu5pYzWYmhLoqAYSd3AvZBMAokOfrGLeIh0j1xtaESKO1y22Yi8KkoKYG4cJDDyU4B6LaL4RtZAsTJaLt6Tx12F6KiAvZ5F+0tfnCxW9PqCwVJzlYQEbfZAOreVEutFW1ckdxTIVxt0SEv/hgSendxzt4NMaImCLNWv/NoLfGFzCpT3YMCOMNix/8tLY+gQlXU1ImvHzFvkTW00ff9qKhYjgCZmPHSXvUivcIOMqu5FJjuiD3PlsKT/hyeIkJbiMrgxT/GUUoiu6DGwE0RzNLQ3GcfmKz4i7L9qVvdzNgnB6cjO/NFTqTM5E4xZLegTOy+WuS4IdvWRRBt1GgyOqwbJXdIWJc4HGkgGRAMz2fSFIpTONKpWP0IRHUzKwzQCg== 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 Fuad! On Wed, 2025-01-29 at 17:23 +0000, Fuad Tabba wrote: > Add support for mmap() and fault() for guest_memfd backed memory > in the host for VMs that support in-place conversion between > shared and private (shared memory). To that end, this patch adds > the ability to check whether the VM type has that support, and > only allows mapping its memory if that's the case. > > Additionally, this behavior is gated with a new configuration > option, CONFIG_KVM_GMEM_SHARED_MEM. > > Signed-off-by: Fuad Tabba > > --- > > This patch series will allow shared memory support for software > VMs in x86. It will also introduce a similar VM type for arm64 > and allow shared memory support for that. In the future, pKVM > will also support shared memory. > --- > include/linux/kvm_host.h | 11 ++++++ > virt/kvm/Kconfig | 4 +++ > virt/kvm/guest_memfd.c | 77 ++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 92 insertions(+) > > -snip- > > diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c > index 47a9f68f7b24..86441581c9ae 100644 > --- a/virt/kvm/guest_memfd.c > +++ b/virt/kvm/guest_memfd.c > @@ -307,7 +307,84 @@ static pgoff_t kvm_gmem_get_index(struct kvm_memory_slot *slot, gfn_t gfn) > return gfn - slot->base_gfn + slot->gmem.pgoff; > } > > +#ifdef CONFIG_KVM_GMEM_SHARED_MEM > +static vm_fault_t kvm_gmem_fault(struct vm_fault *vmf) > +{ > + struct inode *inode = file_inode(vmf->vma->vm_file); > + struct folio *folio; > + vm_fault_t ret = VM_FAULT_LOCKED; > + > + filemap_invalidate_lock_shared(inode->i_mapping); > + > + folio = kvm_gmem_get_folio(inode, vmf->pgoff); > + if (IS_ERR(folio)) { > + ret = VM_FAULT_SIGBUS; > + goto out_filemap; > + } > + > + if (folio_test_hwpoison(folio)) { > + ret = VM_FAULT_HWPOISON; > + goto out_folio; > + } > + > + if (WARN_ON_ONCE(folio_test_guestmem(folio))) { > + ret = VM_FAULT_SIGBUS; > + goto out_folio; > + } > + > + /* No support for huge pages. */ > + if (WARN_ON_ONCE(folio_nr_pages(folio) > 1)) { > + ret = VM_FAULT_SIGBUS; > + goto out_folio; > + } > + > + if (!folio_test_uptodate(folio)) { > + clear_highpage(folio_page(folio, 0)); > + folio_mark_uptodate(folio); kvm_gmem_mark_prepared() instead of direct folio_mark_uptodate() here, I think (in preparation of things like [1])? Noticed this while rebasing my direct map removal series on top of this and wondering why mmap'd folios sometimes didn't get removed (since it hooks mark_prepared()). Best, Patrick [1]: https://lore.kernel.org/kvm/20241108155056.332412-1-pbonzini@redhat.com/