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 | 444 | #define KVM_SYSTEM_EVENT_SHUTDOWN 1 |
| 445 | 445 | #define KVM_SYSTEM_EVENT_RESET 2 |
| 446 | 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 | 450 | __u32 type; |
| 448 | 451 | __u32 ndata; |
| 449 | 452 | union { |
| @@ -646,6 +649,7 @@ struct kvm_vapic_addr { · 196 unmodified lines | ||
| 646 | 649 | #define KVM_MP_STATE_OPERATING 7 |
| 647 | 650 | #define KVM_MP_STATE_LOAD 8 |
| 648 | 651 | #define KVM_MP_STATE_AP_RESET_HOLD 9 |
| 652 | +#define KVM_MP_STATE_SUSPENDED 10 | |
| 649 | 653 | |
| 650 | 654 | struct kvm_mp_state { |
| 651 | 655 | __u32 mp_state; |
| @@ -1150,8 +1154,9 @@ struct kvm_ppc_resize_hpt { · 498 unmodified lines | ||
| 1150 | 1154 | #define KVM_CAP_S390_MEM_OP_EXTENSION 211 |
| 1151 | 1155 | #define KVM_CAP_PMU_CAPABILITY 212 |
| 1152 | 1156 | #define KVM_CAP_DISABLE_QUIRKS2 213 |
| 1153 | −/* #define KVM_CAP_VM_TSC_CONTROL 214 */ | |
| 1157 | +#define KVM_CAP_VM_TSC_CONTROL 214 | |
| 1154 | 1158 | #define KVM_CAP_SYSTEM_EVENT_DATA 215 |
| 1159 | +#define KVM_CAP_ARM_SYSTEM_SUSPEND 216 | |
| 1155 | 1160 | |
| 1156 | 1161 | #ifdef KVM_CAP_IRQ_ROUTING |
| 1157 | 1162 | |
| @@ -1240,6 +1245,7 @@ struct kvm_x86_mce { · 82 unmodified lines | ||
| 1240 | 1245 | #define KVM_XEN_HVM_CONFIG_SHARED_INFO (1 << 2) |
| 1241 | 1246 | #define KVM_XEN_HVM_CONFIG_RUNSTATE (1 << 3) |
| 1242 | 1247 | #define KVM_XEN_HVM_CONFIG_EVTCHN_2LEVEL (1 << 4) |
| 1248 | +#define KVM_XEN_HVM_CONFIG_EVTCHN_SEND (1 << 5) | |
| 1243 | 1249 | |
| 1244 | 1250 | struct kvm_xen_hvm_config { |
| 1245 | 1251 | __u32 flags; |
| @@ -1478,7 +1484,8 @@ struct kvm_s390_ucas_mapping { · 232 unmodified lines | ||
| 1478 | 1484 | #define KVM_SET_PIT2 _IOW(KVMIO, 0xa0, struct kvm_pit_state2) |
| 1479 | 1485 | /* Available with KVM_CAP_PPC_GET_PVINFO */ |
| 1480 | 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 | 1489 | #define KVM_SET_TSC_KHZ _IO(KVMIO, 0xa2) |
| 1483 | 1490 | #define KVM_GET_TSC_KHZ _IO(KVMIO, 0xa3) |
| 1484 | 1491 | /* Available with KVM_CAP_PCI_2_3 */ |
| @@ -1694,6 +1701,32 @@ struct kvm_xen_hvm_attr { · 209 unmodified lines | ||
| 1694 | 1701 | struct { |
| 1695 | 1702 | __u64 gfn; |
| 1696 | 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 | 1730 | __u64 pad[8]; |
| 1698 | 1731 | } u; |
| 1699 | 1732 | }; |
| @@ -1702,11 +1735,17 @@ struct kvm_xen_hvm_attr { · 2 unmodified lines | ||
| 1702 | 1735 | #define KVM_XEN_ATTR_TYPE_LONG_MODE 0x0 |
| 1703 | 1736 | #define KVM_XEN_ATTR_TYPE_SHARED_INFO 0x1 |
| 1704 | 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 | 1742 | /* Per-vCPU Xen attributes */ |
| 1707 | 1743 | #define KVM_XEN_VCPU_GET_ATTR _IOWR(KVMIO, 0xca, struct kvm_xen_vcpu_attr) |
| 1708 | 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 | 1749 | #define KVM_GET_SREGS2 _IOR(KVMIO, 0xcc, struct kvm_sregs2) |
| 1711 | 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 | 1763 | __u64 time_blocked; |
| 1725 | 1764 | __u64 time_offline; |
| 1726 | 1765 | } runstate; |
| 1766 | + __u32 vcpu_id; | |
| 1767 | + struct { | |
| 1768 | + __u32 port; | |
| 1769 | + __u32 priority; | |
| 1770 | + __u64 expires_ns; | |
| 1771 | + } timer; | |
| 1772 | + __u8 vector; | |
| 1727 | 1773 | } u; |
| 1728 | 1774 | }; |
| 1729 | 1775 | |
| @@ -1734,6 +1780,10 @@ struct kvm_xen_vcpu_attr { · 4 unmodified lines | ||
| 1734 | 1780 | #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_CURRENT 0x3 |
| 1735 | 1781 | #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA 0x4 |
| 1736 | 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 | 1788 | /* Secure Encrypted Virtualization command */ |
| 1739 | 1789 | enum sev_cmd_id { |