To get the changes from these csets: 2bc39970e932 ("x86/kvm/hyper-v: Introduce KVM_GET_SUPPORTED_HV_CPUID") 2a31b9db1535 ("kvm: introduce manual dirty log reprotect") That results in these new KVM IOCTLs being supported in 'perf trace' when beautifying the cmd ioctl syscall argument: $ 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-01-04 11:44:23.506605301 -0300 +++ after 2019-01-04 11:44:36.878730583 -0300 @@ -86,6 +86,8 @@ [0xbd] = "HYPERV_EVENTFD", [0xbe] = "GET_NESTED_STATE", [0xbf] = "SET_NESTED_STATE", + [0xc0] = "CLEAR_DIRTY_LOG", + [0xc1] = "GET_SUPPORTED_HV_CPUID", [0xe0] = "CREATE_DEVICE", [0xe1] = "SET_DEVICE_ATTR", [0xe2] = "GET_DEVICE_ATTR", $ At some point we should be able to do something: # perf trace -e ioctl(cmd == KVM_CLEAR_DIRTY_LOG) And have just those ioctls, optionally with callchains, etc.
Showing the changes to tools/include/uapi/linux (1 of 1 file). Show all
Unified · Split
| @@ -492,6 +492,17 @@ struct kvm_dirty_log { · 491 unmodified lines | |||
| 492 | }; | 492 | }; |
| 493 | }; | 493 | }; |
| 494 | 494 | ||
| 495 | /* for KVM_CLEAR_DIRTY_LOG */ | ||
| 496 | struct kvm_clear_dirty_log { | ||
| 497 | __u32 slot; | ||
| 498 | __u32 num_pages; | ||
| 499 | __u64 first_page; | ||
| 500 | union { | ||
| 501 | void __user *dirty_bitmap; /* one bit per page */ | ||
| 502 | __u64 padding2; | ||
| 503 | }; | ||
| 504 | }; | ||
| 505 | |||
| 495 | /* for KVM_SET_SIGNAL_MASK */ | 506 | /* for KVM_SET_SIGNAL_MASK */ |
| 496 | struct kvm_signal_mask { | 507 | struct kvm_signal_mask { |
| 497 | __u32 len; | 508 | __u32 len; |
| @@ -975,6 +986,8 @@ struct kvm_ppc_resize_hpt { · 477 unmodified lines | |||
| 975 | #define KVM_CAP_HYPERV_ENLIGHTENED_VMCS 163 | 986 | #define KVM_CAP_HYPERV_ENLIGHTENED_VMCS 163 |
| 976 | #define KVM_CAP_EXCEPTION_PAYLOAD 164 | 987 | #define KVM_CAP_EXCEPTION_PAYLOAD 164 |
| 977 | #define KVM_CAP_ARM_VM_IPA_SIZE 165 | 988 | #define KVM_CAP_ARM_VM_IPA_SIZE 165 |
| 989 | #define KVM_CAP_MANUAL_DIRTY_LOG_PROTECT 166 | ||
| 990 | #define KVM_CAP_HYPERV_CPUID 167 | ||
| 978 | 991 | ||
| 979 | #ifdef KVM_CAP_IRQ_ROUTING | 992 | #ifdef KVM_CAP_IRQ_ROUTING |
| 980 | 993 | ||
| @@ -1421,6 +1434,12 @@ struct kvm_enc_region { · 440 unmodified lines | |||
| 1421 | #define KVM_GET_NESTED_STATE _IOWR(KVMIO, 0xbe, struct kvm_nested_state) | 1434 | #define KVM_GET_NESTED_STATE _IOWR(KVMIO, 0xbe, struct kvm_nested_state) |
| 1422 | #define KVM_SET_NESTED_STATE _IOW(KVMIO, 0xbf, struct kvm_nested_state) | 1435 | #define KVM_SET_NESTED_STATE _IOW(KVMIO, 0xbf, struct kvm_nested_state) |
| 1423 | 1436 | ||
| 1437 | /* Available with KVM_CAP_MANUAL_DIRTY_LOG_PROTECT */ | ||
| 1438 | #define KVM_CLEAR_DIRTY_LOG _IOWR(KVMIO, 0xc0, struct kvm_clear_dirty_log) | ||
| 1439 | |||
| 1440 | /* Available with KVM_CAP_HYPERV_CPUID */ | ||
| 1441 | #define KVM_GET_SUPPORTED_HV_CPUID _IOWR(KVMIO, 0xc1, struct kvm_cpuid2) | ||
| 1442 | |||
| 1424 | /* Secure Encrypted Virtualization command */ | 1443 | /* Secure Encrypted Virtualization command */ |
| 1425 | enum sev_cmd_id { | 1444 | enum sev_cmd_id { |
| 1426 | /* Guest initialization commands */ | 1445 | /* Guest initialization commands */ |