aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-kvm.c
diff options
context:
space:
mode:
authorHemant Kumar <hemant@linux.vnet.ibm.com>2016-01-28 01:33:04 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2016-01-29 15:49:48 -0500
commit162607ea20fafb4a76234ebe4314cd733345482e (patch)
tree608663febfdeadf330b0020e6262c63a448b6d56 /tools/perf/builtin-kvm.c
parentd2db9a98c3058a45780f7fcd0cc8584858cf6b29 (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.c20
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
36void exit_event_get_key(struct perf_evsel *evsel, 35void 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
44bool kvm_exit_event(struct perf_evsel *evsel) 43bool 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
49bool exit_event_begin(struct perf_evsel *evsel, 48bool exit_event_begin(struct perf_evsel *evsel,
@@ -59,7 +58,7 @@ bool exit_event_begin(struct perf_evsel *evsel,
59 58
60bool kvm_entry_event(struct perf_evsel *evsel) 59bool 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
65bool exit_event_end(struct perf_evsel *evsel, 64bool 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
97static bool register_kvm_events_ops(struct perf_kvm_stat *kvm) 96static 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
575static void print_result(struct perf_kvm_stat *kvm) 575static 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);