Skip to contentSkip to conversation

Patch "perf evsel: Store ids for events with their own cpus perf_event__synthesize_event_update_cpus" has been added to the 4.18-stable tree

PATCH gregkh at linuxfoundation.org 1 participant 1 message Nov 10, 2018 perf events

lore
Share & tools
lore
#0 lore raw

This is a note to let you know that I've just added the patch titled

perf evsel: Store ids for events with their own cpus perf_event__synthesize_event_update_cpus

to the 4.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
perf-evsel-store-ids-for-events-with-their-own-cpus-perf_event__synthesize_event_update_cpus.patch
and it can be found in the queue-4.18 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From foo at baz Sat Nov 10 10:48:43 PST 2018

From: Jiri Olsa <[email protected]>
Date: Wed, 3 Oct 2018 23:20:52 +0200
Subject: perf evsel: Store ids for events with their own cpus perf_event__synthesize_event_update_cpus

From: Jiri Olsa <[email protected]>

[ Upstream commit 4ab8455f8bd83298bf7f67ab9357e3b1cc765c7d ]

John reported crash when recording on an event under PMU with cpumask defined:

root at localhost:~# ./perf_debug_ record -e armv8_pmuv3_0/br_mis_pred/ sleep 1
perf: Segmentation fault
Obtained 9 stack frames.
./perf_debug_() [0x4c5ef8]
[0xffff82ba267c]
./perf_debug_() [0x4bc5a8]
./perf_debug_() [0x419550]
./perf_debug_() [0x41a928]
./perf_debug_() [0x472f58]
./perf_debug_() [0x473210]
./perf_debug_() [0x4070f4] /lib/aarch64-linux-gnu/libc.so.6(__libc_start_main+0xe0) [0xffff8294c8a0] Segmentation fault (core dumped)

We synthesize an update event that needs to touch the evsel id array, which is not defined at that time. Fixing this by forcing the id allocation for events with their own cpus.

Cc Alexander Shishkin <[email protected]>
Cc Andi Kleen <[email protected]>
Cc Mark Rutland <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Will Deacon <[email protected]>
Cc linux-arm-kernel at lists.infradead.org
Cc linuxarm at huawei.com
Fixes bfd8f72c2778 ("perf record: Synthesize unit/scale/... in event update")
---
 tools/perf/builtin-report.c |    1 +
 tools/perf/util/evsel.c     |    3 +++
 2 files changed, 4 insertions(+)
tools/perf/builtin-report.c +1 -0
@@ -981,6 +981,7 @@ int cmd_report(int argc, const char **ar
 			.id_index	 = perf_event__process_id_index,
 			.auxtrace_info	 = perf_event__process_auxtrace_info,
 			.auxtrace	 = perf_event__process_auxtrace,
+			.event_update	 = perf_event__process_event_update,
 			.feature	 = process_feature_event,
 			.ordered_events	 = true,
 			.ordering_requires_timestamps = true,
tools/perf/util/evsel.c +3 -0
@@ -1078,6 +1078,9 @@ void perf_evsel__config(struct perf_evse
 		attr->exclude_user   = 1;
 	}
 
+	if (evsel->own_cpus)
+		evsel->attr.read_format |= PERF_FORMAT_ID;
+
 	/*
 	 * Apply event specific term settings,
 	 * it overloads any global configuration.

Patches currently in stable-queue which might be from jolsa at redhat.com are

queue-4.18/perf-vendor-events-intel-fix-wrong-filter_band-values-for-uncore-events.patch queue-4.18/perf-tools-fix-use-of-alternatives-to-find-jdir.patch queue-4.18/perf-evsel-store-ids-for-events-with-their-own-cpus-perf_event__synthesize_event_update_cpus.patch