From: sashiko-bot@kernel.org
To: "Ian Rogers" <irogers@google.com>
Cc: linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v2 5/9] perf evlist: Toggle merged_hybrid_group properly in enable/disable
Date: Wed, 16 Sep 2026 07:06:33 +0000 [thread overview]
Message-ID: <20260916070634.4D84C1F00899@smtp.kernel.org> (raw)
In-Reply-To: <20260916065248.3153556-6-irogers@google.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] perf: dead code in evlist enable/disable due to flag misunderstanding
--
commit a1c6041372bff09cc374228542c586fa596b3401
Author: Ian Rogers <irogers@google.com>
perf evlist: Toggle merged_hybrid_group properly in enable/disable
Merging makes the merged event the leader of the events of the other
core PMUs so their histograms can be linked, but the result isn't a
real event group. The commit treats an evsel with merged_hybrid_group
set as a leader so that it is enabled and disabled in its own right,
and updates the logic to avoid walking the members of a merged leader.
> diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
> index 930efbb66bc8c..034032955d332 100644
> --- a/tools/perf/util/evlist.c
> +++ b/tools/perf/util/evlist.c
[ ... ]
> @@ -789,16 +796,21 @@ static void __evlist__disable(struct evlist *evlist, char *evsel_name, bool excl
> }
>
> evlist__for_each_entry(evlist, pos) {
> - if (evsel__strcmp(pos, evsel_name))
> + match = !evsel__strcmp(pos, evsel_name);
> + if (!match && pos->merged_hybrid_group && evsel__leader(pos))
> + match = !evsel__strcmp(evsel__leader(pos), evsel_name);
> + if (!match)
> continue;
> - if (!evsel__is_group_leader(pos) || !pos->core.fd)
> + if ((!evsel__is_group_leader(pos) && !pos->merged_hybrid_group) || !pos->core.fd)
> continue;
> if (excl_dummy && evsel__is_dummy_event(pos))
> continue;
> pos->disabled = true;
>
> - for_each_group_member(member, pos)
> - member->disabled = true;
> + if (!pos->merged_hybrid_group) {
> + for_each_group_member(member, pos)
> + member->disabled = true;
> + }
[Severity: Medium]
Does this logic correctly prevent walking the members of a merged leader?
The commit message states "don't walk the members of a merged leader".
However, the merged_hybrid_group flag is only set on merged members, never on
the leader. When __evlist__disable() processes a merged leader,
pos->merged_hybrid_group is false, so this code will walk the members anyway.
Conversely, when processing a merged member, the flag is true, skipping the
block. But since a member has no members of its own, the walk would have been
empty anyway.
Does this check correctly match the intent, or should it be testing if the
current group leader is a merged leader instead?
> }
>
> /*
[ ... ]
> @@ -827,28 +839,37 @@ static void __evlist__enable(struct evlist *evlist, char *evsel_name, bool excl_
[ ... ]
> evlist__for_each_entry(evlist, pos) {
> - if (evsel__strcmp(pos, evsel_name))
> + match = !evsel__strcmp(pos, evsel_name);
> + if (!match && pos->merged_hybrid_group && evsel__leader(pos))
> + match = !evsel__strcmp(evsel__leader(pos), evsel_name);
> + if (!match)
> continue;
> - if (!evsel__is_group_leader(pos) || !pos->core.fd)
> + if ((!evsel__is_group_leader(pos) && !pos->merged_hybrid_group) || !pos->core.fd)
> continue;
> if (excl_dummy && evsel__is_dummy_event(pos))
> continue;
> pos->disabled = false;
> + if (!pos->merged_hybrid_group) {
> + for_each_group_member(member, pos)
> + member->disabled = false;
> + }
[Severity: Medium]
Does this code also suffer from the same flag misunderstanding in
__evlist__enable()?
If pos->merged_hybrid_group is only set on members, this check will similarly
fail to prevent the merged leader from walking its members.
>
> - for_each_group_member(member, pos)
> - member->disabled = false;
> }
>
> /*
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260916065248.3153556-1-irogers@google.com?part=5
next prev parent reply other threads:[~2026-09-16 7:06 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-16 6:52 [PATCH v2 0/9] perf report/top: Add opt-in --hybrid-merge Ian Rogers
2026-09-16 6:52 ` [PATCH v2 1/9] perf evlist: Implement evlist__can_merge_hybrid using first_wildcard_match Ian Rogers
2026-09-16 7:02 ` sashiko-bot
2026-09-16 6:52 ` [PATCH v2 2/9] perf ui hist: Add support for aggregated total_period and merging entries Ian Rogers
2026-09-16 7:04 ` sashiko-bot
2026-09-16 6:52 ` [PATCH v2 3/9] perf tools: Expose opt-in --hybrid-merge Ian Rogers
2026-09-16 7:04 ` sashiko-bot
2026-09-16 6:52 ` [PATCH v2 4/9] perf Documentation: Add tip for hybrid event merging Ian Rogers
2026-09-16 6:59 ` sashiko-bot
2026-09-16 6:52 ` [PATCH v2 5/9] perf evlist: Toggle merged_hybrid_group properly in enable/disable Ian Rogers
2026-09-16 7:06 ` sashiko-bot [this message]
2026-09-16 6:52 ` [PATCH v2 6/9] perf tools: Add TUI hints for --hybrid-merge Ian Rogers
2026-09-16 7:01 ` sashiko-bot
2026-09-16 6:52 ` [PATCH v2 7/9] perf config: Add core.hybrid-merge to configure event merging Ian Rogers
2026-09-16 6:59 ` sashiko-bot
2026-09-16 6:52 ` [PATCH v2 8/9] perf test: Expand tests for --hybrid-merge Ian Rogers
2026-09-16 7:04 ` sashiko-bot
2026-09-16 6:52 ` [PATCH v2 9/9] perf test: Isolate test suite from user .perfconfig natively Ian Rogers
2026-09-16 7:08 ` sashiko-bot
2026-09-16 23:46 ` [PATCH v3 0/9] perf report/top: Add opt-in --hybrid-merge Ian Rogers
2026-09-16 23:46 ` [PATCH v3 1/9] perf evlist: Implement evlist__can_merge_hybrid using first_wildcard_match Ian Rogers
2026-09-16 23:58 ` sashiko-bot
2026-09-16 23:46 ` [PATCH v3 2/9] perf ui hist: Add support for aggregated total_period and merging entries Ian Rogers
2026-09-16 23:57 ` sashiko-bot
2026-09-16 23:46 ` [PATCH v3 3/9] perf tools: Expose opt-in --hybrid-merge Ian Rogers
2026-09-16 23:57 ` sashiko-bot
2026-09-16 23:46 ` [PATCH v3 4/9] perf Documentation: Add tip for hybrid event merging Ian Rogers
2026-09-16 23:48 ` sashiko-bot
2026-09-16 23:46 ` [PATCH v3 5/9] perf evlist: Toggle merged_hybrid_group properly in enable/disable Ian Rogers
2026-09-16 23:53 ` sashiko-bot
2026-09-16 23:46 ` [PATCH v3 6/9] perf tools: Add TUI hints for --hybrid-merge Ian Rogers
2026-09-16 23:53 ` sashiko-bot
2026-09-16 23:46 ` [PATCH v3 7/9] perf config: Add core.hybrid-merge to configure event merging Ian Rogers
2026-09-16 23:57 ` sashiko-bot
2026-09-16 23:46 ` [PATCH v3 8/9] perf test: Expand tests for --hybrid-merge Ian Rogers
2026-09-16 23:53 ` sashiko-bot
2026-09-16 23:46 ` [PATCH v3 9/9] perf test: Isolate test suite from user .perfconfig natively Ian Rogers
2026-09-16 23:57 ` sashiko-bot
2026-09-17 5:06 ` [PATCH v4 0/9] perf report/top: Add opt-in --hybrid-merge Ian Rogers
2026-09-17 5:07 ` [PATCH v4 1/9] perf evlist: Implement evlist__can_merge_hybrid using first_wildcard_match Ian Rogers
2026-09-17 5:14 ` sashiko-bot
2026-09-17 5:07 ` [PATCH v4 2/9] perf ui hist: Add support for aggregated total_period and merging entries Ian Rogers
2026-09-17 5:16 ` sashiko-bot
2026-09-17 5:07 ` [PATCH v4 3/9] perf tools: Expose opt-in --hybrid-merge Ian Rogers
2026-09-17 5:16 ` sashiko-bot
2026-09-18 20:31 ` Arnaldo Carvalho de Melo
2026-09-18 20:51 ` Ian Rogers
2026-09-17 5:07 ` [PATCH v4 4/9] perf Documentation: Add tip for hybrid event merging Ian Rogers
2026-09-17 5:10 ` sashiko-bot
2026-09-17 5:07 ` [PATCH v4 5/9] perf evlist: Toggle merged_hybrid_group properly in enable/disable Ian Rogers
2026-09-17 5:13 ` sashiko-bot
2026-09-17 5:07 ` [PATCH v4 6/9] perf tools: Add TUI hints for --hybrid-merge Ian Rogers
2026-09-17 5:14 ` sashiko-bot
2026-09-17 5:07 ` [PATCH v4 7/9] perf config: Add core.hybrid-merge to configure event merging Ian Rogers
2026-09-17 5:16 ` sashiko-bot
2026-09-17 5:07 ` [PATCH v4 8/9] perf test: Expand tests for --hybrid-merge Ian Rogers
2026-09-17 5:18 ` sashiko-bot
2026-09-17 5:07 ` [PATCH v4 9/9] perf test: Isolate test suite from user .perfconfig natively Ian Rogers
2026-09-17 5:17 ` sashiko-bot
2026-09-18 20:40 ` [PATCH v4 0/9] perf report/top: Add opt-in --hybrid-merge Arnaldo Carvalho de Melo
2026-09-18 21:58 ` Arnaldo Carvalho de Melo
2026-09-18 22:07 ` Ian Rogers
2026-09-18 22:11 ` Ian Rogers
2026-09-18 23:04 ` Arnaldo Melo
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=20260916070634.4D84C1F00899@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=irogers@google.com \
--cc=linux-perf-users@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/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