Message ID | 20240214173950.18570-3-khuey@kylehuey.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | None | expand |
On Wed, Feb 14, 2024 at 9:40 AM Kyle Huey <me@kylehuey.com> 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@kylehuey.com> > Acked-by: Will Deacon <will@kernel.org> > Acked-by: Song Liu <song@kernel.org> > Acked-by: Jiri Olsa <jolsa@kernel.org> > --- oh, never mind what I said in the first patch about this :) Acked-by: Andrii Nakryiko <andrii@kernel.org> > 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 >
* Kyle Huey <me@kylehuey.com> 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@kylehuey.com> > Acked-by: Will Deacon <will@kernel.org> > Acked-by: Song Liu <song@kernel.org> > Acked-by: Jiri Olsa <jolsa@kernel.org> > --- > 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/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)) Please read the CodingStyle section about variable definition blocks and newlines... Also note the stray period in the title ... How did this patch get to v5 and get acked by 3 people with such trivial problems still present? ... Thanks, Ingo
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,