mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Ian Rogers <irogers@google.com>
To: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	 Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	 Mark Rutland <mark.rutland@arm.com>,
	 Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@kernel.org>,  Ian Rogers <irogers@google.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	 Kan Liang <kan.liang@linux.intel.com>,
	James Clark <james.clark@linaro.org>,
	 Xu Yang <xu.yang_2@nxp.com>,
	Thomas Falcon <thomas.falcon@intel.com>,
	 Andi Kleen <ak@linux.intel.com>,
	linux-kernel@vger.kernel.org,  linux-perf-users@vger.kernel.org,
	bpf@vger.kernel.org,  Atish Patra <atishp@rivosinc.com>,
	Beeman Strong <beeman@rivosinc.com>, Leo Yan <leo.yan@arm.com>,
	 Vince Weaver <vincent.weaver@maine.edu>
Subject: [PATCH v5 01/25] perf stat: Allow retry for default events
Date: Mon, 22 Sep 2025 21:18:20 -0700	[thread overview]
Message-ID: <20250923041844.400164-2-irogers@google.com> (raw)
In-Reply-To: <20250923041844.400164-1-irogers@google.com>

Default events are marked skippable. Checking skippable first means
retrying and adding modifiers like exclude kernel isn't
performed. Push the skippable checking after fallbacks are tried and
avoid warning multiple times for the event.

Fixes: 9eac5612da1c ("perf stat: Don't skip failing group events")
Signed-off-by: Ian Rogers <irogers@google.com>
---
 tools/perf/builtin-stat.c | 38 +++++++++++++++++++++++---------------
 1 file changed, 23 insertions(+), 15 deletions(-)

diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index ab567919b89a..303628189004 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -616,16 +616,7 @@ enum counter_recovery {
 static enum counter_recovery stat_handle_error(struct evsel *counter, int err)
 {
 	char msg[BUFSIZ];
-
-	if (counter->skippable) {
-		if (verbose > 0) {
-			ui__warning("skipping event %s that kernel failed to open .\n",
-				    evsel__name(counter));
-		}
-		counter->supported = false;
-		counter->errored = true;
-		return COUNTER_SKIP;
-	}
+	bool warned = false;
 
 	/*
 	 * PPC returns ENXIO for HW counters until 2.6.37
@@ -635,6 +626,7 @@ static enum counter_recovery stat_handle_error(struct evsel *counter, int err)
 		if (verbose > 0) {
 			ui__warning("%s event is not supported by the kernel.\n",
 				    evsel__name(counter));
+			warned = true;
 		}
 		counter->supported = false;
 		/*
@@ -642,13 +634,15 @@ static enum counter_recovery stat_handle_error(struct evsel *counter, int err)
 		 * cpu event had a problem and needs to be reexamined.
 		 */
 		counter->errored = true;
-	} else if (evsel__fallback(counter, &target, err, msg, sizeof(msg))) {
+		goto skip_or_fatal;
+	}
+	if (evsel__fallback(counter, &target, err, msg, sizeof(msg))) {
 		if (verbose > 0)
 			ui__warning("%s\n", msg);
 		return COUNTER_RETRY;
-	} else if (target__has_per_thread(&target) && err != EOPNOTSUPP &&
-		   evsel_list->core.threads &&
-		   evsel_list->core.threads->err_thread != -1) {
+	}
+	if (target__has_per_thread(&target) && err != EOPNOTSUPP &&
+	    evsel_list->core.threads && evsel_list->core.threads->err_thread != -1) {
 		/*
 		 * For global --per-thread case, skip current
 		 * error thread.
@@ -658,15 +652,29 @@ static enum counter_recovery stat_handle_error(struct evsel *counter, int err)
 			evsel_list->core.threads->err_thread = -1;
 			return COUNTER_RETRY;
 		}
-	} else if (err == EOPNOTSUPP) {
+		goto skip_or_fatal;
+	}
+	if (err == EOPNOTSUPP) {
 		if (verbose > 0) {
 			ui__warning("%s event is not supported by the kernel.\n",
 				    evsel__name(counter));
+			warned = true;
 		}
 		counter->supported = false;
 		counter->errored = true;
 	}
 
+skip_or_fatal:
+	if (counter->skippable) {
+		if (verbose > 0 && !warned) {
+			ui__warning("skipping event %s that kernel failed to open .\n",
+				    evsel__name(counter));
+		}
+		counter->supported = false;
+		counter->errored = true;
+		return COUNTER_SKIP;
+	}
+
 	evsel__open_strerror(counter, &target, err, msg, sizeof(msg));
 	ui__error("%s\n", msg);
 
-- 
2.51.0.534.gc79095c0ca-goog


  reply	other threads:[~2025-09-23  4:18 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-23  4:18 [PATCH v5 00/25] Legacy hardware/cache events as json Ian Rogers
2025-09-23  4:18 ` Ian Rogers [this message]
2025-09-23  4:18 ` [PATCH v5 02/25] perf parse-events: Fix legacy cache events if event is duplicated in a PMU Ian Rogers
2025-09-23  4:18 ` [PATCH v5 03/25] perf perf_api_probe: Avoid scanning all PMUs, try software PMU first Ian Rogers
2025-09-23  4:18 ` [PATCH v5 04/25] perf record: Skip don't fail for events that don't open Ian Rogers
2025-09-23  4:18 ` [PATCH v5 05/25] perf jevents: Support copying the source json files to OUTPUT Ian Rogers
2025-09-23  4:18 ` [PATCH v5 06/25] perf pmu: Don't eagerly parse event terms Ian Rogers
2025-09-23  4:18 ` [PATCH v5 07/25] perf parse-events: Remove unused FILE input argument to scanner Ian Rogers
2025-09-23  4:18 ` [PATCH v5 08/25] perf pmu: Use fd rather than FILE from new_alias Ian Rogers
2025-09-23  4:18 ` [PATCH v5 09/25] perf pmu: Factor term parsing into a perf_event_attr into a helper Ian Rogers
2025-09-23  4:18 ` [PATCH v5 10/25] perf parse-events: Add terms for legacy hardware and cache config values Ian Rogers
2025-09-23  4:18 ` [PATCH v5 11/25] perf jevents: Add legacy json terms and default_core event table helper Ian Rogers
2025-09-23  4:18 ` [PATCH v5 12/25] perf pmu: Add and use legacy_terms in alias information Ian Rogers
2025-09-23  4:18 ` [PATCH v5 13/25] perf jevents: Add legacy-hardware and legacy-cache json Ian Rogers
2025-09-23  4:18 ` [PATCH v5 14/25] perf print-events: Remove print_hwcache_events Ian Rogers
2025-09-23  4:18 ` [PATCH v5 15/25] perf print-events: Remove print_symbol_events Ian Rogers
2025-09-23  4:18 ` [PATCH v5 16/25] perf parse-events: Remove hard coded legacy hardware and cache parsing Ian Rogers
2025-09-23  4:18 ` [PATCH v5 17/25] perf record: Use evlist__new_default when no events specified Ian Rogers
2025-09-23  4:18 ` [PATCH v5 18/25] perf top: " Ian Rogers
2025-09-23  4:18 ` [PATCH v5 19/25] perf evlist: Avoid scanning all PMUs for evlist__new_default Ian Rogers
2025-09-23  4:18 ` [PATCH v5 20/25] perf evsel: Improvements to __evsel__match Ian Rogers
2025-09-23  4:18 ` [PATCH v5 21/25] perf test parse-events: Use evsel__match for legacy events Ian Rogers
2025-09-23  4:18 ` [PATCH v5 22/25] perf test parse-events: Remove cpu PMU requirement Ian Rogers
2025-09-23 15:52   ` Ian Rogers
2025-09-23  4:18 ` [PATCH v5 23/25] perf test parse-events: Without a PMU use cpu-cycles rather than cycles Ian Rogers
2025-09-23  4:18 ` [PATCH v5 24/25] perf stat: Avoid wildcarding PMUs for default events Ian Rogers
2025-09-23  4:18 ` [PATCH v5 25/25] perf test: Switch cycles event to cpu-cycles Ian Rogers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250923041844.400164-2-irogers@google.com \
    --to=irogers@google.com \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=atishp@rivosinc.com \
    --cc=beeman@rivosinc.com \
    --cc=bpf@vger.kernel.org \
    --cc=james.clark@linaro.org \
    --cc=jolsa@kernel.org \
    --cc=kan.liang@linux.intel.com \
    --cc=leo.yan@arm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=thomas.falcon@intel.com \
    --cc=vincent.weaver@maine.edu \
    --cc=xu.yang_2@nxp.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®