Message ID | 20200401061309.92442-8-ravi.bangoria@linux.ibm.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | powerpc/watchpoint: Preparation for more than one watchpoint | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch powerpc/merge (c6624071c338732402e8c726df6a4074473eaa0e) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch powerpc/next (7074695ac6fb965d478f373b95bc5c636e9f21b0) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch linus/master (1a323ea5356edbb3073dc59d51b9e6b86908857d) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch powerpc/fixes (1d0c32ec3b860a32df593a22bad0d1dbc5546a59) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch linux-next (3eb7cccdb3ae41ebb6a2f5f1ccd2821550c61fe1) |
snowpatch_ozlabs/apply_patch | fail | Failed to apply to any branch |
Le 01/04/2020 à 08:13, Ravi Bangoria a écrit : > Instead of disabling only one watchpoint, get num of available > watchpoints dynamically and disable all of them. > > Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.ibm.com> > --- > arch/powerpc/include/asm/hw_breakpoint.h | 15 +++++++-------- > 1 file changed, 7 insertions(+), 8 deletions(-) > > diff --git a/arch/powerpc/include/asm/hw_breakpoint.h b/arch/powerpc/include/asm/hw_breakpoint.h > index 4e4976c3248b..fae33c729ba9 100644 > --- a/arch/powerpc/include/asm/hw_breakpoint.h > +++ b/arch/powerpc/include/asm/hw_breakpoint.h > @@ -78,14 +78,13 @@ extern void ptrace_triggered(struct perf_event *bp, > struct perf_sample_data *data, struct pt_regs *regs); > static inline void hw_breakpoint_disable(void) > { > - struct arch_hw_breakpoint brk; > - > - brk.address = 0; > - brk.type = 0; > - brk.len = 0; > - brk.hw_len = 0; > - if (ppc_breakpoint_available()) > - __set_breakpoint(&brk, 0); > + int i; > + struct arch_hw_breakpoint null_brk = {0}; Those declaration should be in the block unsigned them below. > + > + if (ppc_breakpoint_available()) { > + for (i = 0; i < nr_wp_slots(); i++) > + __set_breakpoint(&null_brk, i); > + } I would have had a preference to the following, but that's detail I guess: int i; struct arch_hw_breakpoint null_brk = {0}; if (!ppc_breakpoint_available()) return; for (i = 0; i < nr_wp_slots(); i++) __set_breakpoint(&null_brk, i); > } > extern void thread_change_pc(struct task_struct *tsk, struct pt_regs *regs); > int hw_breakpoint_handler(struct die_args *args); > Christophe
On 4/1/20 12:02 PM, Christophe Leroy wrote: > > > Le 01/04/2020 à 08:13, Ravi Bangoria a écrit : >> Instead of disabling only one watchpoint, get num of available >> watchpoints dynamically and disable all of them. >> >> Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.ibm.com> >> --- >> arch/powerpc/include/asm/hw_breakpoint.h | 15 +++++++-------- >> 1 file changed, 7 insertions(+), 8 deletions(-) >> >> diff --git a/arch/powerpc/include/asm/hw_breakpoint.h b/arch/powerpc/include/asm/hw_breakpoint.h >> index 4e4976c3248b..fae33c729ba9 100644 >> --- a/arch/powerpc/include/asm/hw_breakpoint.h >> +++ b/arch/powerpc/include/asm/hw_breakpoint.h >> @@ -78,14 +78,13 @@ extern void ptrace_triggered(struct perf_event *bp, >> struct perf_sample_data *data, struct pt_regs *regs); >> static inline void hw_breakpoint_disable(void) >> { >> - struct arch_hw_breakpoint brk; >> - >> - brk.address = 0; >> - brk.type = 0; >> - brk.len = 0; >> - brk.hw_len = 0; >> - if (ppc_breakpoint_available()) >> - __set_breakpoint(&brk, 0); >> + int i; >> + struct arch_hw_breakpoint null_brk = {0}; > > Those declaration should be in the block unsigned them below. > >> + >> + if (ppc_breakpoint_available()) { >> + for (i = 0; i < nr_wp_slots(); i++) >> + __set_breakpoint(&null_brk, i); >> + } > > I would have had a preference to the following, but that's detail I guess: > > int i; > struct arch_hw_breakpoint null_brk = {0}; > > if (!ppc_breakpoint_available()) > return; > > for (i = 0; i < nr_wp_slots(); i++) > __set_breakpoint(&null_brk, i); This looks more better. Will change it. Ravi
diff --git a/arch/powerpc/include/asm/hw_breakpoint.h b/arch/powerpc/include/asm/hw_breakpoint.h index 4e4976c3248b..fae33c729ba9 100644 --- a/arch/powerpc/include/asm/hw_breakpoint.h +++ b/arch/powerpc/include/asm/hw_breakpoint.h @@ -78,14 +78,13 @@ extern void ptrace_triggered(struct perf_event *bp, struct perf_sample_data *data, struct pt_regs *regs); static inline void hw_breakpoint_disable(void) { - struct arch_hw_breakpoint brk; - - brk.address = 0; - brk.type = 0; - brk.len = 0; - brk.hw_len = 0; - if (ppc_breakpoint_available()) - __set_breakpoint(&brk, 0); + int i; + struct arch_hw_breakpoint null_brk = {0}; + + if (ppc_breakpoint_available()) { + for (i = 0; i < nr_wp_slots(); i++) + __set_breakpoint(&null_brk, i); + } } extern void thread_change_pc(struct task_struct *tsk, struct pt_regs *regs); int hw_breakpoint_handler(struct die_args *args);
Instead of disabling only one watchpoint, get num of available watchpoints dynamically and disable all of them. Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.ibm.com> --- arch/powerpc/include/asm/hw_breakpoint.h | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-)