* [PATCH v2] perf/core: Fix ITRACE start suppression for inherited events
@ 2026-09-29 15:08 Leo Yan
2026-09-29 15:31 ` James Clark
0 siblings, 1 reply; 2+ messages in thread
From: Leo Yan @ 2026-09-29 15:08 UTC (permalink / raw)
To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
Namhyung Kim, Mark Rutland, Alexander Shishkin, Jiri Olsa,
Ian Rogers, Adrian Hunter, James Clark
Cc: Ingo Molnar, linux-perf-users, linux-kernel, Sashiko AI, Leo Yan
perf_log_itrace_start() follows event->parent before checking
PERF_ATTACH_ITRACE, but perf_event_itrace_started() sets the flag on the
event passed by the PMU driver. If an inherited event starts tracing
before its parent, the parent's flag remains clear and the child emits
redundant ITRACE_START records on subsequent schedule-ins.
Follow event->parent in perf_event_itrace_started() as well, so that the
setter and checker use the same event. This preserves the original
suppression policy: ITRACE_START supplies the initial task context when
tracing begins, while subsequent task switches are tracked through
context-switch records or trace context packets.
Reported-by: Sashiko AI <sashiko-bot@kernel.org>
Closes: https://lore.kernel.org/linux-perf-users/20260901164705.042781F000E9@smtp.kernel.org/
Fixes: 9a6694cfa239 ("perf/x86/intel/pt: Do not force sync packets on every schedule-in")
Signed-off-by: Leo Yan <leo.yan@arm.com>
---
Changes in v2:
- Changed setter to fetch parent event instead (James).
- Link to v1: https://lore.kernel.org/r/20260903-perf_core_itrace_start_fix_inherit_event-v1-1-6bff7e675af5@arm.com
---
kernel/events/core.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 634d2ccbab82d8bfe9d1bd7f8c6745f60260dbd9..85d924cce387f88de0c1efe6c22754d38430c9d6 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -10568,6 +10568,9 @@ void perf_event_text_poke(const void *addr, const void *old_bytes,
void perf_event_itrace_started(struct perf_event *event)
{
+ if (event->parent)
+ event = event->parent;
+
WRITE_ONCE(event->attach_state, event->attach_state | PERF_ATTACH_ITRACE);
}
---
base-commit: 6f8319e3e9a44dd537d17f41565a8453c560a581
change-id: 20260903-perf_core_itrace_start_fix_inherit_event-a8930d792899
Best regards,
--
Leo Yan <leo.yan@arm.com>
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH v2] perf/core: Fix ITRACE start suppression for inherited events
2026-09-29 15:08 [PATCH v2] perf/core: Fix ITRACE start suppression for inherited events Leo Yan
@ 2026-09-29 15:31 ` James Clark
0 siblings, 0 replies; 2+ messages in thread
From: James Clark @ 2026-09-29 15:31 UTC (permalink / raw)
To: Leo Yan
Cc: Ingo Molnar, linux-perf-users, linux-kernel, Sashiko AI,
Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
Namhyung Kim, Mark Rutland, Alexander Shishkin, Jiri Olsa,
Ian Rogers, Adrian Hunter
On 29/09/2026 16:08, Leo Yan wrote:
> perf_log_itrace_start() follows event->parent before checking
> PERF_ATTACH_ITRACE, but perf_event_itrace_started() sets the flag on the
> event passed by the PMU driver. If an inherited event starts tracing
> before its parent, the parent's flag remains clear and the child emits
> redundant ITRACE_START records on subsequent schedule-ins.
>
> Follow event->parent in perf_event_itrace_started() as well, so that the
> setter and checker use the same event. This preserves the original
> suppression policy: ITRACE_START supplies the initial task context when
> tracing begins, while subsequent task switches are tracked through
> context-switch records or trace context packets.
>
> Reported-by: Sashiko AI <sashiko-bot@kernel.org>
> Closes: https://lore.kernel.org/linux-perf-users/20260901164705.042781F000E9@smtp.kernel.org/
> Fixes: 9a6694cfa239 ("perf/x86/intel/pt: Do not force sync packets on every schedule-in")
> Signed-off-by: Leo Yan <leo.yan@arm.com>
> ---
> Changes in v2:
> - Changed setter to fetch parent event instead (James).
> - Link to v1: https://lore.kernel.org/r/20260903-perf_core_itrace_start_fix_inherit_event-v1-1-6bff7e675af5@arm.com
> ---
> kernel/events/core.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/kernel/events/core.c b/kernel/events/core.c
> index 634d2ccbab82d8bfe9d1bd7f8c6745f60260dbd9..85d924cce387f88de0c1efe6c22754d38430c9d6 100644
> --- a/kernel/events/core.c
> +++ b/kernel/events/core.c
> @@ -10568,6 +10568,9 @@ void perf_event_text_poke(const void *addr, const void *old_bytes,
>
> void perf_event_itrace_started(struct perf_event *event)
> {
> + if (event->parent)
> + event = event->parent;
> +
> WRITE_ONCE(event->attach_state, event->attach_state | PERF_ATTACH_ITRACE);
> }
>
>
> ---
> base-commit: 6f8319e3e9a44dd537d17f41565a8453c560a581
> change-id: 20260903-perf_core_itrace_start_fix_inherit_event-a8930d792899
>
> Best regards,
Reviewed-by: James Clark <james.clark@linaro.org>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-09-29 15:31 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-29 15:08 [PATCH v2] perf/core: Fix ITRACE start suppression for inherited events Leo Yan
2026-09-29 15:31 ` James Clark
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®