To pick the changes in: bfbab44568779e16 ("KVM: arm64: Implement PSCI SYSTEM_SUSPEND") 7b33a09d036ffd9a ("KVM: arm64: Add support for userspace to suspend a vCPU") ffbb61d09fc56c85 ("KVM: x86: Accept KVM_[GS]ET_TSC_KHZ as a VM ioctl.") 661a20fab7d156cf ("KVM: x86/xen: Advertise and document KVM_XEN_HVM_CONFIG_EVTCHN_SEND") fde0451be8fb3208 ("KVM: x86/xen: Support per-vCPU event channel upcall via local APIC") 28d1629f751c4a5f ("KVM: x86/xen: Kernel acceleration for XENVER_version") 536395260582be74 ("KVM: x86/xen: handle PV timers oneshot mode") 942c2490c23f2800 ("KVM: x86/xen: Add KVM_XEN_VCPU_ATTR_TYPE_VCPU_ID") 2fd6df2f2b47d430 ("KVM: x86/xen: intercept EVTCHNOP_send from guests") 35025735a79eaa89 ("KVM: x86/xen: Support direct injection of event channel events") That automatically adds support for this new ioctl: $ 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 2022-06-28 12:13:07.281150509 -0300 +++ after 2022-06-28 12:13:16.423392896 -0300 @@ -98,6 +98,7 @@ [0xcc] = "GET_SREGS2", [0xcd] = "SET_SREGS2", [0xce] = "GET_STATS_FD", + [0xd0] = "XEN_HVM_EVTCHN_SEND", [0xe0] = "CREATE_DEVICE", [0xe1] = "SET_DEVICE_ATTR", [0xe2] = "GET_DEVICE_ATTR", $ This silences these 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
Showing the changes to tools/include/uapi/linux (1 of 1 file). Show all
Unified · Split
| @@ -444,6 +444,9 @@ struct kvm_run { · 443 unmodified lines | |||
| 444 | #define KVM_SYSTEM_EVENT_SHUTDOWN 1 | 444 | #define KVM_SYSTEM_EVENT_SHUTDOWN 1 |
| 445 | #define KVM_SYSTEM_EVENT_RESET 2 | 445 | #define KVM_SYSTEM_EVENT_RESET 2 |
| 446 | #define KVM_SYSTEM_EVENT_CRASH 3 | 446 | #define KVM_SYSTEM_EVENT_CRASH 3 |
| 447 | #define KVM_SYSTEM_EVENT_WAKEUP 4 | ||
| 448 | #define KVM_SYSTEM_EVENT_SUSPEND 5 | ||
| 449 | #define KVM_SYSTEM_EVENT_SEV_TERM 6 | ||
| 447 | __u32 type; | 450 | __u32 type; |
| 448 | __u32 ndata; | 451 | __u32 ndata; |
| 449 | union { | 452 | union { |
| @@ -646,6 +649,7 @@ struct kvm_vapic_addr { · 196 unmodified lines | |||
| 646 | #define KVM_MP_STATE_OPERATING 7 | 649 | #define KVM_MP_STATE_OPERATING 7 |
| 647 | #define KVM_MP_STATE_LOAD 8 | 650 | #define KVM_MP_STATE_LOAD 8 |
| 648 | #define KVM_MP_STATE_AP_RESET_HOLD 9 | 651 | #define KVM_MP_STATE_AP_RESET_HOLD 9 |
| 652 | #define KVM_MP_STATE_SUSPENDED 10 | ||
| 649 | 653 | ||
| 650 | struct kvm_mp_state { | 654 | struct kvm_mp_state { |
| 651 | __u32 mp_state; | 655 | __u32 mp_state; |
| @@ -1150,8 +1154,9 @@ struct kvm_ppc_resize_hpt { · 498 unmodified lines | |||
| 1150 | #define KVM_CAP_S390_MEM_OP_EXTENSION 211 | 1154 | #define KVM_CAP_S390_MEM_OP_EXTENSION 211 |
| 1151 | #define KVM_CAP_PMU_CAPABILITY 212 | 1155 | #define KVM_CAP_PMU_CAPABILITY 212 |
| 1152 | #define KVM_CAP_DISABLE_QUIRKS2 213 | 1156 | #define KVM_CAP_DISABLE_QUIRKS2 213 |
| 1153 | /* #define KVM_CAP_VM_TSC_CONTROL 214 */ | 1157 | #define KVM_CAP_VM_TSC_CONTROL 214 |
| 1154 | #define KVM_CAP_SYSTEM_EVENT_DATA 215 | 1158 | #define KVM_CAP_SYSTEM_EVENT_DATA 215 |
| 1159 | #define KVM_CAP_ARM_SYSTEM_SUSPEND 216 | ||
| 1155 | 1160 | ||
| 1156 | #ifdef KVM_CAP_IRQ_ROUTING | 1161 | #ifdef KVM_CAP_IRQ_ROUTING |
| 1157 | 1162 | ||
| @@ -1240,6 +1245,7 @@ struct kvm_x86_mce { · 82 unmodified lines | |||
| 1240 | #define KVM_XEN_HVM_CONFIG_SHARED_INFO (1 << 2) | 1245 | #define KVM_XEN_HVM_CONFIG_SHARED_INFO (1 << 2) |
| 1241 | #define KVM_XEN_HVM_CONFIG_RUNSTATE (1 << 3) | 1246 | #define KVM_XEN_HVM_CONFIG_RUNSTATE (1 << 3) |
| 1242 | #define KVM_XEN_HVM_CONFIG_EVTCHN_2LEVEL (1 << 4) | 1247 | #define KVM_XEN_HVM_CONFIG_EVTCHN_2LEVEL (1 << 4) |
| 1248 | #define KVM_XEN_HVM_CONFIG_EVTCHN_SEND (1 << 5) | ||
| 1243 | 1249 | ||
| 1244 | struct kvm_xen_hvm_config { | 1250 | struct kvm_xen_hvm_config { |
| 1245 | __u32 flags; | 1251 | __u32 flags; |
| @@ -1478,7 +1484,8 @@ struct kvm_s390_ucas_mapping { · 232 unmodified lines | |||
| 1478 | #define KVM_SET_PIT2 _IOW(KVMIO, 0xa0, struct kvm_pit_state2) | 1484 | #define KVM_SET_PIT2 _IOW(KVMIO, 0xa0, struct kvm_pit_state2) |
| 1479 | /* Available with KVM_CAP_PPC_GET_PVINFO */ | 1485 | /* Available with KVM_CAP_PPC_GET_PVINFO */ |
| 1480 | #define KVM_PPC_GET_PVINFO _IOW(KVMIO, 0xa1, struct kvm_ppc_pvinfo) | 1486 | #define KVM_PPC_GET_PVINFO _IOW(KVMIO, 0xa1, struct kvm_ppc_pvinfo) |
| 1481 | /* Available with KVM_CAP_TSC_CONTROL */ | 1487 | /* Available with KVM_CAP_TSC_CONTROL for a vCPU, or with |
| 1488 | * KVM_CAP_VM_TSC_CONTROL to set defaults for a VM */ | ||
| 1482 | #define KVM_SET_TSC_KHZ _IO(KVMIO, 0xa2) | 1489 | #define KVM_SET_TSC_KHZ _IO(KVMIO, 0xa2) |
| 1483 | #define KVM_GET_TSC_KHZ _IO(KVMIO, 0xa3) | 1490 | #define KVM_GET_TSC_KHZ _IO(KVMIO, 0xa3) |
| 1484 | /* Available with KVM_CAP_PCI_2_3 */ | 1491 | /* Available with KVM_CAP_PCI_2_3 */ |
| @@ -1694,6 +1701,32 @@ struct kvm_xen_hvm_attr { · 209 unmodified lines | |||
| 1694 | struct { | 1701 | struct { |
| 1695 | __u64 gfn; | 1702 | __u64 gfn; |
| 1696 | } shared_info; | 1703 | } shared_info; |
| 1704 | struct { | ||
| 1705 | __u32 send_port; | ||
| 1706 | __u32 type; /* EVTCHNSTAT_ipi / EVTCHNSTAT_interdomain */ | ||
| 1707 | __u32 flags; | ||
| 1708 | #define KVM_XEN_EVTCHN_DEASSIGN (1 << 0) | ||
| 1709 | #define KVM_XEN_EVTCHN_UPDATE (1 << 1) | ||
| 1710 | #define KVM_XEN_EVTCHN_RESET (1 << 2) | ||
| 1711 | /* | ||
| 1712 | * Events sent by the guest are either looped back to | ||
| 1713 | * the guest itself (potentially on a different port#) | ||
| 1714 | * or signalled via an eventfd. | ||
| 1715 | */ | ||
| 1716 | union { | ||
| 1717 | struct { | ||
| 1718 | __u32 port; | ||
| 1719 | __u32 vcpu; | ||
| 1720 | __u32 priority; | ||
| 1721 | } port; | ||
| 1722 | struct { | ||
| 1723 | __u32 port; /* Zero for eventfd */ | ||
| 1724 | __s32 fd; | ||
| 1725 | } eventfd; | ||
| 1726 | __u32 padding[4]; | ||
| 1727 | } deliver; | ||
| 1728 | } evtchn; | ||
| 1729 | __u32 xen_version; | ||
| 1697 | __u64 pad[8]; | 1730 | __u64 pad[8]; |
| 1698 | } u; | 1731 | } u; |
| 1699 | }; | 1732 | }; |
| @@ -1702,11 +1735,17 @@ struct kvm_xen_hvm_attr { · 2 unmodified lines | |||
| 1702 | #define KVM_XEN_ATTR_TYPE_LONG_MODE 0x0 | 1735 | #define KVM_XEN_ATTR_TYPE_LONG_MODE 0x0 |
| 1703 | #define KVM_XEN_ATTR_TYPE_SHARED_INFO 0x1 | 1736 | #define KVM_XEN_ATTR_TYPE_SHARED_INFO 0x1 |
| 1704 | #define KVM_XEN_ATTR_TYPE_UPCALL_VECTOR 0x2 | 1737 | #define KVM_XEN_ATTR_TYPE_UPCALL_VECTOR 0x2 |
| 1738 | /* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_EVTCHN_SEND */ | ||
| 1739 | #define KVM_XEN_ATTR_TYPE_EVTCHN 0x3 | ||
| 1740 | #define KVM_XEN_ATTR_TYPE_XEN_VERSION 0x4 | ||
| 1705 | 1741 | ||
| 1706 | /* Per-vCPU Xen attributes */ | 1742 | /* Per-vCPU Xen attributes */ |
| 1707 | #define KVM_XEN_VCPU_GET_ATTR _IOWR(KVMIO, 0xca, struct kvm_xen_vcpu_attr) | 1743 | #define KVM_XEN_VCPU_GET_ATTR _IOWR(KVMIO, 0xca, struct kvm_xen_vcpu_attr) |
| 1708 | #define KVM_XEN_VCPU_SET_ATTR _IOW(KVMIO, 0xcb, struct kvm_xen_vcpu_attr) | 1744 | #define KVM_XEN_VCPU_SET_ATTR _IOW(KVMIO, 0xcb, struct kvm_xen_vcpu_attr) |
| 1709 | 1745 | ||
| 1746 | /* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_EVTCHN_SEND */ | ||
| 1747 | #define KVM_XEN_HVM_EVTCHN_SEND _IOW(KVMIO, 0xd0, struct kvm_irq_routing_xen_evtchn) | ||
| 1748 | |||
| 1710 | #define KVM_GET_SREGS2 _IOR(KVMIO, 0xcc, struct kvm_sregs2) | 1749 | #define KVM_GET_SREGS2 _IOR(KVMIO, 0xcc, struct kvm_sregs2) |
| 1711 | #define KVM_SET_SREGS2 _IOW(KVMIO, 0xcd, struct kvm_sregs2) | 1750 | #define KVM_SET_SREGS2 _IOW(KVMIO, 0xcd, struct kvm_sregs2) |
| 1712 | 1751 | ||
| @@ -1724,6 +1763,13 @@ struct kvm_xen_vcpu_attr { · 11 unmodified lines | |||
| 1724 | __u64 time_blocked; | 1763 | __u64 time_blocked; |
| 1725 | __u64 time_offline; | 1764 | __u64 time_offline; |
| 1726 | } runstate; | 1765 | } runstate; |
| 1766 | __u32 vcpu_id; | ||
| 1767 | struct { | ||
| 1768 | __u32 port; | ||
| 1769 | __u32 priority; | ||
| 1770 | __u64 expires_ns; | ||
| 1771 | } timer; | ||
| 1772 | __u8 vector; | ||
| 1727 | } u; | 1773 | } u; |
| 1728 | }; | 1774 | }; |
| 1729 | 1775 | ||
| @@ -1734,6 +1780,10 @@ struct kvm_xen_vcpu_attr { · 4 unmodified lines | |||
| 1734 | #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_CURRENT 0x3 | 1780 | #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_CURRENT 0x3 |
| 1735 | #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA 0x4 | 1781 | #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA 0x4 |
| 1736 | #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADJUST 0x5 | 1782 | #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADJUST 0x5 |
| 1783 | /* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_EVTCHN_SEND */ | ||
| 1784 | #define KVM_XEN_VCPU_ATTR_TYPE_VCPU_ID 0x6 | ||
| 1785 | #define KVM_XEN_VCPU_ATTR_TYPE_TIMER 0x7 | ||
| 1786 | #define KVM_XEN_VCPU_ATTR_TYPE_UPCALL_VECTOR 0x8 | ||
| 1737 | 1787 | ||
| 1738 | /* Secure Encrypted Virtualization command */ | 1788 | /* Secure Encrypted Virtualization command */ |
| 1739 | enum sev_cmd_id { | 1789 | enum sev_cmd_id { |