KVM: Restricted mapping of guest_memfd at the host and arm64 support
| From: | Fuad Tabba <tabba-AT-google.com> | |
| To: | kvm-AT-vger.kernel.org, linux-arm-msm-AT-vger.kernel.org, linux-mm-AT-kvack.org | |
| Subject: | [PATCH v6 0/7] KVM: Restricted mapping of guest_memfd at the host and arm64 support | |
| Date: | Tue, 18 Mar 2025 16:20:39 +0000 | |
| Message-ID: | <20250318162046.4016367-1-tabba@google.com> | |
| Cc: | pbonzini-AT-redhat.com, chenhuacai-AT-kernel.org, mpe-AT-ellerman.id.au, anup-AT-brainfault.org, paul.walmsley-AT-sifive.com, palmer-AT-dabbelt.com, aou-AT-eecs.berkeley.edu, seanjc-AT-google.com, viro-AT-zeniv.linux.org.uk, brauner-AT-kernel.org, willy-AT-infradead.org, akpm-AT-linux-foundation.org, xiaoyao.li-AT-intel.com, yilun.xu-AT-intel.com, chao.p.peng-AT-linux.intel.com, jarkko-AT-kernel.org, amoorthy-AT-google.com, dmatlack-AT-google.com, isaku.yamahata-AT-intel.com, mic-AT-digikod.net, vbabka-AT-suse.cz, vannapurve-AT-google.com, ackerleytng-AT-google.com, mail-AT-maciej.szmigiero.name, david-AT-redhat.com, michael.roth-AT-amd.com, wei.w.wang-AT-intel.com, liam.merwick-AT-oracle.com, isaku.yamahata-AT-gmail.com, kirill.shutemov-AT-linux.intel.com, suzuki.poulose-AT-arm.com, steven.price-AT-arm.com, quic_eberman-AT-quicinc.com, quic_mnalajal-AT-quicinc.com, quic_tsoni-AT-quicinc.com, quic_svaddagi-AT-quicinc.com, quic_cvanscha-AT-quicinc.com, quic_pderrin-AT-quicinc.com, quic_pheragu-AT-quicinc.com, catalin.marinas-AT-arm.com, james.morse-AT-arm.com, yuzenghui-AT-huawei.com, oliver.upton-AT-linux.dev, maz-AT-kernel.org, will-AT-kernel.org, qperret-AT-google.com, keirf-AT-google.com, roypat-AT-amazon.co.uk, shuah-AT-kernel.org, hch-AT-infradead.org, jgg-AT-nvidia.com, rientjes-AT-google.com, jhubbard-AT-nvidia.com, fvdl-AT-google.com, hughd-AT-google.com, jthoughton-AT-google.com, peterx-AT-redhat.com, tabba-AT-google.com | |
| Archive-link: | Article |
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-tabb... [2] https://lore.kernel.org/all/20250117163001.2326672-1-tabb... [3] https://lore.kernel.org/all/20250318161823.4005529-1-tabb... [4] https://lpc.events/event/18/contributions/1758/attachment... 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 -- 2.49.0.rc1.451.g8f38331e32-goog
