| /* SPDX-License-Identifier: GPL-2.0-only */ | |
| /* | |
| * Branch Record Buffer Extension Helpers. | |
| * | |
| * Copyright (C) 2022-2025 ARM Limited | |
| * | |
| * Author: Anshuman Khandual <anshuman.khandual@arm.com> | |
| */ | |
| 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 |