This patch changes prototype of perf_event__preprocess_sample() with additional argument evsel added at last.
This change is required because perf_event__preprocess_sample() function will use evsel to determine cpumode of samples for powerpc architecture. Signed-off-by: Ravi Bangoria <ravi.bango...@linux.vnet.ibm.com> --- changes in v2: - Breakdown of v1 patch into two sub patches tools/perf/builtin-annotate.c | 3 ++- tools/perf/builtin-diff.c | 3 ++- tools/perf/builtin-mem.c | 10 ++++++---- tools/perf/builtin-report.c | 3 ++- tools/perf/builtin-script.c | 3 ++- tools/perf/builtin-timechart.c | 8 +++++--- tools/perf/builtin-top.c | 3 ++- tools/perf/tests/hists_cumulate.c | 2 +- tools/perf/tests/hists_filter.c | 2 +- tools/perf/tests/hists_link.c | 4 ++-- tools/perf/tests/hists_output.c | 2 +- tools/perf/util/event.c | 3 ++- tools/perf/util/event.h | 3 ++- 13 files changed, 30 insertions(+), 19 deletions(-) diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c index cc5c126..b488a5c 100644 --- a/tools/perf/builtin-annotate.c +++ b/tools/perf/builtin-annotate.c @@ -94,7 +94,8 @@ static int process_sample_event(struct perf_tool *tool, struct addr_location al; int ret = 0; - if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) { + if (perf_event__preprocess_sample(event, machine, &al, + sample, evsel) < 0) { pr_warning("problem processing %d event, skipping it.\n", event->header.type); return -1; diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c index 36ccc2b..d2a27fe 100644 --- a/tools/perf/builtin-diff.c +++ b/tools/perf/builtin-diff.c @@ -330,7 +330,8 @@ static int diff__process_sample_event(struct perf_tool *tool __maybe_unused, struct hists *hists = evsel__hists(evsel); int ret = -1; - if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) { + if (perf_event__preprocess_sample(event, machine, &al, + sample, evsel) < 0) { pr_warning("problem processing %d event, skipping it.\n", event->header.type); return -1; diff --git a/tools/perf/builtin-mem.c b/tools/perf/builtin-mem.c index 3901700..eb27b49 100644 --- a/tools/perf/builtin-mem.c +++ b/tools/perf/builtin-mem.c @@ -61,13 +61,15 @@ static int dump_raw_samples(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample, - struct machine *machine) + struct machine *machine, + struct perf_evsel *evsel) { struct perf_mem *mem = container_of(tool, struct perf_mem, tool); struct addr_location al; const char *fmt; - if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) { + if (perf_event__preprocess_sample(event, machine, &al, + sample, evsel) < 0) { fprintf(stderr, "problem processing %d event, skipping it.\n", event->header.type); return -1; @@ -111,10 +113,10 @@ out_put: static int process_sample_event(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample, - struct perf_evsel *evsel __maybe_unused, + struct perf_evsel *evsel, struct machine *machine) { - return dump_raw_samples(tool, event, sample, machine); + return dump_raw_samples(tool, event, sample, machine, evsel); } static int report_raw_events(struct perf_mem *mem) diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 2bf537f..fa7bbd9 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c @@ -151,7 +151,8 @@ static int process_sample_event(struct perf_tool *tool, }; int ret = 0; - if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) { + if (perf_event__preprocess_sample(event, machine, &al, + sample, evsel) < 0) { pr_debug("problem processing %d event, skipping it.\n", event->header.type); return -1; diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index c691214..4363e8a 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -783,7 +783,8 @@ static int process_sample_event(struct perf_tool *tool, return 0; } - if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) { + if (perf_event__preprocess_sample(event, machine, &al, + sample, evsel) < 0) { pr_err("problem processing %d event, skipping it.\n", event->header.type); return -1; diff --git a/tools/perf/builtin-timechart.c b/tools/perf/builtin-timechart.c index bd7a775..a177396 100644 --- a/tools/perf/builtin-timechart.c +++ b/tools/perf/builtin-timechart.c @@ -470,7 +470,8 @@ static void sched_switch(struct timechart *tchart, int cpu, u64 timestamp, static const char *cat_backtrace(union perf_event *event, struct perf_sample *sample, - struct machine *machine) + struct machine *machine, + struct perf_evsel *evsel) { struct addr_location al; unsigned int i; @@ -489,7 +490,8 @@ static const char *cat_backtrace(union perf_event *event, if (!chain) goto exit; - if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) { + if (perf_event__preprocess_sample(event, machine, &al, + sample, evsel) < 0) { fprintf(stderr, "problem processing %d event, skipping it.\n", event->header.type); goto exit; @@ -569,7 +571,7 @@ static int process_sample_event(struct perf_tool *tool, if (evsel->handler != NULL) { tracepoint_handler f = evsel->handler; return f(tchart, evsel, sample, - cat_backtrace(event, sample, machine)); + cat_backtrace(event, sample, machine, evsel)); } return 0; diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c index bf01cbb..3d10ce3 100644 --- a/tools/perf/builtin-top.c +++ b/tools/perf/builtin-top.c @@ -726,7 +726,8 @@ static void perf_event__process_sample(struct perf_tool *tool, if (event->header.misc & PERF_RECORD_MISC_EXACT_IP) top->exact_samples++; - if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) + if (perf_event__preprocess_sample(event, machine, &al, + sample, evsel) < 0) return; if (!top->kptr_restrict_warned && diff --git a/tools/perf/tests/hists_cumulate.c b/tools/perf/tests/hists_cumulate.c index 5e6a86e..24bbde9 100644 --- a/tools/perf/tests/hists_cumulate.c +++ b/tools/perf/tests/hists_cumulate.c @@ -103,7 +103,7 @@ static int add_hist_entries(struct hists *hists, struct machine *machine) sample.callchain = (struct ip_callchain *)fake_callchains[i]; if (perf_event__preprocess_sample(&event, machine, &al, - &sample) < 0) + &sample, evsel) < 0) goto out; if (hist_entry_iter__add(&iter, &al, PERF_MAX_STACK_DEPTH, diff --git a/tools/perf/tests/hists_filter.c b/tools/perf/tests/hists_filter.c index 351a424..3fb4022 100644 --- a/tools/perf/tests/hists_filter.c +++ b/tools/perf/tests/hists_filter.c @@ -81,7 +81,7 @@ static int add_hist_entries(struct perf_evlist *evlist, sample.ip = fake_samples[i].ip; if (perf_event__preprocess_sample(&event, machine, &al, - &sample) < 0) + &sample, evsel) < 0) goto out; al.socket = fake_samples[i].socket; diff --git a/tools/perf/tests/hists_link.c b/tools/perf/tests/hists_link.c index 64b257d..7b8c590 100644 --- a/tools/perf/tests/hists_link.c +++ b/tools/perf/tests/hists_link.c @@ -86,7 +86,7 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine) sample.tid = fake_common_samples[k].pid; sample.ip = fake_common_samples[k].ip; if (perf_event__preprocess_sample(&event, machine, &al, - &sample) < 0) + &sample, evsel) < 0) goto out; he = __hists__add_entry(hists, &al, NULL, @@ -112,7 +112,7 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine) sample.tid = fake_samples[i][k].pid; sample.ip = fake_samples[i][k].ip; if (perf_event__preprocess_sample(&event, machine, &al, - &sample) < 0) + &sample, evsel) < 0) goto out; he = __hists__add_entry(hists, &al, NULL, diff --git a/tools/perf/tests/hists_output.c b/tools/perf/tests/hists_output.c index b231265..82a7c61 100644 --- a/tools/perf/tests/hists_output.c +++ b/tools/perf/tests/hists_output.c @@ -69,7 +69,7 @@ static int add_hist_entries(struct hists *hists, struct machine *machine) sample.ip = fake_samples[i].ip; if (perf_event__preprocess_sample(&event, machine, &al, - &sample) < 0) + &sample, evsel) < 0) goto out; if (hist_entry_iter__add(&iter, &al, PERF_MAX_STACK_DEPTH, diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c index 85155e9..f86e172 100644 --- a/tools/perf/util/event.c +++ b/tools/perf/util/event.c @@ -1298,7 +1298,8 @@ void thread__find_addr_location(struct thread *thread, int perf_event__preprocess_sample(const union perf_event *event, struct machine *machine, struct addr_location *al, - struct perf_sample *sample) + struct perf_sample *sample, + struct perf_evsel *evsel) { u8 cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK; struct thread *thread = machine__findnew_thread(machine, sample->pid, diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h index b7ffb7e..fb8489b 100644 --- a/tools/perf/util/event.h +++ b/tools/perf/util/event.h @@ -600,7 +600,8 @@ struct addr_location; int perf_event__preprocess_sample(const union perf_event *event, struct machine *machine, struct addr_location *al, - struct perf_sample *sample); + struct perf_sample *sample, + struct perf_evsel *evsel); void addr_location__put(struct addr_location *al); -- 2.1.4