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

tools headers UAPI: Sync kvm.h headers with the kernel sources

To pick the changes in:

d9a47edabc4f9481 ("KVM: PPC: Book3S HV: Introduce new capability for 2nd DAWR")
8d4e7e80838f45d3 ("KVM: x86: declare Xen HVM shared info capability and add test case")
40da8ccd724f7ca2 ("KVM: x86/xen: Add event channel interrupt vector upcall")

These new IOCTLs are now supported on 'perf trace':

$ 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 2021-02-23 09:55:46.229058308 -0300
+++ after 2021-02-23 09:55:57.509308058 -0300
@@ -91,6 +91,10 @@
[0xc1] = "GET_SUPPORTED_HV_CPUID",
[0xc6] = "X86_SET_MSR_FILTER",
[0xc7] = "RESET_DIRTY_RINGS",
+ [0xc8] = "XEN_HVM_GET_ATTR",
+ [0xc9] = "XEN_HVM_SET_ATTR",
+ [0xca] = "XEN_VCPU_GET_ATTR",
+ [0xcb] = "XEN_VCPU_SET_ATTR",
[0xe0] = "CREATE_DEVICE",
[0xe1] = "SET_DEVICE_ATTR",
[0xe2] = "GET_DEVICE_ATTR",
$

Addressing this perf build warning:
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

Cc: David Woodhouse <dwmw@amazon.co.uk>
Cc: Paul Mackerras <paulus@ozlabs.org>
Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

+73
+73
tools/include/uapi/linux/kvm.h
··· 216 216 } u; 217 217 }; 218 218 219 + struct kvm_xen_exit { 220 + #define KVM_EXIT_XEN_HCALL 1 221 + __u32 type; 222 + union { 223 + struct { 224 + __u32 longmode; 225 + __u32 cpl; 226 + __u64 input; 227 + __u64 result; 228 + __u64 params[6]; 229 + } hcall; 230 + } u; 231 + }; 232 + 219 233 #define KVM_S390_GET_SKEYS_NONE 1 220 234 #define KVM_S390_SKEYS_MAX 1048576 221 235 ··· 266 252 #define KVM_EXIT_X86_WRMSR 30 267 253 #define KVM_EXIT_DIRTY_RING_FULL 31 268 254 #define KVM_EXIT_AP_RESET_HOLD 32 255 + #define KVM_EXIT_X86_BUS_LOCK 33 256 + #define KVM_EXIT_XEN 34 269 257 270 258 /* For KVM_EXIT_INTERNAL_ERROR */ 271 259 /* Emulate instruction failed. */ ··· 444 428 __u32 index; /* kernel -> user */ 445 429 __u64 data; /* kernel <-> user */ 446 430 } msr; 431 + /* KVM_EXIT_XEN */ 432 + struct kvm_xen_exit xen; 447 433 /* Fix the size of the union. */ 448 434 char padding[256]; 449 435 }; ··· 1076 1058 #define KVM_CAP_ENFORCE_PV_FEATURE_CPUID 190 1077 1059 #define KVM_CAP_SYS_HYPERV_CPUID 191 1078 1060 #define KVM_CAP_DIRTY_LOG_RING 192 1061 + #define KVM_CAP_X86_BUS_LOCK_EXIT 193 1079 1062 #define KVM_CAP_PPC_DAWR1 194 1080 1063 1081 1064 #ifdef KVM_CAP_IRQ_ROUTING ··· 1151 1132 #endif 1152 1133 1153 1134 #ifdef KVM_CAP_XEN_HVM 1135 + #define KVM_XEN_HVM_CONFIG_HYPERCALL_MSR (1 << 0) 1136 + #define KVM_XEN_HVM_CONFIG_INTERCEPT_HCALL (1 << 1) 1137 + #define KVM_XEN_HVM_CONFIG_SHARED_INFO (1 << 2) 1138 + 1154 1139 struct kvm_xen_hvm_config { 1155 1140 __u32 flags; 1156 1141 __u32 msr; ··· 1589 1566 /* Available with KVM_CAP_DIRTY_LOG_RING */ 1590 1567 #define KVM_RESET_DIRTY_RINGS _IO(KVMIO, 0xc7) 1591 1568 1569 + /* Per-VM Xen attributes */ 1570 + #define KVM_XEN_HVM_GET_ATTR _IOWR(KVMIO, 0xc8, struct kvm_xen_hvm_attr) 1571 + #define KVM_XEN_HVM_SET_ATTR _IOW(KVMIO, 0xc9, struct kvm_xen_hvm_attr) 1572 + 1573 + struct kvm_xen_hvm_attr { 1574 + __u16 type; 1575 + __u16 pad[3]; 1576 + union { 1577 + __u8 long_mode; 1578 + __u8 vector; 1579 + struct { 1580 + __u64 gfn; 1581 + } shared_info; 1582 + __u64 pad[8]; 1583 + } u; 1584 + }; 1585 + 1586 + /* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_SHARED_INFO */ 1587 + #define KVM_XEN_ATTR_TYPE_LONG_MODE 0x0 1588 + #define KVM_XEN_ATTR_TYPE_SHARED_INFO 0x1 1589 + #define KVM_XEN_ATTR_TYPE_UPCALL_VECTOR 0x2 1590 + 1591 + /* Per-vCPU Xen attributes */ 1592 + #define KVM_XEN_VCPU_GET_ATTR _IOWR(KVMIO, 0xca, struct kvm_xen_vcpu_attr) 1593 + #define KVM_XEN_VCPU_SET_ATTR _IOW(KVMIO, 0xcb, struct kvm_xen_vcpu_attr) 1594 + 1595 + struct kvm_xen_vcpu_attr { 1596 + __u16 type; 1597 + __u16 pad[3]; 1598 + union { 1599 + __u64 gpa; 1600 + __u64 pad[8]; 1601 + } u; 1602 + }; 1603 + 1604 + /* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_SHARED_INFO */ 1605 + #define KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO 0x0 1606 + #define KVM_XEN_VCPU_ATTR_TYPE_VCPU_TIME_INFO 0x1 1607 + 1592 1608 /* Secure Encrypted Virtualization command */ 1593 1609 enum sev_cmd_id { 1594 1610 /* Guest initialization commands */ ··· 1656 1594 KVM_SEV_DBG_ENCRYPT, 1657 1595 /* Guest certificates commands */ 1658 1596 KVM_SEV_CERT_EXPORT, 1597 + /* Attestation report */ 1598 + KVM_SEV_GET_ATTESTATION_REPORT, 1659 1599 1660 1600 KVM_SEV_NR_MAX, 1661 1601 }; ··· 1707 1643 struct kvm_sev_dbg { 1708 1644 __u64 src_uaddr; 1709 1645 __u64 dst_uaddr; 1646 + __u32 len; 1647 + }; 1648 + 1649 + struct kvm_sev_attestation_report { 1650 + __u8 mnonce[16]; 1651 + __u64 uaddr; 1710 1652 __u32 len; 1711 1653 }; 1712 1654 ··· 1836 1766 __u32 slot; 1837 1767 __u64 offset; 1838 1768 }; 1769 + 1770 + #define KVM_BUS_LOCK_DETECTION_OFF (1 << 0) 1771 + #define KVM_BUS_LOCK_DETECTION_EXIT (1 << 1) 1839 1772 1840 1773 #endif /* __LINUX_KVM_H */