diff options
author | Hemant Kumar <hemant@linux.vnet.ibm.com> | 2016-01-28 01:33:04 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2016-01-29 15:49:48 -0500 |
commit | 162607ea20fafb4a76234ebe4314cd733345482e (patch) | |
tree | 608663febfdeadf330b0020e6262c63a448b6d56 /tools/perf/builtin-kvm.c | |
parent | d2db9a98c3058a45780f7fcd0cc8584858cf6b29 (diff) |
perf kvm/{x86,s390}: Remove dependency on uapi/kvm_perf.h
Its better to remove the dependency on uapi/kvm_perf.h to allow dynamic
discovery of kvm events (if its needed). To do this, some extern
variables have been introduced with which we can keep the generic
functions generic.
Signed-off-by: Hemant Kumar <hemant@linux.vnet.ibm.com>
Acked-by: Alexander Yarygin <yarygin@linux.vnet.ibm.com>
Acked-by: David Ahern <dsahern@gmail.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Scott Wood <scottwood@freescale.com>
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org
Link: http://lkml.kernel.org/r/1453962787-15376-1-git-send-email-hemant@linux.vnet.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/builtin-kvm.c')
-rw-r--r-- | tools/perf/builtin-kvm.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c index 4418d9214872..ab5645cf39d2 100644 --- a/tools/perf/builtin-kvm.c +++ b/tools/perf/builtin-kvm.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <math.h> | 30 | #include <math.h> |
31 | 31 | ||
32 | #ifdef HAVE_KVM_STAT_SUPPORT | 32 | #ifdef HAVE_KVM_STAT_SUPPORT |
33 | #include <asm/kvm_perf.h> | ||
34 | #include "util/kvm-stat.h" | 33 | #include "util/kvm-stat.h" |
35 | 34 | ||
36 | void exit_event_get_key(struct perf_evsel *evsel, | 35 | void exit_event_get_key(struct perf_evsel *evsel, |
@@ -38,12 +37,12 @@ void exit_event_get_key(struct perf_evsel *evsel, | |||
38 | struct event_key *key) | 37 | struct event_key *key) |
39 | { | 38 | { |
40 | key->info = 0; | 39 | key->info = 0; |
41 | key->key = perf_evsel__intval(evsel, sample, KVM_EXIT_REASON); | 40 | key->key = perf_evsel__intval(evsel, sample, kvm_exit_reason); |
42 | } | 41 | } |
43 | 42 | ||
44 | bool kvm_exit_event(struct perf_evsel *evsel) | 43 | bool kvm_exit_event(struct perf_evsel *evsel) |
45 | { | 44 | { |
46 | return !strcmp(evsel->name, KVM_EXIT_TRACE); | 45 | return !strcmp(evsel->name, kvm_exit_trace); |
47 | } | 46 | } |
48 | 47 | ||
49 | bool exit_event_begin(struct perf_evsel *evsel, | 48 | bool exit_event_begin(struct perf_evsel *evsel, |
@@ -59,7 +58,7 @@ bool exit_event_begin(struct perf_evsel *evsel, | |||
59 | 58 | ||
60 | bool kvm_entry_event(struct perf_evsel *evsel) | 59 | bool kvm_entry_event(struct perf_evsel *evsel) |
61 | { | 60 | { |
62 | return !strcmp(evsel->name, KVM_ENTRY_TRACE); | 61 | return !strcmp(evsel->name, kvm_entry_trace); |
63 | } | 62 | } |
64 | 63 | ||
65 | bool exit_event_end(struct perf_evsel *evsel, | 64 | bool exit_event_end(struct perf_evsel *evsel, |
@@ -91,7 +90,7 @@ void exit_event_decode_key(struct perf_kvm_stat *kvm, | |||
91 | const char *exit_reason = get_exit_reason(kvm, key->exit_reasons, | 90 | const char *exit_reason = get_exit_reason(kvm, key->exit_reasons, |
92 | key->key); | 91 | key->key); |
93 | 92 | ||
94 | scnprintf(decode, DECODE_STR_LEN, "%s", exit_reason); | 93 | scnprintf(decode, decode_str_len, "%s", exit_reason); |
95 | } | 94 | } |
96 | 95 | ||
97 | static bool register_kvm_events_ops(struct perf_kvm_stat *kvm) | 96 | static bool register_kvm_events_ops(struct perf_kvm_stat *kvm) |
@@ -357,7 +356,7 @@ static bool handle_end_event(struct perf_kvm_stat *kvm, | |||
357 | time_diff = sample->time - time_begin; | 356 | time_diff = sample->time - time_begin; |
358 | 357 | ||
359 | if (kvm->duration && time_diff > kvm->duration) { | 358 | if (kvm->duration && time_diff > kvm->duration) { |
360 | char decode[DECODE_STR_LEN]; | 359 | char decode[decode_str_len]; |
361 | 360 | ||
362 | kvm->events_ops->decode_key(kvm, &event->key, decode); | 361 | kvm->events_ops->decode_key(kvm, &event->key, decode); |
363 | if (!skip_event(decode)) { | 362 | if (!skip_event(decode)) { |
@@ -385,7 +384,8 @@ struct vcpu_event_record *per_vcpu_record(struct thread *thread, | |||
385 | return NULL; | 384 | return NULL; |
386 | } | 385 | } |
387 | 386 | ||
388 | vcpu_record->vcpu_id = perf_evsel__intval(evsel, sample, VCPU_ID); | 387 | vcpu_record->vcpu_id = perf_evsel__intval(evsel, sample, |
388 | vcpu_id_str); | ||
389 | thread__set_priv(thread, vcpu_record); | 389 | thread__set_priv(thread, vcpu_record); |
390 | } | 390 | } |
391 | 391 | ||
@@ -574,7 +574,7 @@ static void show_timeofday(void) | |||
574 | 574 | ||
575 | static void print_result(struct perf_kvm_stat *kvm) | 575 | static void print_result(struct perf_kvm_stat *kvm) |
576 | { | 576 | { |
577 | char decode[DECODE_STR_LEN]; | 577 | char decode[decode_str_len]; |
578 | struct kvm_event *event; | 578 | struct kvm_event *event; |
579 | int vcpu = kvm->trace_vcpu; | 579 | int vcpu = kvm->trace_vcpu; |
580 | 580 | ||
@@ -585,7 +585,7 @@ static void print_result(struct perf_kvm_stat *kvm) | |||
585 | 585 | ||
586 | pr_info("\n\n"); | 586 | pr_info("\n\n"); |
587 | print_vcpu_info(kvm); | 587 | print_vcpu_info(kvm); |
588 | pr_info("%*s ", DECODE_STR_LEN, kvm->events_ops->name); | 588 | pr_info("%*s ", decode_str_len, kvm->events_ops->name); |
589 | pr_info("%10s ", "Samples"); | 589 | pr_info("%10s ", "Samples"); |
590 | pr_info("%9s ", "Samples%"); | 590 | pr_info("%9s ", "Samples%"); |
591 | 591 | ||
@@ -604,7 +604,7 @@ static void print_result(struct perf_kvm_stat *kvm) | |||
604 | min = get_event_min(event, vcpu); | 604 | min = get_event_min(event, vcpu); |
605 | 605 | ||
606 | kvm->events_ops->decode_key(kvm, &event->key, decode); | 606 | kvm->events_ops->decode_key(kvm, &event->key, decode); |
607 | pr_info("%*s ", DECODE_STR_LEN, decode); | 607 | pr_info("%*s ", decode_str_len, decode); |
608 | pr_info("%10llu ", (unsigned long long)ecount); | 608 | pr_info("%10llu ", (unsigned long long)ecount); |
609 | pr_info("%8.2f%% ", (double)ecount / kvm->total_count * 100); | 609 | pr_info("%8.2f%% ", (double)ecount / kvm->total_count * 100); |
610 | pr_info("%8.2f%% ", (double)etime / kvm->total_time * 100); | 610 | pr_info("%8.2f%% ", (double)etime / kvm->total_time * 100); |