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 | 506 | /* for KVM_SET_SIGNAL_MASK */ |
| 496 | 507 | struct kvm_signal_mask { |
| 497 | 508 | __u32 len; |
| @@ -975,6 +986,8 @@ struct kvm_ppc_resize_hpt { · 477 unmodified lines | ||
| 975 | 986 | #define KVM_CAP_HYPERV_ENLIGHTENED_VMCS 163 |
| 976 | 987 | #define KVM_CAP_EXCEPTION_PAYLOAD 164 |
| 977 | 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 | 992 | #ifdef KVM_CAP_IRQ_ROUTING |
| 980 | 993 | |
| @@ -1421,6 +1434,12 @@ struct kvm_enc_region { · 440 unmodified lines | ||
| 1421 | 1434 | #define KVM_GET_NESTED_STATE _IOWR(KVMIO, 0xbe, struct kvm_nested_state) |
| 1422 | 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 | 1443 | /* Secure Encrypted Virtualization command */ |
| 1425 | 1444 | enum sev_cmd_id { |
| 1426 | 1445 | /* Guest initialization commands */ |