On Wed, May 27, 2026 at 05:11:59AM -0700, Puranjay Mohan wrote:
> Enable bpf_get_branch_snapshot() on ARM64 by implementing the
> perf_snapshot_branch_stack static call for BRBE.
> 
> BRBE is paused before masking exceptions to avoid branch buffer
> pollution from trace_hardirqs_off(). Exceptions are then masked with
> local_daif_save() to prevent PMU overflow pseudo-NMIs from interfering.
> If an overflow between pause and DAIF save re-enables BRBE, the snapshot
> detects this via BRBFCR_EL1.PAUSED and bails out.
> 
> Branch records are read using perf_entry_from_brbe_regset() with a NULL
> event pointer to bypass event-specific filtering. The buffer is
> invalidated after reading.
> 
> Introduce a for_each_brbe_entry() iterator to deduplicate bank
> iteration between brbe_read_filtered_entries() and the snapshot.
> 
> Signed-off-by: Puranjay Mohan <[email protected]>
> ---
>  drivers/perf/arm_brbe.c  | 127 ++++++++++++++++++++++++++++++++-------
>  drivers/perf/arm_brbe.h  |   9 +++
>  drivers/perf/arm_pmuv3.c |   5 +-
>  3 files changed, 119 insertions(+), 22 deletions(-)

Reviewed-by: Rob Herring (Arm) <[email protected]>

Reply via email to