tools kvm headers: Update KVM headers from the kernel sources
Some should cause changes in tooling, like the one adding LAST_EXCP, but the way it is structured end up not making that happen. The new SVM_EXIT_INVPCID should get used by arch/x86/util/kvm-stat.c, in the svm_exit_reasons table. The tools/perf/trace/beauty part has scripts to catch changes and automagically create tables, like tools/perf/trace/beauty/kvm_ioctl.sh, but changes are needed to make tools/perf/arch/x86/util/kvm-stat.c catch those automatically. These were handled by the existing scripts: $ 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 2020-11-03 08:43:52.910728608 -0300 +++ after 2020-11-03 08:44:04.273959984 -0300 @@ -89,6 +89,7 @@ [0xbf] = "SET_NESTED_STATE", [0xc0] = "CLEAR_DIRTY_LOG", [0xc1] = "GET_SUPPORTED_HV_CPUID", + [0xc6] = "X86_SET_MSR_FILTER", [0xe0] = "CREATE_DEVICE", [0xe1] = "SET_DEVICE_ATTR", [0xe2] = "GET_DEVICE_ATTR", $ $ tools/perf/trace/beauty/vhost_virtio_ioctl.sh > before $ cp include/uapi/linux/vhost.h tools/include/uapi/linux/vhost.h $ $ tools/perf/trace/beauty/vhost_virtio_ioctl.sh > after $ diff -u before after --- before 2020-11-03 08:45:55.522225198 -0300 +++ after 2020-11-03 08:46:12.881578666 -0300 @@ -37,4 +37,5 @@ [0x71] = "VDPA_GET_STATUS", [0x73] = "VDPA_GET_CONFIG", [0x76] = "VDPA_GET_VRING_NUM", + [0x78] = "VDPA_GET_IOVA_RANGE", }; $ This addresses these perf build warnings: 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/s390/include/uapi/asm/sie.h' differs from latest version at 'arch/s390/include/uapi/asm/sie.h' diff -u tools/arch/s390/include/uapi/asm/sie.h arch/s390/include/uapi/asm/sie.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/arch/x86/include/uapi/asm/svm.h' differs from latest version at 'arch/x86/include/uapi/asm/svm.h' diff -u tools/arch/x86/include/uapi/asm/svm.h arch/x86/include/uapi/asm/svm.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 Warning: Kernel ABI header at 'tools/include/uapi/linux/vhost.h' differs from latest version at 'include/uapi/linux/vhost.h' diff -u tools/include/uapi/linux/vhost.h include/uapi/linux/vhost.h Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Yarygin <yarygin@linux.vnet.ibm.com> Cc: Borislav Petkov <bp@suse.de> Cc: Christian Borntraeger <borntraeger@de.ibm.com> Cc: Cornelia Huck <cornelia.huck@de.ibm.com> Cc: David Ahern <dsahern@gmail.com> Cc: Ian Rogers <irogers@google.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Joerg Roedel <jroedel@suse.de> Cc: Namhyung Kim <namhyung@kernel.org> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Родитель
97a3863b17
Коммит
aa04899a13
|
@ -159,6 +159,21 @@ struct kvm_sync_regs {
|
||||||
struct kvm_arch_memory_slot {
|
struct kvm_arch_memory_slot {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PMU filter structure. Describe a range of events with a particular
|
||||||
|
* action. To be used with KVM_ARM_VCPU_PMU_V3_FILTER.
|
||||||
|
*/
|
||||||
|
struct kvm_pmu_event_filter {
|
||||||
|
__u16 base_event;
|
||||||
|
__u16 nevents;
|
||||||
|
|
||||||
|
#define KVM_PMU_EVENT_ALLOW 0
|
||||||
|
#define KVM_PMU_EVENT_DENY 1
|
||||||
|
|
||||||
|
__u8 action;
|
||||||
|
__u8 pad[3];
|
||||||
|
};
|
||||||
|
|
||||||
/* for KVM_GET/SET_VCPU_EVENTS */
|
/* for KVM_GET/SET_VCPU_EVENTS */
|
||||||
struct kvm_vcpu_events {
|
struct kvm_vcpu_events {
|
||||||
struct {
|
struct {
|
||||||
|
@ -242,6 +257,15 @@ struct kvm_vcpu_events {
|
||||||
#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_AVAIL 0
|
#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_AVAIL 0
|
||||||
#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_AVAIL 1
|
#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_AVAIL 1
|
||||||
#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_REQUIRED 2
|
#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_REQUIRED 2
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Only two states can be presented by the host kernel:
|
||||||
|
* - NOT_REQUIRED: the guest doesn't need to do anything
|
||||||
|
* - NOT_AVAIL: the guest isn't mitigated (it can still use SSBS if available)
|
||||||
|
*
|
||||||
|
* All the other values are deprecated. The host still accepts all
|
||||||
|
* values (they are ABI), but will narrow them to the above two.
|
||||||
|
*/
|
||||||
#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2 KVM_REG_ARM_FW_REG(2)
|
#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2 KVM_REG_ARM_FW_REG(2)
|
||||||
#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_AVAIL 0
|
#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_AVAIL 0
|
||||||
#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_UNKNOWN 1
|
#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_UNKNOWN 1
|
||||||
|
@ -329,6 +353,7 @@ struct kvm_vcpu_events {
|
||||||
#define KVM_ARM_VCPU_PMU_V3_CTRL 0
|
#define KVM_ARM_VCPU_PMU_V3_CTRL 0
|
||||||
#define KVM_ARM_VCPU_PMU_V3_IRQ 0
|
#define KVM_ARM_VCPU_PMU_V3_IRQ 0
|
||||||
#define KVM_ARM_VCPU_PMU_V3_INIT 1
|
#define KVM_ARM_VCPU_PMU_V3_INIT 1
|
||||||
|
#define KVM_ARM_VCPU_PMU_V3_FILTER 2
|
||||||
#define KVM_ARM_VCPU_TIMER_CTRL 1
|
#define KVM_ARM_VCPU_TIMER_CTRL 1
|
||||||
#define KVM_ARM_VCPU_TIMER_IRQ_VTIMER 0
|
#define KVM_ARM_VCPU_TIMER_IRQ_VTIMER 0
|
||||||
#define KVM_ARM_VCPU_TIMER_IRQ_PTIMER 1
|
#define KVM_ARM_VCPU_TIMER_IRQ_PTIMER 1
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
{ 0x13, "SIGP conditional emergency signal" }, \
|
{ 0x13, "SIGP conditional emergency signal" }, \
|
||||||
{ 0x15, "SIGP sense running" }, \
|
{ 0x15, "SIGP sense running" }, \
|
||||||
{ 0x16, "SIGP set multithreading"}, \
|
{ 0x16, "SIGP set multithreading"}, \
|
||||||
{ 0x17, "SIGP store additional status ait address"}
|
{ 0x17, "SIGP store additional status at address"}
|
||||||
|
|
||||||
#define icpt_prog_codes \
|
#define icpt_prog_codes \
|
||||||
{ 0x0001, "Prog Operation" }, \
|
{ 0x0001, "Prog Operation" }, \
|
||||||
|
|
|
@ -192,6 +192,26 @@ struct kvm_msr_list {
|
||||||
__u32 indices[0];
|
__u32 indices[0];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Maximum size of any access bitmap in bytes */
|
||||||
|
#define KVM_MSR_FILTER_MAX_BITMAP_SIZE 0x600
|
||||||
|
|
||||||
|
/* for KVM_X86_SET_MSR_FILTER */
|
||||||
|
struct kvm_msr_filter_range {
|
||||||
|
#define KVM_MSR_FILTER_READ (1 << 0)
|
||||||
|
#define KVM_MSR_FILTER_WRITE (1 << 1)
|
||||||
|
__u32 flags;
|
||||||
|
__u32 nmsrs; /* number of msrs in bitmap */
|
||||||
|
__u32 base; /* MSR index the bitmap starts at */
|
||||||
|
__u8 *bitmap; /* a 1 bit allows the operations in flags, 0 denies */
|
||||||
|
};
|
||||||
|
|
||||||
|
#define KVM_MSR_FILTER_MAX_RANGES 16
|
||||||
|
struct kvm_msr_filter {
|
||||||
|
#define KVM_MSR_FILTER_DEFAULT_ALLOW (0 << 0)
|
||||||
|
#define KVM_MSR_FILTER_DEFAULT_DENY (1 << 0)
|
||||||
|
__u32 flags;
|
||||||
|
struct kvm_msr_filter_range ranges[KVM_MSR_FILTER_MAX_RANGES];
|
||||||
|
};
|
||||||
|
|
||||||
struct kvm_cpuid_entry {
|
struct kvm_cpuid_entry {
|
||||||
__u32 function;
|
__u32 function;
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#define SVM_EXIT_WRITE_DR6 0x036
|
#define SVM_EXIT_WRITE_DR6 0x036
|
||||||
#define SVM_EXIT_WRITE_DR7 0x037
|
#define SVM_EXIT_WRITE_DR7 0x037
|
||||||
#define SVM_EXIT_EXCP_BASE 0x040
|
#define SVM_EXIT_EXCP_BASE 0x040
|
||||||
|
#define SVM_EXIT_LAST_EXCP 0x05f
|
||||||
#define SVM_EXIT_INTR 0x060
|
#define SVM_EXIT_INTR 0x060
|
||||||
#define SVM_EXIT_NMI 0x061
|
#define SVM_EXIT_NMI 0x061
|
||||||
#define SVM_EXIT_SMI 0x062
|
#define SVM_EXIT_SMI 0x062
|
||||||
|
@ -76,10 +77,21 @@
|
||||||
#define SVM_EXIT_MWAIT_COND 0x08c
|
#define SVM_EXIT_MWAIT_COND 0x08c
|
||||||
#define SVM_EXIT_XSETBV 0x08d
|
#define SVM_EXIT_XSETBV 0x08d
|
||||||
#define SVM_EXIT_RDPRU 0x08e
|
#define SVM_EXIT_RDPRU 0x08e
|
||||||
|
#define SVM_EXIT_INVPCID 0x0a2
|
||||||
#define SVM_EXIT_NPF 0x400
|
#define SVM_EXIT_NPF 0x400
|
||||||
#define SVM_EXIT_AVIC_INCOMPLETE_IPI 0x401
|
#define SVM_EXIT_AVIC_INCOMPLETE_IPI 0x401
|
||||||
#define SVM_EXIT_AVIC_UNACCELERATED_ACCESS 0x402
|
#define SVM_EXIT_AVIC_UNACCELERATED_ACCESS 0x402
|
||||||
|
|
||||||
|
/* SEV-ES software-defined VMGEXIT events */
|
||||||
|
#define SVM_VMGEXIT_MMIO_READ 0x80000001
|
||||||
|
#define SVM_VMGEXIT_MMIO_WRITE 0x80000002
|
||||||
|
#define SVM_VMGEXIT_NMI_COMPLETE 0x80000003
|
||||||
|
#define SVM_VMGEXIT_AP_HLT_LOOP 0x80000004
|
||||||
|
#define SVM_VMGEXIT_AP_JUMP_TABLE 0x80000005
|
||||||
|
#define SVM_VMGEXIT_SET_AP_JUMP_TABLE 0
|
||||||
|
#define SVM_VMGEXIT_GET_AP_JUMP_TABLE 1
|
||||||
|
#define SVM_VMGEXIT_UNSUPPORTED_EVENT 0x8000ffff
|
||||||
|
|
||||||
#define SVM_EXIT_ERR -1
|
#define SVM_EXIT_ERR -1
|
||||||
|
|
||||||
#define SVM_EXIT_REASONS \
|
#define SVM_EXIT_REASONS \
|
||||||
|
@ -171,6 +183,7 @@
|
||||||
{ SVM_EXIT_MONITOR, "monitor" }, \
|
{ SVM_EXIT_MONITOR, "monitor" }, \
|
||||||
{ SVM_EXIT_MWAIT, "mwait" }, \
|
{ SVM_EXIT_MWAIT, "mwait" }, \
|
||||||
{ SVM_EXIT_XSETBV, "xsetbv" }, \
|
{ SVM_EXIT_XSETBV, "xsetbv" }, \
|
||||||
|
{ SVM_EXIT_INVPCID, "invpcid" }, \
|
||||||
{ SVM_EXIT_NPF, "npf" }, \
|
{ SVM_EXIT_NPF, "npf" }, \
|
||||||
{ SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, \
|
{ SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, \
|
||||||
{ SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, \
|
{ SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, \
|
||||||
|
|
|
@ -248,6 +248,8 @@ struct kvm_hyperv_exit {
|
||||||
#define KVM_EXIT_IOAPIC_EOI 26
|
#define KVM_EXIT_IOAPIC_EOI 26
|
||||||
#define KVM_EXIT_HYPERV 27
|
#define KVM_EXIT_HYPERV 27
|
||||||
#define KVM_EXIT_ARM_NISV 28
|
#define KVM_EXIT_ARM_NISV 28
|
||||||
|
#define KVM_EXIT_X86_RDMSR 29
|
||||||
|
#define KVM_EXIT_X86_WRMSR 30
|
||||||
|
|
||||||
/* For KVM_EXIT_INTERNAL_ERROR */
|
/* For KVM_EXIT_INTERNAL_ERROR */
|
||||||
/* Emulate instruction failed. */
|
/* Emulate instruction failed. */
|
||||||
|
@ -413,6 +415,17 @@ struct kvm_run {
|
||||||
__u64 esr_iss;
|
__u64 esr_iss;
|
||||||
__u64 fault_ipa;
|
__u64 fault_ipa;
|
||||||
} arm_nisv;
|
} arm_nisv;
|
||||||
|
/* KVM_EXIT_X86_RDMSR / KVM_EXIT_X86_WRMSR */
|
||||||
|
struct {
|
||||||
|
__u8 error; /* user -> kernel */
|
||||||
|
__u8 pad[7];
|
||||||
|
#define KVM_MSR_EXIT_REASON_INVAL (1 << 0)
|
||||||
|
#define KVM_MSR_EXIT_REASON_UNKNOWN (1 << 1)
|
||||||
|
#define KVM_MSR_EXIT_REASON_FILTER (1 << 2)
|
||||||
|
__u32 reason; /* kernel -> user */
|
||||||
|
__u32 index; /* kernel -> user */
|
||||||
|
__u64 data; /* kernel <-> user */
|
||||||
|
} msr;
|
||||||
/* Fix the size of the union. */
|
/* Fix the size of the union. */
|
||||||
char padding[256];
|
char padding[256];
|
||||||
};
|
};
|
||||||
|
@ -1037,6 +1050,9 @@ struct kvm_ppc_resize_hpt {
|
||||||
#define KVM_CAP_SMALLER_MAXPHYADDR 185
|
#define KVM_CAP_SMALLER_MAXPHYADDR 185
|
||||||
#define KVM_CAP_S390_DIAG318 186
|
#define KVM_CAP_S390_DIAG318 186
|
||||||
#define KVM_CAP_STEAL_TIME 187
|
#define KVM_CAP_STEAL_TIME 187
|
||||||
|
#define KVM_CAP_X86_USER_SPACE_MSR 188
|
||||||
|
#define KVM_CAP_X86_MSR_FILTER 189
|
||||||
|
#define KVM_CAP_ENFORCE_PV_FEATURE_CPUID 190
|
||||||
|
|
||||||
#ifdef KVM_CAP_IRQ_ROUTING
|
#ifdef KVM_CAP_IRQ_ROUTING
|
||||||
|
|
||||||
|
@ -1538,6 +1554,9 @@ struct kvm_pv_cmd {
|
||||||
/* Available with KVM_CAP_S390_PROTECTED */
|
/* Available with KVM_CAP_S390_PROTECTED */
|
||||||
#define KVM_S390_PV_COMMAND _IOWR(KVMIO, 0xc5, struct kvm_pv_cmd)
|
#define KVM_S390_PV_COMMAND _IOWR(KVMIO, 0xc5, struct kvm_pv_cmd)
|
||||||
|
|
||||||
|
/* Available with KVM_CAP_X86_MSR_FILTER */
|
||||||
|
#define KVM_X86_SET_MSR_FILTER _IOW(KVMIO, 0xc6, struct kvm_msr_filter)
|
||||||
|
|
||||||
/* Secure Encrypted Virtualization command */
|
/* Secure Encrypted Virtualization command */
|
||||||
enum sev_cmd_id {
|
enum sev_cmd_id {
|
||||||
/* Guest initialization commands */
|
/* Guest initialization commands */
|
||||||
|
|
|
@ -146,4 +146,8 @@
|
||||||
|
|
||||||
/* Set event fd for config interrupt*/
|
/* Set event fd for config interrupt*/
|
||||||
#define VHOST_VDPA_SET_CONFIG_CALL _IOW(VHOST_VIRTIO, 0x77, int)
|
#define VHOST_VDPA_SET_CONFIG_CALL _IOW(VHOST_VIRTIO, 0x77, int)
|
||||||
|
|
||||||
|
/* Get the valid iova range */
|
||||||
|
#define VHOST_VDPA_GET_IOVA_RANGE _IOR(VHOST_VIRTIO, 0x78, \
|
||||||
|
struct vhost_vdpa_iova_range)
|
||||||
#endif
|
#endif
|
||||||
|
|
Загрузка…
Ссылка в новой задаче