From: Namhyung Kim <namhyung@kernel.org>
To: "Liang, Kan" <kan.liang@linux.intel.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
Ian Rogers <irogers@google.com>, Jiri Olsa <jolsa@kernel.org>,
Adrian Hunter <adrian.hunter@intel.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
linux-perf-users@vger.kernel.org,
Ravi Bangoria <ravi.bangoria@amd.com>,
Mark Rutland <mark.rutland@arm.com>,
James Clark <james.clark@arm.com>,
Kajol Jain <kjain@linux.ibm.com>,
Thomas Richter <tmricht@linux.ibm.com>,
Atish Patra <atishp@atishpatra.org>,
Palmer Dabbelt <palmer@rivosinc.com>,
Mingwei Zhang <mizhang@google.com>,
James Clark <james.clark@linaro.org>
Subject: Re: [PATCH 01/10] perf tools: Add fallback for exclude_guest
Date: Mon, 30 Sep 2024 13:36:11 -0700 [thread overview]
Message-ID: <ZvsLu7-avQHVvp7c@google.com> (raw)
In-Reply-To: <f171c2e5-3468-4cdb-b369-87e5aeb6660b@linux.intel.com>
On Fri, Sep 06, 2024 at 09:47:53AM -0400, Liang, Kan wrote:
>
>
> On 2024-09-05 4:24 p.m., Namhyung Kim wrote:
> > Commit 7b100989b4f6bce70 ("perf evlist: Remove __evlist__add_default")
> > changed to parse "cycles:P" event instead of creating a new cycles
> > event for perf record. But it also changed the way how modifiers are
> > handled so it doesn't set the exclude_guest bit by default.
> >
> > It seems Apple M1 PMU requires exclude_guest set and returns EOPNOTSUPP
> > if not. Let's add a fallback so that it can work with default events.
> >
> > Fixes: 7b100989b4f6bce70 ("perf evlist: Remove __evlist__add_default")
> > Cc: Mark Rutland <mark.rutland@arm.com>
> > Cc: James Clark <james.clark@linaro.org>
> > Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> > ---
> > tools/perf/builtin-stat.c | 3 +--
> > tools/perf/util/evsel.c | 21 +++++++++++++++++++++
> > 2 files changed, 22 insertions(+), 2 deletions(-)
> >
> > diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
> > index cf985cdb9a6ee588..d8315dae930184ba 100644
> > --- a/tools/perf/builtin-stat.c
> > +++ b/tools/perf/builtin-stat.c
> > @@ -639,8 +639,7 @@ static enum counter_recovery stat_handle_error(struct evsel *counter)
> > * (behavior changed with commit b0a873e).
> > */
> > if (errno == EINVAL || errno == ENOSYS ||
> > - errno == ENOENT || errno == EOPNOTSUPP ||
> > - errno == ENXIO) {
> > + errno == ENOENT || errno == ENXIO) {
> > if (verbose > 0)
> > ui__warning("%s event is not supported by the kernel.\n",
> > evsel__name(counter));
>
> It seems the behavior for other reasons which trigger the 'EOPNOTSUPP'
> is changed as well.
> At least, it looks like we don't skip the member event with EOPNOTSUPP
> anymore.
>
> I'm not sure if it's a big deal. But I think we'd better mention it in
> the change log or the comments.
Yeah I think it should handle EOPNOTSUPP at the end of the function to
maintain the behavior. Still it's not exactly the same but I think the
skippable case is ok. Thanks for pointing this out.
Thanks,
Namhyung
>
> > diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
> > index 49cc71511c0c8ce8..d59ad76b28758906 100644
> > --- a/tools/perf/util/evsel.c
> > +++ b/tools/perf/util/evsel.c
> > @@ -3244,6 +3244,27 @@ bool evsel__fallback(struct evsel *evsel, struct target *target, int err,
> > evsel->core.attr.exclude_kernel = 1;
> > evsel->core.attr.exclude_hv = 1;
> >
> > + return true;
> > + } else if (err == EOPNOTSUPP && !evsel->core.attr.exclude_guest &&
> > + !evsel->exclude_GH) {
> > + const char *name = evsel__name(evsel);
> > + char *new_name;
> > + const char *sep = ":";
> > +
> > + /* Is there already the separator in the name. */
> > + if (strchr(name, '/') ||
> > + (strchr(name, ':') && !evsel->is_libpfm_event))
> > + sep = "";
> > +
> > + if (asprintf(&new_name, "%s%sH", name, sep) < 0)
> > + return false;
> > +
> > + free(evsel->name);
> > + evsel->name = new_name;
> > + /* Apple M1 requires exclude_guest */
> > + scnprintf(msg, msgsize, "trying to fall back to excluding guest samples");
> > + evsel->core.attr.exclude_guest = 1;
> > +
> > return true;
> > }
> >
next prev parent reply other threads:[~2024-09-30 20:36 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-05 20:24 [RFC/PATCHSET 00/10] perf tools: Do not set attr.exclude_guest by default (v3) Namhyung Kim
2024-09-05 20:24 ` [PATCH 01/10] perf tools: Add fallback for exclude_guest Namhyung Kim
2024-09-06 13:47 ` Liang, Kan
2024-09-30 20:36 ` Namhyung Kim [this message]
2024-09-05 20:24 ` [PATCH 02/10] perf tools: Don't set attr.exclude_guest by default Namhyung Kim
2024-09-06 14:10 ` Liang, Kan
2024-09-05 20:24 ` [PATCH 03/10] perf tools: Simplify evsel__add_modifier() Namhyung Kim
2024-09-05 20:24 ` [PATCH 04/10] perf stat: Add --exclude-guest option Namhyung Kim
2024-09-06 14:33 ` Liang, Kan
2024-09-23 8:47 ` James Clark
2024-09-24 20:21 ` Namhyung Kim
2024-09-25 8:36 ` James Clark
2024-09-30 20:13 ` Namhyung Kim
2024-09-25 13:49 ` Liang, Kan
2024-09-30 20:07 ` Namhyung Kim
2024-09-05 20:24 ` [PATCH 05/10] perf tools: Do not set exclude_guest for precise_ip Namhyung Kim
2024-09-05 20:24 ` [PATCH 06/10] perf tools: Detect missing kernel features properly Namhyung Kim
2024-09-05 20:24 ` [PATCH 07/10] perf tools: Separate exclude_hv fallback Namhyung Kim
2024-09-06 15:21 ` Liang, Kan
2024-09-30 20:37 ` Namhyung Kim
2024-09-05 20:24 ` [PATCH 08/10] perf tools: Move x86__is_amd_cpu() to util/env.c Namhyung Kim
2024-09-05 20:24 ` [PATCH 09/10] perf tools: Check fallback error and order Namhyung Kim
2024-09-05 20:24 ` [PATCH 10/10] perf record: Just use "cycles:P" as the default event Namhyung Kim
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=ZvsLu7-avQHVvp7c@google.com \
--to=namhyung@kernel.org \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=atishp@atishpatra.org \
--cc=irogers@google.com \
--cc=james.clark@arm.com \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=kjain@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@kernel.org \
--cc=mizhang@google.com \
--cc=palmer@rivosinc.com \
--cc=peterz@infradead.org \
--cc=ravi.bangoria@amd.com \
--cc=tmricht@linux.ibm.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 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.