The current TRBE driver operates only in fill mode, where tracing stops at the top of buffer and a maintenance interrupt is raised. Due to interrupt latency, tracing is halted while the program continues to run, resulting in trace data lose.
This series enhances the driver for the trigger mode to mitigate trace discontinuity. The circle buffer mode is introduced to avoid any maintenance interrupts during the snapshot session.
It can be divided into three parts for easier review:
Patches 01~05: Minor refactoring for disabling operations and clearing status. Patches 06~12: Refactor fault action and trace size calculation. Patches 13~19: Support trigger and circle modes. To better utilize the new buffer modes, perf sets the watermark to one-quarter of the buffer size.
This series is applied on coresight-next branch and has been validated on Orion O6 board:
1) The trigger count and wrap mode are verified using Ftrace logs. 2) A new kunit test module verifies limit and count calculations. 3) Basic perf record / script commands and module load/unload have been tested successfully.
Signed-off-by: Leo Yan leo.yan@arm.com --- Leo Yan (19): coresight: trbe: Use helpers for checking errata coresight: trbe: Remove redundant disable operation coresight: trbe: Remove buffer disabling in trbe_handle_overflow() coresight: trbe: Remove set_trbe_disabled() from the enable flow coresight: trbe: Refactor status clearing coresight: trbe: Refactor syndrome decoding coresight: trbe: Refactor AUX flag setting coresight: trbe: Use PERF_AUX_FLAG_PARTIAL instead of PERF_AUX_FLAG_COLLISION coresight: trbe: Add fault action argument to trbe_handle_overflow() coresight: trbe: Always check fault action when updating buffer coresight: trbe: Apply overwrite erratum for only wrap event coresight: trbe: Calculate size for buffer wrapping coresight: trbe: Remove misleading comment coresight: trbe: Refactor compute_trbe_buffer_limit() coresight: trbe: Add static key for bypassing trigger mode coresight: trbe: Support trigger mode coresight: trbe: Enable circle mode for snapshot coresight: trbe: Add kunit tests perf: cs-etm: Set watermark for AUX trace
drivers/hwtracing/coresight/Kconfig | 9 + drivers/hwtracing/coresight/Makefile | 1 + .../coresight/coresight-trbe-kunit-tests.c | 536 +++++++++++++++++++++ drivers/hwtracing/coresight/coresight-trbe.c | 440 +++++++++-------- drivers/hwtracing/coresight/coresight-trbe.h | 111 ++++- tools/perf/arch/arm/util/cs-etm.c | 7 + 6 files changed, 896 insertions(+), 208 deletions(-) --- base-commit: 9e9182cab5ebc3ee7544e60ef08ba19fdf216920 change-id: 20251120-trbe_buffer_refactor_v1-1-8f8023105469
Best regards,