Lines Matching refs:bp
167 static int is_compat_bp(struct perf_event *bp) in is_compat_bp() argument
169 struct task_struct *tsk = bp->hw.target; in is_compat_bp()
196 struct perf_event *bp, in hw_breakpoint_slot_setup() argument
207 *slot = bp; in hw_breakpoint_slot_setup()
212 if (*slot == bp) { in hw_breakpoint_slot_setup()
218 if (*slot == bp) in hw_breakpoint_slot_setup()
229 static int hw_breakpoint_control(struct perf_event *bp, in hw_breakpoint_control() argument
232 struct arch_hw_breakpoint *info = counter_arch_bp(bp); in hw_breakpoint_control()
255 i = hw_breakpoint_slot_setup(slots, max_slots, bp, ops); in hw_breakpoint_control()
295 int arch_install_hw_breakpoint(struct perf_event *bp) in arch_install_hw_breakpoint() argument
297 return hw_breakpoint_control(bp, HW_BREAKPOINT_INSTALL); in arch_install_hw_breakpoint()
300 void arch_uninstall_hw_breakpoint(struct perf_event *bp) in arch_uninstall_hw_breakpoint() argument
302 hw_breakpoint_control(bp, HW_BREAKPOINT_UNINSTALL); in arch_uninstall_hw_breakpoint()
330 int arch_check_bp_in_kernelspace(struct perf_event *bp) in arch_check_bp_in_kernelspace() argument
334 struct arch_hw_breakpoint *info = counter_arch_bp(bp); in arch_check_bp_in_kernelspace()
392 static int arch_build_bp_info(struct perf_event *bp) in arch_build_bp_info() argument
394 struct arch_hw_breakpoint *info = counter_arch_bp(bp); in arch_build_bp_info()
397 switch (bp->attr.bp_type) { in arch_build_bp_info()
415 switch (bp->attr.bp_len) { in arch_build_bp_info()
438 if (is_compat_bp(bp)) { in arch_build_bp_info()
454 info->address = bp->attr.bp_addr; in arch_build_bp_info()
461 if (arch_check_bp_in_kernelspace(bp)) in arch_build_bp_info()
467 info->ctrl.enabled = !bp->attr.disabled; in arch_build_bp_info()
475 int arch_validate_hwbkpt_settings(struct perf_event *bp) in arch_validate_hwbkpt_settings() argument
477 struct arch_hw_breakpoint *info = counter_arch_bp(bp); in arch_validate_hwbkpt_settings()
482 ret = arch_build_bp_info(bp); in arch_validate_hwbkpt_settings()
495 if (is_compat_bp(bp)) { in arch_validate_hwbkpt_settings()
532 if (info->ctrl.privilege == AARCH64_BREAKPOINT_EL1 && bp->hw.target) in arch_validate_hwbkpt_settings()
588 struct perf_event *bp, **slots; in breakpoint_handler() local
599 bp = slots[i]; in breakpoint_handler()
601 if (bp == NULL) in breakpoint_handler()
615 counter_arch_bp(bp)->trigger = addr; in breakpoint_handler()
616 perf_bp_event(bp, regs); in breakpoint_handler()
619 if (!bp->overflow_handler) in breakpoint_handler()
945 void hw_breakpoint_pmu_read(struct perf_event *bp) in hw_breakpoint_pmu_read() argument