/* SPDX-License-Identifier: GPL-2.0-only */ /* * Branch Record Buffer Extension Helpers. * * Copyright (C) 2022-2025 ARM Limited * * Author: Anshuman Khandual */ struct arm_pmu; struct perf_branch_stack; struct perf_event; #ifdef CONFIG_ARM64_BRBE void brbe_probe(struct arm_pmu *arm_pmu); unsigned int brbe_num_branch_records(const struct arm_pmu *armpmu); void brbe_invalidate(void); void brbe_enable(const struct arm_pmu *arm_pmu); void brbe_disable(void); bool brbe_branch_attr_valid(struct perf_event *event); void brbe_read_filtered_entries(struct perf_branch_stack *branch_stack, const struct perf_event *event); #else static inline void brbe_probe(struct arm_pmu *arm_pmu) { } static inline unsigned int brbe_num_branch_records(const struct arm_pmu *armpmu) { return 0; } static inline void brbe_invalidate(void) { } static inline void brbe_enable(const struct arm_pmu *arm_pmu) { }; static inline void brbe_disable(void) { }; static inline bool brbe_branch_attr_valid(struct perf_event *event) { WARN_ON_ONCE(!has_branch_stack(event)); return false; } static void brbe_read_filtered_entries(struct perf_branch_stack *branch_stack, const struct perf_event *event) { } #endif