[PATCH v6 0/7] KVM: Restricted mapping of guest_memfd at the host and arm64 support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx/
[2] https://lore.kernel.org/all/20250117163001.2326672-1-tabba@xxxxxxxxxx/
[3] https://lore.kernel.org/all/20250318161823.4005529-1-tabba@xxxxxxxxxx/
[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
-- 
2.49.0.rc1.451.g8f38331e32-goog





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux