From: sashiko-bot@kernel.org
To: "James Clark" <james.clark@linaro.org>
Cc: linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v4 01/19] perf cs-etm: Queue context packets for frontend
Date: Tue, 09 Jun 2026 14:46:22 +0000 [thread overview]
Message-ID: <20260609144623.11A3F1F00893@smtp.kernel.org> (raw)
In-Reply-To: <20260609-james-cs-context-tracking-fix-v4-1-44f9fb9e5c42@linaro.org>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] The dummy branch sample generated for CS_ETM_DISCONTINUITY packets will now be misattributed to the host's user space (PERF_RECORD_MISC_USER) even when tracing a guest, because its `el` field is hardcoded to `ocsd_EL_unknown`.
--
commit fd2f91c5aeb50268fe7509b8158aa03f25f00def
Author: James Clark <james.clark@linaro.org>
perf cs-etm: Queue context packets for frontend
This commit adds CS_ETM_CONTEXT packets to keep context changes ordered with
the packet stream and avoid mismatches when synthesizing samples from
cached packets. It separates frontend and backend memory access functions
and relies on the packets' exception level and thread ID directly, rather
than tracking them separately in the traceid_queue.
Closes: https://lore.kernel.org/linux-perf-users/20260515021135.1729028-1-aaupov@meta.com/
> diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
> index dee3020ceaa91..26940f1f1b0bf 100644
> --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
> +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
> @@ -402,6 +402,8 @@ cs_etm_decoder__buffer_packet(struct cs_etm_queue *etmq,
> packet_queue->packet_buffer[et].flags = 0;
> packet_queue->packet_buffer[et].exception_number = UINT32_MAX;
> packet_queue->packet_buffer[et].trace_chan_id = trace_chan_id;
> + packet_queue->packet_buffer[et].el = ocsd_EL_unknown;
> + packet_queue->packet_buffer[et].tid = -1;
[ ... ]
> diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c
> index 40c6ddfa8c8d9..5e92359f51a7c 100644
> --- a/tools/perf/util/cs-etm.c
> +++ b/tools/perf/util/cs-etm.c
[ ... ]
> @@ -1649,15 +1685,15 @@ static int cs_etm__synth_branch_sample(struct cs_etm_queue *etmq,
>
> event->sample.header.type = PERF_RECORD_SAMPLE;
> event->sample.header.misc = cs_etm__cpu_mode(etmq, ip,
> - tidq->prev_packet_el);
> + tidq->prev_packet->el);
[Severity: Medium]
Does this code misattribute dummy branch samples generated for
CS_ETM_DISCONTINUITY packets?
When cs_etm_decoder__buffer_packet() creates a new packet, it initializes
packet_buffer[et].el to ocsd_EL_unknown. Because CS_ETM_DISCONTINUITY
packets do not update this field, they retain ocsd_EL_unknown as their
exception level.
Previously, tidq->prev_packet_el tracked the exception level across these
events. By removing tidq->prev_packet_el and relying directly on
tidq->prev_packet->el, cs_etm__cpu_mode() will receive ocsd_EL_unknown
when processing a discontinuity.
Since cs_etm__last_executed_instr() returns an ip of 0 for discontinuities,
cs_etm__cpu_mode() evaluates the combination of ocsd_EL_unknown and ip=0 as
PERF_RECORD_MISC_USER.
Could this incorrectly attribute discontinuities occurring inside guest VMs
to the host's user space, polluting the perf data with inaccurate statistics?
> event->sample.header.size = sizeof(struct perf_event_header);
>
> /* Set time field based on etm auxtrace config. */
> sample.time = cs_etm__resolve_sample_time(etmq, tidq);
>
> sample.ip = ip;
> - sample.pid = thread__pid(tidq->prev_packet_thread);
> - sample.tid = thread__tid(tidq->prev_packet_thread);
> + sample.pid = thread__pid(tidq->frontend_thread);
> + sample.tid = thread__tid(tidq->frontend_thread);
> sample.addr = cs_etm__first_executed_instr(tidq->packet);
> sample.id = etmq->etm->branches_id;
> sample.stream_id = etmq->etm->branches_id;
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260609-james-cs-context-tracking-fix-v4-0-44f9fb9e5c42@linaro.org?part=1
next prev parent reply other threads:[~2026-06-09 14:46 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-09 14:30 [PATCH v4 00/19] perf cs-etm: Queue context packets for frontend James Clark
2026-06-09 14:30 ` [PATCH v4 01/19] " James Clark
2026-06-09 14:46 ` sashiko-bot [this message]
2026-06-09 14:30 ` [PATCH v4 02/19] perf test: Add workload-ctl option James Clark
2026-06-09 14:40 ` sashiko-bot
2026-06-09 14:30 ` [PATCH v4 03/19] perf test: Add a workload that forces context switches James Clark
2026-06-09 14:30 ` [PATCH v4 04/19] perf test cs-etm: Test process attribution James Clark
2026-06-09 14:41 ` sashiko-bot
2026-06-09 14:30 ` [PATCH v4 05/19] perf test: Add deterministic workload James Clark
2026-06-09 14:30 ` [PATCH v4 06/19] perf test cs-etm: Replace unroll loop thread with deterministic decode test James Clark
2026-06-09 14:52 ` sashiko-bot
2026-06-09 14:31 ` [PATCH v4 07/19] perf test cs-etm: Remove asm_pure_loop test James Clark
2026-06-09 14:53 ` sashiko-bot
2026-06-09 14:31 ` [PATCH v4 08/19] perf test cs-etm: Replace memcpy test with raw dump stress test James Clark
2026-06-09 14:31 ` [PATCH v4 09/19] perf test: Add named_threads workload James Clark
2026-06-09 14:50 ` sashiko-bot
2026-06-09 14:31 ` [PATCH v4 10/19] perf test cs-etm: Test decoding for concurrent threads test James Clark
2026-06-09 14:31 ` [PATCH v4 11/19] perf test cs-etm: Remove duplicate branch tests James Clark
2026-06-09 14:31 ` [PATCH v4 12/19] perf test cs-etm: Skip if not root James Clark
2026-06-09 14:53 ` sashiko-bot
2026-06-09 14:31 ` [PATCH v4 13/19] perf test cs-etm: Reduce snapshot size James Clark
2026-06-09 14:31 ` [PATCH v4 14/19] perf test cs-etm: Speed up basic test James Clark
2026-06-09 14:31 ` [PATCH v4 15/19] perf test cs-etm: Remove unused Coresight workloads James Clark
2026-06-09 14:31 ` [PATCH v4 16/19] perf test cs-etm: Make disassembly test use kcore James Clark
2026-06-09 14:31 ` [PATCH v4 17/19] perf test cs-etm: Add all branch instructions to test James Clark
2026-06-09 14:31 ` [PATCH v4 18/19] perf test cs-etm: Speed up disassembly test James Clark
2026-06-09 15:06 ` sashiko-bot
2026-06-09 14:31 ` [PATCH v4 19/19] perf test cs-etm: Move existing tests to coresight folder James Clark
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=20260609144623.11A3F1F00893@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=james.clark@linaro.org \
--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