Commit 2d31e0bf authored by Leo Yan's avatar Leo Yan Committed by Arnaldo Carvalho de Melo

perf kvm: Use macro to replace variable 'decode_str_len'

The variable 'decode_str_len' defines the string length for KVM event
name and every arch defines its own values.

This introduces complexity that the variable definition are spreading in
multiple source files under arch folder.  This patch refactors code to
use a macro KVM_EVENT_NAME_LEN to define event name length and thus
remove the definitions in arch files.
Signed-off-by: default avatarLeo Yan <leo.yan@linaro.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@arm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: John Garry <john.g.garry@oracle.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: linux-arm-kernel@lists.infradead.org
Link: https://lore.kernel.org/r/20230315145112.186603-2-leo.yan@linaro.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent dd787ae4
...@@ -11,7 +11,6 @@ define_exit_reasons_table(arm64_trap_exit_reasons, kvm_arm_exception_class); ...@@ -11,7 +11,6 @@ define_exit_reasons_table(arm64_trap_exit_reasons, kvm_arm_exception_class);
const char *kvm_trap_exit_reason = "esr_ec"; const char *kvm_trap_exit_reason = "esr_ec";
const char *vcpu_id_str = "id"; const char *vcpu_id_str = "id";
const int decode_str_len = 20;
const char *kvm_exit_reason = "ret"; const char *kvm_exit_reason = "ret";
const char *kvm_entry_trace = "kvm:kvm_entry"; const char *kvm_entry_trace = "kvm:kvm_entry";
const char *kvm_exit_trace = "kvm:kvm_exit"; const char *kvm_exit_trace = "kvm:kvm_exit";
......
...@@ -14,7 +14,6 @@ ...@@ -14,7 +14,6 @@
#define NR_TPS 4 #define NR_TPS 4
const char *vcpu_id_str = "vcpu_id"; const char *vcpu_id_str = "vcpu_id";
const int decode_str_len = 40;
const char *kvm_entry_trace = "kvm_hv:kvm_guest_enter"; const char *kvm_entry_trace = "kvm_hv:kvm_guest_enter";
const char *kvm_exit_trace = "kvm_hv:kvm_guest_exit"; const char *kvm_exit_trace = "kvm_hv:kvm_guest_exit";
...@@ -80,7 +79,7 @@ static void hcall_event_decode_key(struct perf_kvm_stat *kvm __maybe_unused, ...@@ -80,7 +79,7 @@ static void hcall_event_decode_key(struct perf_kvm_stat *kvm __maybe_unused,
{ {
const char *hcall_reason = get_hcall_exit_reason(key->key); const char *hcall_reason = get_hcall_exit_reason(key->key);
scnprintf(decode, decode_str_len, "%s", hcall_reason); scnprintf(decode, KVM_EVENT_NAME_LEN, "%s", hcall_reason);
} }
static struct kvm_events_ops hcall_events = { static struct kvm_events_ops hcall_events = {
......
...@@ -19,7 +19,6 @@ define_exit_reasons_table(sie_diagnose_codes, diagnose_codes); ...@@ -19,7 +19,6 @@ define_exit_reasons_table(sie_diagnose_codes, diagnose_codes);
define_exit_reasons_table(sie_icpt_prog_codes, icpt_prog_codes); define_exit_reasons_table(sie_icpt_prog_codes, icpt_prog_codes);
const char *vcpu_id_str = "id"; const char *vcpu_id_str = "id";
const int decode_str_len = 40;
const char *kvm_exit_reason = "icptcode"; const char *kvm_exit_reason = "icptcode";
const char *kvm_entry_trace = "kvm:kvm_s390_sie_enter"; const char *kvm_entry_trace = "kvm:kvm_s390_sie_enter";
const char *kvm_exit_trace = "kvm:kvm_s390_sie_exit"; const char *kvm_exit_trace = "kvm:kvm_s390_sie_exit";
......
...@@ -18,7 +18,6 @@ static struct kvm_events_ops exit_events = { ...@@ -18,7 +18,6 @@ static struct kvm_events_ops exit_events = {
}; };
const char *vcpu_id_str = "vcpu_id"; const char *vcpu_id_str = "vcpu_id";
const int decode_str_len = 20;
const char *kvm_exit_reason = "exit_reason"; const char *kvm_exit_reason = "exit_reason";
const char *kvm_entry_trace = "kvm:kvm_entry"; const char *kvm_entry_trace = "kvm:kvm_entry";
const char *kvm_exit_trace = "kvm:kvm_exit"; const char *kvm_exit_trace = "kvm:kvm_exit";
...@@ -77,7 +76,7 @@ static void mmio_event_decode_key(struct perf_kvm_stat *kvm __maybe_unused, ...@@ -77,7 +76,7 @@ static void mmio_event_decode_key(struct perf_kvm_stat *kvm __maybe_unused,
struct event_key *key, struct event_key *key,
char *decode) char *decode)
{ {
scnprintf(decode, decode_str_len, "%#lx:%s", scnprintf(decode, KVM_EVENT_NAME_LEN, "%#lx:%s",
(unsigned long)key->key, (unsigned long)key->key,
key->info == KVM_TRACE_MMIO_WRITE ? "W" : "R"); key->info == KVM_TRACE_MMIO_WRITE ? "W" : "R");
} }
...@@ -121,7 +120,7 @@ static void ioport_event_decode_key(struct perf_kvm_stat *kvm __maybe_unused, ...@@ -121,7 +120,7 @@ static void ioport_event_decode_key(struct perf_kvm_stat *kvm __maybe_unused,
struct event_key *key, struct event_key *key,
char *decode) char *decode)
{ {
scnprintf(decode, decode_str_len, "%#llx:%s", scnprintf(decode, KVM_EVENT_NAME_LEN, "%#llx:%s",
(unsigned long long)key->key, (unsigned long long)key->key,
key->info ? "POUT" : "PIN"); key->info ? "POUT" : "PIN");
} }
...@@ -165,7 +164,7 @@ static void msr_event_decode_key(struct perf_kvm_stat *kvm __maybe_unused, ...@@ -165,7 +164,7 @@ static void msr_event_decode_key(struct perf_kvm_stat *kvm __maybe_unused,
struct event_key *key, struct event_key *key,
char *decode) char *decode)
{ {
scnprintf(decode, decode_str_len, "%#llx:%s", scnprintf(decode, KVM_EVENT_NAME_LEN, "%#llx:%s",
(unsigned long long)key->key, (unsigned long long)key->key,
key->info ? "W" : "R"); key->info ? "W" : "R");
} }
......
...@@ -161,7 +161,7 @@ void exit_event_decode_key(struct perf_kvm_stat *kvm, ...@@ -161,7 +161,7 @@ void exit_event_decode_key(struct perf_kvm_stat *kvm,
const char *exit_reason = get_exit_reason(kvm, key->exit_reasons, const char *exit_reason = get_exit_reason(kvm, key->exit_reasons,
key->key); key->key);
scnprintf(decode, decode_str_len, "%s", exit_reason); scnprintf(decode, KVM_EVENT_NAME_LEN, "%s", exit_reason);
} }
static bool register_kvm_events_ops(struct perf_kvm_stat *kvm) static bool register_kvm_events_ops(struct perf_kvm_stat *kvm)
...@@ -434,7 +434,7 @@ static bool handle_end_event(struct perf_kvm_stat *kvm, ...@@ -434,7 +434,7 @@ static bool handle_end_event(struct perf_kvm_stat *kvm,
time_diff = sample->time - time_begin; time_diff = sample->time - time_begin;
if (kvm->duration && time_diff > kvm->duration) { if (kvm->duration && time_diff > kvm->duration) {
char decode[decode_str_len]; char decode[KVM_EVENT_NAME_LEN];
kvm->events_ops->decode_key(kvm, &event->key, decode); kvm->events_ops->decode_key(kvm, &event->key, decode);
if (!skip_event(decode)) { if (!skip_event(decode)) {
...@@ -605,7 +605,7 @@ static void show_timeofday(void) ...@@ -605,7 +605,7 @@ static void show_timeofday(void)
static void print_result(struct perf_kvm_stat *kvm) static void print_result(struct perf_kvm_stat *kvm)
{ {
char decode[decode_str_len]; char decode[KVM_EVENT_NAME_LEN];
struct kvm_event *event; struct kvm_event *event;
int vcpu = kvm->trace_vcpu; int vcpu = kvm->trace_vcpu;
...@@ -616,7 +616,7 @@ static void print_result(struct perf_kvm_stat *kvm) ...@@ -616,7 +616,7 @@ static void print_result(struct perf_kvm_stat *kvm)
pr_info("\n\n"); pr_info("\n\n");
print_vcpu_info(kvm); print_vcpu_info(kvm);
pr_info("%*s ", decode_str_len, kvm->events_ops->name); pr_info("%*s ", KVM_EVENT_NAME_LEN, kvm->events_ops->name);
pr_info("%10s ", "Samples"); pr_info("%10s ", "Samples");
pr_info("%9s ", "Samples%"); pr_info("%9s ", "Samples%");
...@@ -635,7 +635,7 @@ static void print_result(struct perf_kvm_stat *kvm) ...@@ -635,7 +635,7 @@ static void print_result(struct perf_kvm_stat *kvm)
min = get_event_min(event, vcpu); min = get_event_min(event, vcpu);
kvm->events_ops->decode_key(kvm, &event->key, decode); kvm->events_ops->decode_key(kvm, &event->key, decode);
pr_info("%*s ", decode_str_len, decode); pr_info("%*s ", KVM_EVENT_NAME_LEN, decode);
pr_info("%10llu ", (unsigned long long)ecount); pr_info("%10llu ", (unsigned long long)ecount);
pr_info("%8.2f%% ", (double)ecount / kvm->total_count * 100); pr_info("%8.2f%% ", (double)ecount / kvm->total_count * 100);
pr_info("%8.2f%% ", (double)etime / kvm->total_time * 100); pr_info("%8.2f%% ", (double)etime / kvm->total_time * 100);
......
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
#include "stat.h" #include "stat.h"
#include "record.h" #include "record.h"
#define KVM_EVENT_NAME_LEN 40
struct evsel; struct evsel;
struct evlist; struct evlist;
struct perf_session; struct perf_session;
...@@ -143,7 +145,6 @@ extern const char *kvm_events_tp[]; ...@@ -143,7 +145,6 @@ extern const char *kvm_events_tp[];
extern struct kvm_reg_events_ops kvm_reg_events_ops[]; extern struct kvm_reg_events_ops kvm_reg_events_ops[];
extern const char * const kvm_skip_events[]; extern const char * const kvm_skip_events[];
extern const char *vcpu_id_str; extern const char *vcpu_id_str;
extern const int decode_str_len;
extern const char *kvm_exit_reason; extern const char *kvm_exit_reason;
extern const char *kvm_entry_trace; extern const char *kvm_entry_trace;
extern const char *kvm_exit_trace; extern const char *kvm_exit_trace;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment