Pull KVM updates from Paolo Bonzini: "For x86, there is a new alternative and (in the future) more scalable implementation of extended page tables that does not need a reverse map from guest physical addresses to host physical addresses. For now it is disabled by default because it is still lacking a few of the existing MMU's bells and whistles. However it is a very solid piece of work and it is already available for people to hammer on it. Other updates: ARM: - New page table code for both hypervisor and guest stage-2 - Introduction of a new EL2-private host context - Allow EL2 to have its own private per-CPU variables - Support of PMU event filtering - Complete rework of the Spectre mitigation PPC: - Fix for running nested guests with in-kernel IRQ chip - Fix race condition causing occasional host hard lockup - Minor cleanups and bugfixes x86: - allow trapping unknown MSRs to userspace - allow userspace to force #GP on specific MSRs - INVPCID support on AMD - nested AMD cleanup, on demand allocation of nested SVM state - hide PV MSRs and hypercalls for features not enabled in CPUID - new test for MSR_IA32_TSC writes from host and guest - cleanups: MMU, CPUID, shared MSRs - LAPIC latency optimizations ad bugfixes" * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (232 commits) kvm: x86/mmu: NX largepage recovery for TDP MMU kvm: x86/mmu: Don't clear write flooding count for direct roots kvm: x86/mmu: Support MMIO in the TDP MMU kvm: x86/mmu: Support write protection for nesting in tdp MMU kvm: x86/mmu: Support disabling dirty logging for the tdp MMU kvm: x86/mmu: Support dirty logging for the TDP MMU kvm: x86/mmu: Support changed pte notifier in tdp MMU kvm: x86/mmu: Add access tracking for tdp_mmu kvm: x86/mmu: Support invalidate range MMU notifier for TDP MMU kvm: x86/mmu: Allocate struct kvm_mmu_pages for all pages in TDP MMU kvm: x86/mmu: Add TDP MMU PF handler kvm: x86/mmu: Remove disallowed_hugepage_adjust shadow_walk_iterator arg kvm: x86/mmu: Support zapping SPTEs in the TDP MMU KVM: Cache as_id in kvm_memory_slot kvm: x86/mmu: Add functions to handle changed TDP SPTEs kvm: x86/mmu: Allocate and free TDP MMU roots kvm: x86/mmu: Init / Uninit the TDP MMU kvm: x86/mmu: Introduce tdp_iter KVM: mmu: extract spte.h and spte.c KVM: mmu: Separate updating a PTE from kvm_set_pte_rmapp ...
Showing the changes to include/uapi/linux (1 of 119 files). Show all
Unified · Split
| @@ -248,6 +248,8 @@ struct kvm_hyperv_exit { · 247 unmodified lines | |||
| 248 | #define KVM_EXIT_IOAPIC_EOI 26 | 248 | #define KVM_EXIT_IOAPIC_EOI 26 |
| 249 | #define KVM_EXIT_HYPERV 27 | 249 | #define KVM_EXIT_HYPERV 27 |
| 250 | #define KVM_EXIT_ARM_NISV 28 | 250 | #define KVM_EXIT_ARM_NISV 28 |
| 251 | #define KVM_EXIT_X86_RDMSR 29 | ||
| 252 | #define KVM_EXIT_X86_WRMSR 30 | ||
| 251 | 253 | ||
| 252 | /* For KVM_EXIT_INTERNAL_ERROR */ | 254 | /* For KVM_EXIT_INTERNAL_ERROR */ |
| 253 | /* Emulate instruction failed. */ | 255 | /* Emulate instruction failed. */ |
| @@ -413,6 +415,17 @@ struct kvm_run { · 159 unmodified lines | |||
| 413 | __u64 esr_iss; | 415 | __u64 esr_iss; |
| 414 | __u64 fault_ipa; | 416 | __u64 fault_ipa; |
| 415 | } arm_nisv; | 417 | } arm_nisv; |
| 418 | /* KVM_EXIT_X86_RDMSR / KVM_EXIT_X86_WRMSR */ | ||
| 419 | struct { | ||
| 420 | __u8 error; /* user -> kernel */ | ||
| 421 | __u8 pad[7]; | ||
| 422 | #define KVM_MSR_EXIT_REASON_INVAL (1 << 0) | ||
| 423 | #define KVM_MSR_EXIT_REASON_UNKNOWN (1 << 1) | ||
| 424 | #define KVM_MSR_EXIT_REASON_FILTER (1 << 2) | ||
| 425 | __u32 reason; /* kernel -> user */ | ||
| 426 | __u32 index; /* kernel -> user */ | ||
| 427 | __u64 data; /* kernel <-> user */ | ||
| 428 | } msr; | ||
| 416 | /* Fix the size of the union. */ | 429 | /* Fix the size of the union. */ |
| 417 | char padding[256]; | 430 | char padding[256]; |
| 418 | }; | 431 | }; |
| @@ -1037,6 +1050,9 @@ struct kvm_ppc_resize_hpt { · 618 unmodified lines | |||
| 1037 | #define KVM_CAP_SMALLER_MAXPHYADDR 185 | 1050 | #define KVM_CAP_SMALLER_MAXPHYADDR 185 |
| 1038 | #define KVM_CAP_S390_DIAG318 186 | 1051 | #define KVM_CAP_S390_DIAG318 186 |
| 1039 | #define KVM_CAP_STEAL_TIME 187 | 1052 | #define KVM_CAP_STEAL_TIME 187 |
| 1053 | #define KVM_CAP_X86_USER_SPACE_MSR 188 | ||
| 1054 | #define KVM_CAP_X86_MSR_FILTER 189 | ||
| 1055 | #define KVM_CAP_ENFORCE_PV_FEATURE_CPUID 190 | ||
| 1040 | 1056 | ||
| 1041 | #ifdef KVM_CAP_IRQ_ROUTING | 1057 | #ifdef KVM_CAP_IRQ_ROUTING |
| 1042 | 1058 | ||
| @@ -1538,6 +1554,9 @@ struct kvm_pv_cmd { · 495 unmodified lines | |||
| 1538 | /* Available with KVM_CAP_S390_PROTECTED */ | 1554 | /* Available with KVM_CAP_S390_PROTECTED */ |
| 1539 | #define KVM_S390_PV_COMMAND _IOWR(KVMIO, 0xc5, struct kvm_pv_cmd) | 1555 | #define KVM_S390_PV_COMMAND _IOWR(KVMIO, 0xc5, struct kvm_pv_cmd) |
| 1540 | 1556 | ||
| 1557 | /* Available with KVM_CAP_X86_MSR_FILTER */ | ||
| 1558 | #define KVM_X86_SET_MSR_FILTER _IOW(KVMIO, 0xc6, struct kvm_msr_filter) | ||
| 1559 | |||
| 1541 | /* Secure Encrypted Virtualization command */ | 1560 | /* Secure Encrypted Virtualization command */ |
| 1542 | enum sev_cmd_id { | 1561 | enum sev_cmd_id { |
| 1543 | /* Guest initialization commands */ | 1562 | /* Guest initialization commands */ |