History

Merge tag 'kvm-x86-fixes-6.18-rc2' of https://github.com/kvm-x86/linux into HEAD

KVM x86 fixes for 6.18: - Expand the KVM_PRE_FAULT_MEMORY selftest to add a regression test for the bug fixed by commit 3ccbf6f47098 ("KVM: x86/mmu: Return -EAGAIN if userspace deletes/moves memslot during prefault") - Don't try to get PMU capabbilities from perf when running a CPU with hybrid CPUs/PMUs, as perf will rightly WARN. - Rework KVM_CAP_GUEST_MEMFD_MMAP (newly introduced in 6.18) into a more generic KVM_CAP_GUEST_MEMFD_FLAGS - Add a guest_memfd INIT_SHARED flag and require userspace to explicitly set said flag to initialize memory as SHARED, irrespective of MMAP. The behavior merged in 6.18 is that enabling mmap() implicitly initializes memory as SHARED, which would result in an ABI collision for x86 CoCo VMs as their memory is currently always initialized PRIVATE. - Allow mmap() on guest_memfd for x86 CoCo VMs, i.e. on VMs with private memory, to enable testing such setups, i.e. to hopefully flush out any other lurking ABI issues before 6.18 is officially released. - Add testcases to the guest_memfd selftest to cover guest_memfd without MMAP, and host userspace accesses to mmap()'d private memory.

Paolo Bonzini committed 1 year ago

Commit 4361f5a2 parents 5d26eaa 505f52217 files · +375 −185Browse files

Showing the changes to include/uapi (1 of 17 files). Show all

Unified · Split

include/uapi/linux/kvm.h+3−2
@@ -962,7 +962,7 @@ struct kvm_enable_cap { · 961 unmodified lines
962962 #define KVM_CAP_ARM_EL2_E2H0 241
963963 #define KVM_CAP_RISCV_MP_STATE_RESET 242
964964 #define KVM_CAP_ARM_CACHEABLE_PFNMAP_SUPPORTED 243
965−#define KVM_CAP_GUEST_MEMFD_MMAP 244
965+#define KVM_CAP_GUEST_MEMFD_FLAGS 244
966966
967967 struct kvm_irq_routing_irqchip {
968968 __u32 irqchip;
@@ -1599,7 +1599,8 @@ struct kvm_memory_attributes { · 630 unmodified lines
15991599 #define KVM_MEMORY_ATTRIBUTE_PRIVATE (1ULL << 3)
16001600
16011601 #define KVM_CREATE_GUEST_MEMFD _IOWR(KVMIO, 0xd4, struct kvm_create_guest_memfd)
1602−#define GUEST_MEMFD_FLAG_MMAP (1ULL << 0)
1602+#define GUEST_MEMFD_FLAG_MMAP (1ULL << 0)
1603+#define GUEST_MEMFD_FLAG_INIT_SHARED (1ULL << 1)
16031604
16041605 struct kvm_create_guest_memfd {
16051606 __u64 size;