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 0B186E77199 for ; Thu, 9 Jan 2025 16:35:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8381E6B0085; Thu, 9 Jan 2025 11:35:23 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7E9196B0088; Thu, 9 Jan 2025 11:35:23 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 686796B0089; Thu, 9 Jan 2025 11:35:23 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 480A76B0085 for ; Thu, 9 Jan 2025 11:35:23 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id E2924120257 for ; Thu, 9 Jan 2025 16:35:22 +0000 (UTC) X-FDA: 82988463684.07.8F701BD Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) by imf14.hostedemail.com (Postfix) with ESMTP id D0E4A100008 for ; Thu, 9 Jan 2025 16:35:20 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=SPaI+jSc; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf14.hostedemail.com: domain of tabba@google.com designates 209.85.128.51 as permitted sender) smtp.mailfrom=tabba@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736440521; a=rsa-sha256; cv=none; b=xbdaR/C+deqY0Xf5OEwHSKGLUeZqd1DMunIxMJUGOoJEIBCZrgMCAzeWy9Yff/a/dgy1Oy wQTT91f0hRMYe3+HR7yG2iKTKEWnYfCht7SoE/FUkeBJogJ8hroX7WDaDNycRbycO/3+vC YijmFbNUVOchYW4hIPCo8XkShrNQ+AQ= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=SPaI+jSc; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf14.hostedemail.com: domain of tabba@google.com designates 209.85.128.51 as permitted sender) smtp.mailfrom=tabba@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736440521; 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=baUKr168OOAaPISTC82PBM16R+vBD3PnUmTKM1n0mko=; b=Xu4PGeN6kujHjk112J+/t0v+KhKCqw0I53FhDUOi/185RBrbmOVdp7TG7kG1LSAu17mNoj 6ScrKyF2CPWCu/D3mrJxyksAmFKGnH63YbtyFZBNYXnt6hDymS49ihTDYj4gKdxB1anLEX ckVUygwY7hUlsUqoOZmmh0Uwe25/gaQ= Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-4361d5730caso55095e9.1 for ; Thu, 09 Jan 2025 08:35:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1736440519; x=1737045319; 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=baUKr168OOAaPISTC82PBM16R+vBD3PnUmTKM1n0mko=; b=SPaI+jScFi7AAUyHV5NbC+mdhOPlDyMvIMP//AmaiLAMvvOXA8oTY7yeJdBbI4biW1 KgQSooWiPnhz4Aq5L10HZjw7Y/v6vx5E82KL9NI8p7mwgCrFKDS8eKkMLap7KW4S3yZ5 t85lINnH/WnFHD+zUmgwNYNNUcns2oD6ZmgTpiGjBxtiL8dqqHfDWsKYGzfuG9avm5JX rdmcYRKicAQFS69Zzmqi6qEKl6ZEefsmKm0sHibP5U1fGPyhyXYxuGtRdugDia6qOXfR IeL+8FYRUyCqEE+8cK8TP93YA70Aktdg96csqCgvjX3j6+Fvrqf01vZc6Z9Z3IigSQe+ kfTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736440519; x=1737045319; 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=baUKr168OOAaPISTC82PBM16R+vBD3PnUmTKM1n0mko=; b=IqurDq4epXkBQeQ0K3KFdL8FDXUcZOKmjb91Aiv0sBLPMLKYOIUkr0pzOIqUMm0WSL tB+F9bN3dOXSzbE/ETkGojB1ChbihyHkllwQJ/PD+OvwGfGm2GZ6Lrtyesi+AAWurr3+ ahgfjaYccADIg4N1hRRdmvu1hjBMPtI4a2Avbw55QvzPh12mNQdzVmOWtrrti2g0YehS btQjTKQjJuEkygMh5BlCBsJuc26tRmk5HDlm3FIkemOUVctRME6udfrLwexj68zsnOFu Eh3Q8KETpQ6b1UgQoioBdAzdQVEB+2rSCiMwoNcHg+mrDFp8U+CQSBbfCkhlS6lo5tXV 5LXA== X-Forwarded-Encrypted: i=1; AJvYcCUCy5oQjEEyu0euoYojm5Z7J9xgjKPaH8ww7KE5xOYDTWekVQcfy1LwsKr9TOO4whTxQWaRqU86Ow==@kvack.org X-Gm-Message-State: AOJu0YzaYdH3cWss884wYU5VEWcZ4lv31cQ2S2wahiSe2HZHGvDTZkDG THttPLjDmvQihqp+/quiZmt8N87SSruwHjPDqyBXffm2DqZneUCwd+Gty2dodGZ4hM0h+KWr2jz 1a/lB/jqDxxGy4Lv+FbylyDpkn1vl2Z9BQW+N X-Gm-Gg: ASbGncsbd5yxdoGUuXG214aa4NSCMWuwAE+ci5Fp028X4xx5IVCXFU+1n4w6gZkLtou Fa2C1U0+95c08/nFgIw7MYJHBnB4ibK4F5Ege X-Google-Smtp-Source: AGHT+IFv0P2PeWbqF1YSBzg+TWGRgPHYK/TQ1vBRRVO50fQW5HLnFqB94TvYMz9y+LQS6PAgTWSV97KjtJt4QPa3b+U= X-Received: by 2002:a05:600c:1c89:b0:436:51cf:285b with SMTP id 5b1f17b1804b1-436e8e34745mr1290225e9.4.1736440519033; Thu, 09 Jan 2025 08:35:19 -0800 (PST) MIME-Version: 1.0 References: <20241213164811.2006197-1-tabba@google.com> In-Reply-To: <20241213164811.2006197-1-tabba@google.com> From: Fuad Tabba Date: Thu, 9 Jan 2025 16:34:42 +0000 X-Gm-Features: AbW1kvYn98mIpWwaDWDfzqXeleucds2C1o-ePw1uKVi8SN1keW_ixb8bDBYEyig Message-ID: Subject: Re: [RFC PATCH v4 00/14] KVM: Restricted mapping of guest_memfd at the host and arm64 support To: kvm@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-mm@kvack.org Cc: 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, yu.c.zhang@linux.intel.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 Content-Type: text/plain; charset="UTF-8" X-Stat-Signature: pd3xmtyhyb668jdxjoa7hogdty1i1wp5 X-Rspam-User: X-Rspamd-Queue-Id: D0E4A100008 X-Rspamd-Server: rspam08 X-HE-Tag: 1736440520-771587 X-HE-Meta: U2FsdGVkX18BwzbxffIp9y3YADt+5qbsuURxIujVDJ42dp/Gi30zdX3Q92dfk3w7PI9JWJh8stTUpxPfLAWKkrTXaSdv9i2OBnCZFNspWLP0d1q9JReeDFKwf7uA/Hzah+vlcYSs0glHxRKsmxyJqdJbhlS02+x7+3wM9PRHfx20ve548A+dglBUy5lIhviozSqPmpGc9x/Vsf213RutMjGY5+w15lZ9Wjza2DLD2fWSvRCws7HwdRAThu2QQmjlejH5MyT7v3rHHn28xavnbKunYGIRMaCMJgORHQC14X5CoK3h9q2x3DNhCsKvTzrwzIyQsHFQlZxAcjdKfJ0Ua/U12I7E/BImkA1pCTHZ31/HRr5WNvgWPoKg9/ltHiZqJCWqcpEhcc/3D7VDdKWF3m2CZyCV4aYpjw7OBf+Er6DYFn2ByyEFl7J+uE4xfWojgk45vQKJSvv2qWrMH3gY8BEunCXt3eTOoh7lm17U1GoeYgpraBuBGr7iUQPqCAQj4Ha2Fh0MnPssBDlZGob/HsDasdkv5Vji4x/+cBmU36DXybrH6/XstSloENGsKfuYniekFi5D3F7LiAtHftI3sQK58B5x1ZPiiYabmT7CMoPesGj+WiD6m9MFbd92Nad4Ki18FM4rseK1Q2Y3AoPgXH10PZ+5ELSBG0hwRkfrFCzrTPuJzXCfSm5ILDFcJNOC/FhBlv/YdE1VXsIsh1bL2SWqiJeLSWr8i/4Jgr5Qxw0QNTeRmASM8Eg5h+mTIOCERj8SSYo+MTBdo/VGKifrRnYJ8jzsUkKP7xLAdUA0kMn1Bs8WyEprhzpiMPHLGdTaff18EoH19loPtyRWkEBNfK4Y0fbcH+EPCfcs8j2feInArsTA64MgQa1u/itVOL1DLTpwSPB6qGdef9afHQX3WV784vxI/LZ05IYHdgp/m+0qeLiiiES5XMcsGD5sZ5p5amN7S2ax/52SuYvHrIB SsPa9ZPw Kd2MNVpIhT27sfSt2iEFTxkQ4lL5HLdwjPb+ljIoJWPBdKOCJmQOjRU3m55U2bR36m15bmEMoDtowLI8LdpVvcnOADCrU2S2SYslB4L7HCIWw/NLsZ9BPFpPypC8ItNZPPex+bKAq73K8vIx+/YBxveqzSR69rJYjygGeQLMhpTT+mcfbMQNc5y/xKOSGpPSF2+TF/9rls+usxr76FF965tvhnYheejZ/VK6oV7o5D11PAI4Z2HX089phcyFPU6Vhlq/2VjXFoMb6VOp88JREdXRipFt/EHAF0UuRYIJZ+tFdaMEyPfhigQgTt/asEAya9e98gDSQtCaRE0XQExfTeJwGsxG9MrtnSZwsCeYdRtY3nTV7EvePr1RobPXvtbTiWdpszr4479dvZba1SnxM6f3EGuBkmiHaMJDvUan7/GcHVladXuW7VQ0YUviuOaQhTgCD 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, As mentioned in the guest_memfd sync (2025-01-09), below is the state diagram that uses the new states in this patch series, and how they would interact with sharing/unsharing in pKVM: https://lpc.events/event/18/contributions/1758/attachments/1457/3699/Guestmemfd%20folio%20state%20page_type.pdf This patch series doesn't necessarily impose all these transitions, many of them would be a matter of policy. This just happens to be the current way I've done it with pKVM/arm64. Cheers, /fuad On Fri, 13 Dec 2024 at 16:48, Fuad Tabba wrote: > > This series adds restricted mmap() support to guest_memfd, as > well as support for guest_memfd on arm64. It is based on Linux > 6.13-rc2. Please refer to v3 for the context [1]. > > Main changes since v3: > - Added a new folio type for guestmem, used to register a > callback when a folio's reference count reaches 0 (Matthew > Wilcox, DavidH) [2] > - Introduce new mappability states for folios, where a folio can > be mappable by the host and the guest, only the guest, or by no > one (transient state) > - Rebased on Linux 6.13-rc2 > - Refactoring and tidying up > > Cheers, > /fuad > > [1] https://lore.kernel.org/all/20241010085930.1546800-1-tabba@google.com/ > [2] https://lore.kernel.org/all/20241108162040.159038-1-tabba@google.com/ > > Ackerley Tng (2): > KVM: guest_memfd: Make guest mem use guest mem inodes instead of > anonymous inodes > KVM: guest_memfd: Track mappability within a struct kvm_gmem_private > > Fuad Tabba (12): > mm: Consolidate freeing of typed folios on final folio_put() > KVM: guest_memfd: Introduce kvm_gmem_get_pfn_locked(), which retains > the folio lock > KVM: guest_memfd: Folio mappability states and functions that manage > their transition > KVM: guest_memfd: Handle final folio_put() of guestmem pages > KVM: guest_memfd: Allow host to mmap guest_memfd() pages when shared > KVM: guest_memfd: Add guest_memfd support to > kvm_(read|/write)_guest_page() > KVM: guest_memfd: Add KVM capability to check if guest_memfd is host > mappable > KVM: guest_memfd: Add a guest_memfd() flag to initialize it as > mappable > KVM: guest_memfd: selftests: guest_memfd mmap() test when mapping is > allowed > KVM: arm64: Skip VMA checks for slots without userspace address > KVM: arm64: Handle guest_memfd()-backed guest page faults > KVM: arm64: Enable guest_memfd private memory when pKVM is enabled > > Documentation/virt/kvm/api.rst | 4 + > arch/arm64/include/asm/kvm_host.h | 3 + > arch/arm64/kvm/Kconfig | 1 + > arch/arm64/kvm/mmu.c | 119 +++- > include/linux/kvm_host.h | 75 +++ > include/linux/page-flags.h | 22 + > include/uapi/linux/kvm.h | 2 + > include/uapi/linux/magic.h | 1 + > mm/debug.c | 1 + > mm/swap.c | 28 +- > tools/testing/selftests/kvm/Makefile | 1 + > .../testing/selftests/kvm/guest_memfd_test.c | 64 +- > virt/kvm/Kconfig | 4 + > virt/kvm/guest_memfd.c | 579 +++++++++++++++++- > virt/kvm/kvm_main.c | 229 ++++++- > 15 files changed, 1074 insertions(+), 59 deletions(-) > > > base-commit: fac04efc5c793dccbd07e2d59af9f90b7fc0dca4 > -- > 2.47.1.613.gc27f4b7a9f-goog >