Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

tools headers UAPI: Update tools's copy of kvm.h headers

Picking the changes from:

66bb8a065f5a ("KVM: x86: PMU Event Filter")
f087a02941fe ("KVM: nVMX: Stash L1's CR3 in vmcs01.GUEST_CR3 on nested entry w/o EPT")
99adb567632b ("KVM: arm/arm64: Add save/restore support for firmware workaround state")

Silencing this perf build warning:

Warning: Kernel ABI header at 'tools/arch/arm/include/uapi/asm/kvm.h' differs from latest version at 'arch/arm/include/uapi/asm/kvm.h'
diff -u tools/arch/arm/include/uapi/asm/kvm.h arch/arm/include/uapi/asm/kvm.h
Warning: Kernel ABI header at 'tools/arch/arm64/include/uapi/asm/kvm.h' differs from latest version at 'arch/arm64/include/uapi/asm/kvm.h'
diff -u tools/arch/arm64/include/uapi/asm/kvm.h arch/arm64/include/uapi/asm/kvm.h
Warning: Kernel ABI header at 'tools/arch/x86/include/uapi/asm/vmx.h' differs from latest version at 'arch/x86/include/uapi/asm/vmx.h'
diff -u tools/arch/x86/include/uapi/asm/vmx.h arch/x86/include/uapi/asm/vmx.h
Warning: Kernel ABI header at 'tools/arch/x86/include/uapi/asm/kvm.h' differs from latest version at 'arch/x86/include/uapi/asm/kvm.h'
diff -u tools/arch/x86/include/uapi/asm/kvm.h arch/x86/include/uapi/asm/kvm.h
Warning: Kernel ABI header at 'tools/include/uapi/linux/kvm.h' differs from latest version at 'include/uapi/linux/kvm.h'
diff -u tools/include/uapi/linux/kvm.h include/uapi/linux/kvm.h

Now 'perf trace' and other code that might use the tools/perf/trace/beauty autogenerated
tables will be able to translate this new ioctl code into a string:

$ tools/perf/trace/beauty/kvm_ioctl.sh > before
$
$ cp include/uapi/linux/kvm.h tools/include/uapi/linux/kvm.h
$ tools/perf/trace/beauty/kvm_ioctl.sh > after
$ diff -u before after
--- before 2019-07-26 12:32:47.959220236 -0300
+++ after 2019-07-26 12:33:05.766464871 -0300
@@ -79,6 +79,7 @@
[0xac] = "SET_ONE_REG",
[0xad] = "KVMCLOCK_CTRL",
[0xb0] = "GET_REG_LIST",
+ [0xb2] = "SET_PMU_EVENT_FILTER",
[0xb7] = "SMI",
[0xba] = "MEMORY_ENCRYPT_OP",
[0xbb] = "MEMORY_ENCRYPT_REG_REGION",
$

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andre Przywara <andre.przywara@arm.com>
Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
Cc: Eric Hankland <ehankland@google.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Sean Christopherson <sean.j.christopherson@intel.com>
Link: https://lkml.kernel.org/n/tip-py1gcmt6rboehlwg6zvagfg2@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

