diff options
| -rw-r--r-- | tools/perf/arch/x86/util/kvm-stat.c | 5 | ||||
| -rw-r--r-- | tools/perf/builtin-kvm.c | 13 | ||||
| -rw-r--r-- | tools/perf/util/kvm-stat.h | 1 |
3 files changed, 18 insertions, 1 deletions
diff --git a/tools/perf/arch/x86/util/kvm-stat.c b/tools/perf/arch/x86/util/kvm-stat.c index 2f8d2c1af5ca..14e4e668fad7 100644 --- a/tools/perf/arch/x86/util/kvm-stat.c +++ b/tools/perf/arch/x86/util/kvm-stat.c | |||
| @@ -136,6 +136,11 @@ struct kvm_reg_events_ops kvm_reg_events_ops[] = { | |||
| 136 | { NULL, NULL }, | 136 | { NULL, NULL }, |
| 137 | }; | 137 | }; |
| 138 | 138 | ||
| 139 | const char * const kvm_skip_events[] = { | ||
| 140 | "HLT", | ||
| 141 | NULL, | ||
| 142 | }; | ||
| 143 | |||
| 139 | int cpu_isa_init(struct perf_kvm_stat *kvm, const char *cpuid) | 144 | int cpu_isa_init(struct perf_kvm_stat *kvm, const char *cpuid) |
| 140 | { | 145 | { |
| 141 | if (strstr(cpuid, "Intel")) { | 146 | if (strstr(cpuid, "Intel")) { |
diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c index 75ee8c1a6baf..fc2d63d3e791 100644 --- a/tools/perf/builtin-kvm.c +++ b/tools/perf/builtin-kvm.c | |||
| @@ -261,6 +261,17 @@ static bool update_kvm_event(struct kvm_event *event, int vcpu_id, | |||
| 261 | return true; | 261 | return true; |
| 262 | } | 262 | } |
| 263 | 263 | ||
| 264 | static bool skip_event(const char *event) | ||
| 265 | { | ||
| 266 | const char * const *skip_events; | ||
| 267 | |||
| 268 | for (skip_events = kvm_skip_events; *skip_events; skip_events++) | ||
| 269 | if (!strcmp(event, *skip_events)) | ||
| 270 | return true; | ||
| 271 | |||
| 272 | return false; | ||
| 273 | } | ||
| 274 | |||
| 264 | static bool handle_end_event(struct perf_kvm_stat *kvm, | 275 | static bool handle_end_event(struct perf_kvm_stat *kvm, |
| 265 | struct vcpu_event_record *vcpu_record, | 276 | struct vcpu_event_record *vcpu_record, |
| 266 | struct event_key *key, | 277 | struct event_key *key, |
| @@ -312,7 +323,7 @@ static bool handle_end_event(struct perf_kvm_stat *kvm, | |||
| 312 | char decode[DECODE_STR_LEN]; | 323 | char decode[DECODE_STR_LEN]; |
| 313 | 324 | ||
| 314 | kvm->events_ops->decode_key(kvm, &event->key, decode); | 325 | kvm->events_ops->decode_key(kvm, &event->key, decode); |
| 315 | if (strcmp(decode, "HLT")) { | 326 | if (!skip_event(decode)) { |
| 316 | pr_info("%" PRIu64 " VM %d, vcpu %d: %s event took %" PRIu64 "usec\n", | 327 | pr_info("%" PRIu64 " VM %d, vcpu %d: %s event took %" PRIu64 "usec\n", |
| 317 | sample->time, sample->pid, vcpu_record->vcpu_id, | 328 | sample->time, sample->pid, vcpu_record->vcpu_id, |
| 318 | decode, time_diff/1000); | 329 | decode, time_diff/1000); |
diff --git a/tools/perf/util/kvm-stat.h b/tools/perf/util/kvm-stat.h index d0d9fb1ae52a..ba937caa28ac 100644 --- a/tools/perf/util/kvm-stat.h +++ b/tools/perf/util/kvm-stat.h | |||
| @@ -126,5 +126,6 @@ int cpu_isa_init(struct perf_kvm_stat *kvm, const char *cpuid); | |||
| 126 | 126 | ||
| 127 | extern const char * const kvm_events_tp[]; | 127 | extern const char * const kvm_events_tp[]; |
| 128 | extern struct kvm_reg_events_ops kvm_reg_events_ops[]; | 128 | extern struct kvm_reg_events_ops kvm_reg_events_ops[]; |
| 129 | extern const char * const kvm_skip_events[]; | ||
| 129 | 130 | ||
| 130 | #endif /* __PERF_KVM_STAT_H */ | 131 | #endif /* __PERF_KVM_STAT_H */ |
