All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] perf x86/topdown: Fix topdown leader sampling test error on hybrid
@ 2025-02-24  8:33 Dapeng Mi
  2025-02-24  8:33 ` [PATCH 2/2] perf tools/tests: Fix topdown groups test on hybrid platforms Dapeng Mi
  2025-03-04 16:49 ` [PATCH 1/2] perf x86/topdown: Fix topdown leader sampling test error on hybrid Falcon, Thomas
  0 siblings, 2 replies; 7+ messages in thread
From: Dapeng Mi @ 2025-02-24  8:33 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Namhyung Kim, Ian Rogers, Adrian Hunter, Alexander Shishkin,
	Kan Liang
  Cc: linux-perf-users, linux-kernel, Dapeng Mi, Dapeng Mi

When running topdown leader smapling test on Intel hybrid platforms,
such as LNL/ARL, we see the below error.

Topdown leader sampling test
Topdown leader sampling [Failed topdown events not reordered correctly]

It indciates the below command fails.

perf record -o "${perfdata}" -e "{instructions,slots,topdown-retiring}:S" true

The root cause is that perf tool creats a perf event for each PMU type
if it can create.

As for this command, there would be 5 perf events created,
cpu_atom/instructions/,cpu_atom/topdown_retiring/,
cpu_core/slots/,cpu_core/instructions/,cpu_core/topdown-retiring/

For these 5 events, the 2 cpu_atom events are in a group and the other 3
cpu_core events are in another group.

When arch_topdown_sample_read() traverses all these 5 events, events
cpu_atom/instructions/ and cpu_core/slots/ don't have a same group
leade, and then return false directly and lead to cpu_core/slots/ event
is used to sample and this is not allowed by PMU driver.

It's a overkill to return false directly if "evsel->core.leader !=
 leader->core.leader" since there could be multiple groups in the event
list.

Just "continue" instead of "return false" to fix this issue.

Fixes: 1e53e9d1787b ("perf x86/topdown: Correct leader selection with sample_read enabled")
Signed-off-by: Dapeng Mi <dapeng1.mi@linux.intel.com>
---
 tools/perf/arch/x86/util/topdown.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/arch/x86/util/topdown.c b/tools/perf/arch/x86/util/topdown.c
index f63747d0abdf..d1c654839049 100644
--- a/tools/perf/arch/x86/util/topdown.c
+++ b/tools/perf/arch/x86/util/topdown.c
@@ -81,7 +81,7 @@ bool arch_topdown_sample_read(struct evsel *leader)
 	 */
 	evlist__for_each_entry(leader->evlist, evsel) {
 		if (evsel->core.leader != leader->core.leader)
-			return false;
+			continue;
 		if (evsel != leader && arch_is_topdown_metrics(evsel))
 			return true;
 	}

base-commit: 4bac7fb5862740087825eda3ed6168e91da8b7e6
-- 
2.40.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-03-05  8:39 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-24  8:33 [PATCH 1/2] perf x86/topdown: Fix topdown leader sampling test error on hybrid Dapeng Mi
2025-02-24  8:33 ` [PATCH 2/2] perf tools/tests: Fix topdown groups test on hybrid platforms Dapeng Mi
2025-03-04 16:50   ` Falcon, Thomas
2025-03-05  6:07   ` Ian Rogers
2025-03-05  8:39     ` Ian Rogers
2025-03-04 16:49 ` [PATCH 1/2] perf x86/topdown: Fix topdown leader sampling test error on hybrid Falcon, Thomas
2025-03-05  6:37   ` Ian Rogers

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.