Re: [PATCH v2 11/14] perf auxtrace: cs-etm: Capture wrapped snapshots
| Newsgroups | org.kernel.vger.linux-perf-users |
|---|---|
| Message-ID | <[email protected]> |
> snapshot_has_wrapped() isn't implemented for Coresight, so when a wrap > occurs we only save from offset 0 to current head, modulo buffer size, > rather than capturing the whole buffer. Coresight drivers currently use > a monotonic head pointer even in snapshot mode, which gives a lot more > information for taking snapshots than a wrapped pointer. It means we > don't need to search for data at the end of the buffer to guess if a > wrap has occurred, and we can go back to saving partial buffers after a > wrap by checking if the next size to take is less than the buffer > size. > > The drivers will always be able to generate a monotonic head because > TRBE has a bytes written counter, so even if we stop generating an AUX > record on every overflow, we can check if the counter indicated an > overwrite and offset head by a whole buffer size if it wrapped. This > forces userspace to read the whole buffer rather than between last and > current head. ETR and other sinks use software double buffering, so can > continue as they are. > > Add a much simpler 'monotonic_snapshot_head' path for tracers to use, > and use it for Coresight. > > Signed-off-by: James Clark <[email protected]> Sashiko has reviewed this patch and found no issues. It looks great! -- Sashiko AI review · https://sashiko.dev/#/patchset/20260821-james-cs-unformatted-per-thread-fix-v2-0-00c4fd0701b4@linaro.org?part=11