+43 -5
+12
tools/arch/arm/include/uapi/asm/kvm.h
··· 214 214 #define KVM_REG_ARM_FW_REG(r) (KVM_REG_ARM | KVM_REG_SIZE_U64 | \ 215 215 KVM_REG_ARM_FW | ((r) & 0xffff)) 216 216 #define KVM_REG_ARM_PSCI_VERSION KVM_REG_ARM_FW_REG(0) 217 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1 KVM_REG_ARM_FW_REG(1) 218 + /* Higher values mean better protection. */ 219 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_AVAIL 0 220 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_AVAIL 1 221 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_REQUIRED 2 222 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2 KVM_REG_ARM_FW_REG(2) 223 + /* Higher values mean better protection. */ 224 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_AVAIL 0 225 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_UNKNOWN 1 226 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_AVAIL 2 227 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_REQUIRED 3 228 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_ENABLED (1U << 4) 217 229 218 230 /* Device Control API: ARM VGIC */ 219 231 #define KVM_DEV_ARM_VGIC_GRP_ADDR 0
+10
tools/arch/arm64/include/uapi/asm/kvm.h
··· 229 229 #define KVM_REG_ARM_FW_REG(r) (KVM_REG_ARM64 | KVM_REG_SIZE_U64 | \ 230 230 KVM_REG_ARM_FW | ((r) & 0xffff)) 231 231 #define KVM_REG_ARM_PSCI_VERSION KVM_REG_ARM_FW_REG(0) 232 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1 KVM_REG_ARM_FW_REG(1) 233 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_AVAIL 0 234 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_AVAIL 1 235 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_REQUIRED 2 236 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2 KVM_REG_ARM_FW_REG(2) 237 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_AVAIL 0 238 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_UNKNOWN 1 239 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_AVAIL 2 240 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_REQUIRED 3 241 + #define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_ENABLED (1U << 4) 232 242 233 243 /* SVE registers */ 234 244 #define KVM_REG_ARM64_SVE (0x15 << KVM_REG_ARM_COPROC_SHIFT)
+18 -4
tools/arch/x86/include/uapi/asm/kvm.h
··· 378 378 struct kvm_vcpu_events events; 379 379 }; 380 380 381 - #define KVM_X86_QUIRK_LINT0_REENABLED (1 << 0) 382 - #define KVM_X86_QUIRK_CD_NW_CLEARED (1 << 1) 383 - #define KVM_X86_QUIRK_LAPIC_MMIO_HOLE (1 << 2) 384 - #define KVM_X86_QUIRK_OUT_7E_INC_RIP (1 << 3) 381 + #define KVM_X86_QUIRK_LINT0_REENABLED (1 << 0) 382 + #define KVM_X86_QUIRK_CD_NW_CLEARED (1 << 1) 383 + #define KVM_X86_QUIRK_LAPIC_MMIO_HOLE (1 << 2) 384 + #define KVM_X86_QUIRK_OUT_7E_INC_RIP (1 << 3) 385 + #define KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT (1 << 4) 385 386 386 387 #define KVM_STATE_NESTED_FORMAT_VMX 0 387 388 #define KVM_STATE_NESTED_FORMAT_SVM 1 /* unused */ ··· 432 431 struct kvm_vmx_nested_state_data vmx[0]; 433 432 } data; 434 433 }; 434 + 435 + /* for KVM_CAP_PMU_EVENT_FILTER */ 436 + struct kvm_pmu_event_filter { 437 + __u32 action; 438 + __u32 nevents; 439 + __u32 fixed_counter_bitmap; 440 + __u32 flags; 441 + __u32 pad[4]; 442 + __u64 events[0]; 443 + }; 444 + 445 + #define KVM_PMU_EVENT_ALLOW 0 446 + #define KVM_PMU_EVENT_DENY 1 435 447 436 448 #endif /* _ASM_X86_KVM_H */
-1
tools/arch/x86/include/uapi/asm/vmx.h
··· 146 146 147 147 #define VMX_ABORT_SAVE_GUEST_MSR_FAIL 1 148 148 #define VMX_ABORT_LOAD_HOST_PDPTE_FAIL 2 149 - #define VMX_ABORT_VMCS_CORRUPTED 3 150 149 #define VMX_ABORT_LOAD_HOST_MSR_FAIL 4 151 150 152 151 #endif /* _UAPIVMX_H */
+3
tools/include/uapi/linux/kvm.h
··· 995 995 #define KVM_CAP_ARM_SVE 170 996 996 #define KVM_CAP_ARM_PTRAUTH_ADDRESS 171 997 997 #define KVM_CAP_ARM_PTRAUTH_GENERIC 172 998 + #define KVM_CAP_PMU_EVENT_FILTER 173 998 999 999 1000 #ifdef KVM_CAP_IRQ_ROUTING 1000 1001 ··· 1330 1329 #define KVM_PPC_GET_RMMU_INFO _IOW(KVMIO, 0xb0, struct kvm_ppc_rmmu_info) 1331 1330 /* Available with KVM_CAP_PPC_GET_CPU_CHAR */ 1332 1331 #define KVM_PPC_GET_CPU_CHAR _IOR(KVMIO, 0xb1, struct kvm_ppc_cpu_char) 1332 + /* Available with KVM_CAP_PMU_EVENT_FILTER */ 1333 + #define KVM_SET_PMU_EVENT_FILTER _IOW(KVMIO, 0xb2, struct kvm_pmu_event_filter) 1333 1334 1334 1335 /* ioctl for vm fd */ 1335 1336 #define KVM_CREATE_DEVICE _IOWR(KVMIO, 0xe0, struct kvm_create_device)