From patchwork Tue Mar 18 16:20:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fuad Tabba X-Patchwork-Id: 14021244 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 A7100C28B2F for ; Tue, 18 Mar 2025 16:20:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5F254280010; Tue, 18 Mar 2025 12:20:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5531F28000B; Tue, 18 Mar 2025 12:20:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 41B7D280010; Tue, 18 Mar 2025 12:20:51 -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 08C9128000B for ; Tue, 18 Mar 2025 12:20:50 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 21D0D1A13C0 for ; Tue, 18 Mar 2025 16:20:52 +0000 (UTC) X-FDA: 83235185544.12.89FBD21 Received: from mail-wm1-f74.google.com (mail-wm1-f74.google.com [209.85.128.74]) by imf19.hostedemail.com (Postfix) with ESMTP id 1C25B1A000E for ; Tue, 18 Mar 2025 16:20:49 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=N5PPHxMw; spf=pass (imf19.hostedemail.com: domain of 3YJ3ZZwUKCEc2jkkjpxxpun.lxvurw36-vvt4jlt.x0p@flex--tabba.bounces.google.com designates 209.85.128.74 as permitted sender) smtp.mailfrom=3YJ3ZZwUKCEc2jkkjpxxpun.lxvurw36-vvt4jlt.x0p@flex--tabba.bounces.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=1742314850; 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: references:dkim-signature; bh=/4rrKqju3eVmPetDGm0h77EFquJ+/Ft9DdfJCYAypfM=; b=8cLZ7140GYWnrZIWt1ZUw5zf55HGSUTb7rsLP0fB5WpObMrW03xDnObOqOiqQzdANFimZt mYe4HhNQ6Wedj3iSvDf4K7ykhC9BHy/o06SIOCpkhpo9NFpTozH5WFxOphNDZ40j+VR8X8 eGmCs/ZO9kx+ymEzIUWQ3rgybfsxuwo= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=N5PPHxMw; spf=pass (imf19.hostedemail.com: domain of 3YJ3ZZwUKCEc2jkkjpxxpun.lxvurw36-vvt4jlt.x0p@flex--tabba.bounces.google.com designates 209.85.128.74 as permitted sender) smtp.mailfrom=3YJ3ZZwUKCEc2jkkjpxxpun.lxvurw36-vvt4jlt.x0p@flex--tabba.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742314850; a=rsa-sha256; cv=none; b=FPkwGJnxQr6eVM5Fu8EvgnKg7+QLBGQJpM0ucke5S7nJfNaQQWP6M3CvfzNq70uEJQlGSG sNMgkY7os8BoMOlHHUGvzdrXSpt2wFWUIKO2G75omA4cA1/uJmIUlQp+KHP+kggqC10ADd 1suHfok64gW0RNaYbmluu0SDJsJ0S4s= Received: by mail-wm1-f74.google.com with SMTP id 5b1f17b1804b1-43d0830c3f7so30357575e9.2 for ; Tue, 18 Mar 2025 09:20:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1742314848; x=1742919648; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=/4rrKqju3eVmPetDGm0h77EFquJ+/Ft9DdfJCYAypfM=; b=N5PPHxMwS78b7NT3FbZaILuTh20QKzRZfzPCkjMXj+v/DgG9v/6ILgcnQ4/jyZts3e vcOTg3fUq+V5dQtCjoQB24g7yq0UnuulvwgFrsMXR3VT6VHJBvzv0m5t9eXeIz5hhl+Y roz+A4e1uTLz9cwmPbygSR5aSgjNvYgZwvxnh+ZylfqCsb1yAdqq33xlThmIzS1OO6lq WSDBh1Xwc3LjBBNM0XqPMPbnuR8N//6Xr7MOF3XO5jwM1YCI6RhncJ3YPds5Bsp7bXRy 61yrzI3mIdQdAqzqPHjAy/Yg6gkLPCzJjzw0KLjXAfrneHWkMzo0wTOy9bOSDaYHj10e Lr6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742314848; x=1742919648; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=/4rrKqju3eVmPetDGm0h77EFquJ+/Ft9DdfJCYAypfM=; b=qU81U3tHPpqiZk457m3MgosvWzozp3ld/uGFZCWHJHbwulS86Of7NRWbzg83TuSkzi oIH47st4QJAjvVsHoXw/nKVh8nYA1sSUEQv39UxLKySDM3Ks3kjASsbIW8mATjjmovtw f1PbNey6RSzgPlhjB1prxm3h/Kgr/p94v4So2hCY5vEE5yBUwbpcNemDCMkx0TdpGdR7 nD26kcslCjIZU3ABrsQtXb1V+MDNSYRVxgTF87RaAfM3uI3W3fgRt9WWNs2jWZxQartd Iw4xsmloYYAzLzE/zbvaeXLLLLEnIXI3EvZkDWbFgY274eGBhYy4UaVWPAtP+6M/3Ccz fIKQ== X-Forwarded-Encrypted: i=1; AJvYcCUCazXjk8piE8jmbiU+yC/RKG9MJMJ34ch91XnpJ7BS5EXsACw3iHv3jlSqvantpnOPPAsLpV1ZOg==@kvack.org X-Gm-Message-State: AOJu0YweXdvPfmyqFzPWh2XVF3ID7d15yqGLcCvNzoLJKlgnqDVVSvK1 64BG73NmLrMKBjvuaW/ccmmQ2UbcYu7s7kr7aHVpibGyy9jtVGeBmCp4P+FL6s03li/zWcwQqA= = X-Google-Smtp-Source: AGHT+IG04C2ZXEkmNbHi/o+vaOI41oJW9kJtC264bgpL9XnkcleEAVsJcA9GCi6qC0eTEqYntjtppzIhjQ== X-Received: from wmqe11.prod.google.com ([2002:a05:600c:4e4b:b0:43d:4038:9229]) (user=tabba job=prod-delivery.src-stubby-dispatcher) by 2002:a7b:c00f:0:b0:43c:fe85:e4ba with SMTP id 5b1f17b1804b1-43d3c953a27mr27893465e9.15.1742314848297; Tue, 18 Mar 2025 09:20:48 -0700 (PDT) Date: Tue, 18 Mar 2025 16:20:39 +0000 Mime-Version: 1.0 X-Mailer: git-send-email 2.49.0.rc1.451.g8f38331e32-goog Message-ID: <20250318162046.4016367-1-tabba@google.com> Subject: [PATCH v6 0/7] KVM: Restricted mapping of guest_memfd at the host and arm64 support From: Fuad Tabba 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, 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, tabba@google.com X-Rspam-User: X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 1C25B1A000E X-Stat-Signature: m6yr6471gdos8gid3qio1h5rqxwrb49w X-HE-Tag: 1742314849-292219 X-HE-Meta: U2FsdGVkX1+hT8XG4vjrJBDj5WwZFE29xUv3PP9JTm6FaZKb8T3RauN1SVbr/AdTx8N8UiEmjw49TF4THHEJFlyeyZoQ7hh6M/Rm78yZM5PyWfzx8Hr+SwdOl5+/Uw9+0NHijuQJGueJWg/g4A5bvze+54ugLH7r7xhsJl+lt0S839lK9ksbFDfogezSA1DzUJ+Z8q03BxlMvlEkv6MwUI1QJUUUVcml+3xlGVqzC7YBPL5ScfdPUyquAdU2/9mdzPT/pBZoobh5k9OYBNh7qisrERHDCutyW4vM4KE8KQgl6aKnj5WWObVY/qhF72TTg0WNWRWVHvfymEQYUwkE6qfX54KeqBBrFdS/ZH2VifQERLaH2S01I5oMj0Tm6a8Sh8IVgL/SjJhxlpt34Dq9Qd51vRIwkhsWJovv3F4WHGgG8ee7eYmiPzuwi7Im8BrqSf14FLL+jtC37tC5QSHVzu1mOSVfrrE00DGANGaJwmGQFeDHFoGHVmzEclgvn9imOnbW6XJCFp5p5Lu1FkPnKLMyi0Tmfd6XtY51qxJpV9RH3OWtrnzJaScAnUQyGL+yOrH9lPAdeqlHFmvqeJDxxSuHfLXZ0EipUgj47zGmgN4nIqGeOGUxj1xoMkaP9y8iVXgPPI+Fmr8Xg++J1uN1EZ0jv64fbz3ZOTYJUY9DKiV9iW3q5o3qmQGrfIBgkrFEIH0erpj+YutX8XrdvuJwY3Nc3Hav1O7+2yo5gFlRri7fkuwhLwyV1lTy+9obYOoEqT5r5QY7KQywmNOdy01w8Shdp7FC/q2ESPbRCAqB7o6tgNgNuUyZliiH0Q7JTe22TVMMot0+y3xd6uR2jivacnlA3N4iq96gkezwDPYF92279aZ3EpJMPWrEEgfiAaBbUODfLjsfFEOHxzNlOlpnary0RiSyklnRkpLh8OzYjy2U8RoMYtQ0MfoprFS9lMzMmGaYQnSXiyGeOi62sb9 L7U6bWPl 0m1Rplmod9aay8tTt6c1MtHdE3tKQmtxrBmbHfyRSm6jO5x8IG0lQIY2Y5HeKUEceKSCCQHhpm10CZD6Wlrq6M12o/C6zJsd6bAqLpdxLx0MXySb/dXlFsupiF/OdA92bVYutW9rU2MBeQwlOYOgMEFlL+mxo+duuiJjdDatbvxt0gndyV+h4D+pP/+rawKp85SvINK/nYnnOej7iVT5nGN6rSxhBAJEfIJXV5RKqtVc2zIFJlav0xwdnZCst9W9lDxMn+5GMbavl8pKMXsJ8jY3ck4FLlFFjhWApGcSj3NUmiNiQ9mi3uFkE4FKsREqTJGbMjysQn9ecimTO8WtKXpql63wlMW6YWQMM2RWS+ax7T+MJvQARrmTFp3eJ1pa3bx6eWusGt6fS32RZu5ehLw0esXoxy3QGbg0lcaiLtsTa0J/Lx9+Yh4kNeMdyVjtSWw1Ugz48I/x62g7Y4kfP1CKNOJ+goVY6uqmk4T8vlzT43j3oWihVXCojcf+n7gy20j27aCVcTW0i9t4MlkNad5kj5Cq41tTPMUCKgHz1WLvFvnCbQ/8DggACc/hgRXdlwtrh2h+bQXpRNNm+v6KssJlFd+7ZEDqMFoMzhjAv74dsKWN4d4sZcR2ByX4wKDrb/OmbvQ4Rk6RqmEY5+hyxSuwUWZDtdPNHKH81b6AmXDWlWBuTMWCCpFbfvBvBqkczp2x4oG7tqzNBIx/Fj9vsoI5A+gqm+4FiqTHSYLFXVjlxac8JwCMoBzx2yKKFsoFKOQQJ X-Bogosity: Ham, tests=bogofilter, spamicity=0.004246, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: This series adds restricted mmap() support to guest_memfd, as well as support for guest_memfd on arm64. Please see v3 for the context [1]. Main changes since v5 [2]: - Freeze folio refcounts when checking them to avoid races (Kirill, Vlastimili, Ackerley) - Handle invalidation (e.g., on truncation) of potentially shared memory (Ackerley) - Rebased on the `KVM: Mapping guest_memfd backed memory at the host for software protected VMs` series [3], which entails renaming of MAPPABLE to SHAREABLE and a rebase on Linux 6.14-rc7. The state diagram that uses the new states in this patch series, and how they would interact with sharing/unsharing in pKVM [4]. Cheers, /fuad [1] https://lore.kernel.org/all/20241010085930.1546800-1-tabba@google.com/ [2] https://lore.kernel.org/all/20250117163001.2326672-1-tabba@google.com/ [3] https://lore.kernel.org/all/20250318161823.4005529-1-tabba@google.com/ [4] https://lpc.events/event/18/contributions/1758/attachments/1457/3699/Guestmemfd%20folio%20state%20page_type.pdf Ackerley Tng (2): KVM: guest_memfd: Make guest mem use guest mem inodes instead of anonymous inodes KVM: guest_memfd: Track folio sharing within a struct kvm_gmem_private Fuad Tabba (5): KVM: guest_memfd: Introduce kvm_gmem_get_pfn_locked(), which retains the folio lock KVM: guest_memfd: Folio sharing states and functions that manage their transition KVM: guest_memfd: Restore folio state after final folio_put() KVM: guest_memfd: Handle invalidation of shared memory KVM: guest_memfd: Add a guest_memfd() flag to initialize it as shared Documentation/virt/kvm/api.rst | 4 + include/linux/kvm_host.h | 56 +- include/uapi/linux/kvm.h | 1 + include/uapi/linux/magic.h | 1 + .../testing/selftests/kvm/guest_memfd_test.c | 7 +- virt/kvm/guest_memfd.c | 589 ++++++++++++++++-- virt/kvm/kvm_main.c | 62 ++ 7 files changed, 682 insertions(+), 38 deletions(-) base-commit: 1ea0414b447c8c96e6a6f6f953323c3df71b85a6