On Wed, Feb 14, 2024 at 9:40 AM Kyle Huey <me@xxxxxxxxxxxx> wrote: > > Now that struct perf_event's orig_overflow_handler is gone, there's no need > for the functions and macros to support looking past overflow_handler to > orig_overflow_handler. > > This patch is solely a refactoring and results in no behavior change. > > Signed-off-by: Kyle Huey <khuey@xxxxxxxxxxxx> > Acked-by: Will Deacon <will@xxxxxxxxxx> > Acked-by: Song Liu <song@xxxxxxxxxx> > Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx> > --- oh, never mind what I said in the first patch about this :) Acked-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > arch/arm/kernel/hw_breakpoint.c | 8 ++++---- > arch/arm64/kernel/hw_breakpoint.c | 4 ++-- > include/linux/perf_event.h | 16 ++-------------- > 3 files changed, 8 insertions(+), 20 deletions(-) > > diff --git a/arch/arm/kernel/hw_breakpoint.c b/arch/arm/kernel/hw_breakpoint.c > index dc0fb7a81371..054e9199f30d 100644 > --- a/arch/arm/kernel/hw_breakpoint.c > +++ b/arch/arm/kernel/hw_breakpoint.c > @@ -626,7 +626,7 @@ int hw_breakpoint_arch_parse(struct perf_event *bp, > hw->address &= ~alignment_mask; > hw->ctrl.len <<= offset; > > - if (uses_default_overflow_handler(bp)) { > + if (is_default_overflow_handler(bp)) { > /* > * Mismatch breakpoints are required for single-stepping > * breakpoints. > @@ -798,7 +798,7 @@ static void watchpoint_handler(unsigned long addr, unsigned int fsr, > * Otherwise, insert a temporary mismatch breakpoint so that > * we can single-step over the watchpoint trigger. > */ > - if (!uses_default_overflow_handler(wp)) > + if (!is_default_overflow_handler(wp)) > continue; > step: > enable_single_step(wp, instruction_pointer(regs)); > @@ -811,7 +811,7 @@ static void watchpoint_handler(unsigned long addr, unsigned int fsr, > info->trigger = addr; > pr_debug("watchpoint fired: address = 0x%x\n", info->trigger); > perf_bp_event(wp, regs); > - if (uses_default_overflow_handler(wp)) > + if (is_default_overflow_handler(wp)) > enable_single_step(wp, instruction_pointer(regs)); > } > > @@ -886,7 +886,7 @@ static void breakpoint_handler(unsigned long unknown, struct pt_regs *regs) > info->trigger = addr; > pr_debug("breakpoint fired: address = 0x%x\n", addr); > perf_bp_event(bp, regs); > - if (uses_default_overflow_handler(bp)) > + if (is_default_overflow_handler(bp)) > enable_single_step(bp, addr); > goto unlock; > } > diff --git a/arch/arm64/kernel/hw_breakpoint.c b/arch/arm64/kernel/hw_breakpoint.c > index 35225632d70a..db2a1861bb97 100644 > --- a/arch/arm64/kernel/hw_breakpoint.c > +++ b/arch/arm64/kernel/hw_breakpoint.c > @@ -654,7 +654,7 @@ static int breakpoint_handler(unsigned long unused, unsigned long esr, > perf_bp_event(bp, regs); > > /* Do we need to handle the stepping? */ > - if (uses_default_overflow_handler(bp)) > + if (is_default_overflow_handler(bp)) > step = 1; > unlock: > rcu_read_unlock(); > @@ -733,7 +733,7 @@ static u64 get_distance_from_watchpoint(unsigned long addr, u64 val, > static int watchpoint_report(struct perf_event *wp, unsigned long addr, > struct pt_regs *regs) > { > - int step = uses_default_overflow_handler(wp); > + int step = is_default_overflow_handler(wp); > struct arch_hw_breakpoint *info = counter_arch_bp(wp); > > info->trigger = addr; > diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h > index c7f54fd74d89..c8bd5bb6610c 100644 > --- a/include/linux/perf_event.h > +++ b/include/linux/perf_event.h > @@ -1341,8 +1341,9 @@ extern int perf_event_output(struct perf_event *event, > struct pt_regs *regs); > > static inline bool > -__is_default_overflow_handler(perf_overflow_handler_t overflow_handler) > +is_default_overflow_handler(struct perf_event *event) > { > + perf_overflow_handler_t overflow_handler = event->overflow_handler; > if (likely(overflow_handler == perf_event_output_forward)) > return true; > if (unlikely(overflow_handler == perf_event_output_backward)) > @@ -1350,19 +1351,6 @@ __is_default_overflow_handler(perf_overflow_handler_t overflow_handler) > return false; > } > > -#define is_default_overflow_handler(event) \ > - __is_default_overflow_handler((event)->overflow_handler) > - > -#ifdef CONFIG_BPF_SYSCALL > -static inline bool uses_default_overflow_handler(struct perf_event *event) > -{ > - return is_default_overflow_handler(event); > -} > -#else > -#define uses_default_overflow_handler(event) \ > - is_default_overflow_handler(event) > -#endif > - > extern void > perf_event_header__init_id(struct perf_event_header *header, > struct perf_sample_data *data, > -- > 2.34.1 >