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 */ |