Commit d7ba979d45272385ce0fdf141d922e61ff48e07b
Committed by
Jason Wessel
1 parent
578bd4dfcd
Exists in
master
and in
39 other branches
debug_core,x86,blackfin: Clean up hw debug disable API
The kgdb_disable_hw_debug() was an architecture specific function for disabling all hardware breakpoints on a per cpu basis when entering the debug core. This patch will remove the weak function kdbg_disable_hw_debug() and change it into a call back which lives with the rest of hw breakpoint call backs in struct kgdb_arch. Signed-off-by: Dongdong Deng <dongdong.deng@windriver.com> Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Showing 4 changed files with 10 additions and 25 deletions Side-by-side Diff
arch/blackfin/kernel/kgdb.c
... | ... | @@ -320,7 +320,7 @@ |
320 | 320 | } |
321 | 321 | } |
322 | 322 | |
323 | -void kgdb_disable_hw_debug(struct pt_regs *regs) | |
323 | +static void bfin_disable_hw_debug(struct pt_regs *regs) | |
324 | 324 | { |
325 | 325 | /* Disable hardware debugging while we are in kgdb */ |
326 | 326 | bfin_write_WPIACTL(0); |
... | ... | @@ -406,6 +406,7 @@ |
406 | 406 | #endif |
407 | 407 | .set_hw_breakpoint = bfin_set_hw_break, |
408 | 408 | .remove_hw_breakpoint = bfin_remove_hw_break, |
409 | + .disable_hw_break = bfin_disable_hw_debug, | |
409 | 410 | .remove_all_hw_break = bfin_remove_all_hw_break, |
410 | 411 | .correct_hw_break = bfin_correct_hw_break, |
411 | 412 | }; |
arch/x86/kernel/kgdb.c
... | ... | @@ -387,7 +387,7 @@ |
387 | 387 | * disable hardware debugging while it is processing gdb packets or |
388 | 388 | * handling exception. |
389 | 389 | */ |
390 | -void kgdb_disable_hw_debug(struct pt_regs *regs) | |
390 | +static void kgdb_disable_hw_debug(struct pt_regs *regs) | |
391 | 391 | { |
392 | 392 | int i; |
393 | 393 | int cpu = raw_smp_processor_id(); |
... | ... | @@ -724,6 +724,7 @@ |
724 | 724 | .flags = KGDB_HW_BREAKPOINT, |
725 | 725 | .set_hw_breakpoint = kgdb_set_hw_break, |
726 | 726 | .remove_hw_breakpoint = kgdb_remove_hw_break, |
727 | + .disable_hw_break = kgdb_disable_hw_debug, | |
727 | 728 | .remove_all_hw_break = kgdb_remove_all_hw_break, |
728 | 729 | .correct_hw_break = kgdb_correct_hw_break, |
729 | 730 | }; |
include/linux/kgdb.h
... | ... | @@ -35,16 +35,6 @@ |
35 | 35 | */ |
36 | 36 | extern int kgdb_skipexception(int exception, struct pt_regs *regs); |
37 | 37 | |
38 | -/** | |
39 | - * kgdb_disable_hw_debug - (optional) Disable hardware debugging hook | |
40 | - * @regs: Current &struct pt_regs. | |
41 | - * | |
42 | - * This function will be called if the particular architecture must | |
43 | - * disable hardware debugging while it is processing gdb packets or | |
44 | - * handling exception. | |
45 | - */ | |
46 | -extern void kgdb_disable_hw_debug(struct pt_regs *regs); | |
47 | - | |
48 | 38 | struct tasklet_struct; |
49 | 39 | struct task_struct; |
50 | 40 | struct uart_port; |
... | ... | @@ -243,6 +233,8 @@ |
243 | 233 | * breakpoint. |
244 | 234 | * @remove_hw_breakpoint: Allow an architecture to specify how to remove a |
245 | 235 | * hardware breakpoint. |
236 | + * @disable_hw_break: Allow an architecture to specify how to disable | |
237 | + * hardware breakpoints for a single cpu. | |
246 | 238 | * @remove_all_hw_break: Allow an architecture to specify how to remove all |
247 | 239 | * hardware breakpoints. |
248 | 240 | * @correct_hw_break: Allow an architecture to specify how to correct the |
... | ... | @@ -256,6 +248,7 @@ |
256 | 248 | int (*remove_breakpoint)(unsigned long, char *); |
257 | 249 | int (*set_hw_breakpoint)(unsigned long, int, enum kgdb_bptype); |
258 | 250 | int (*remove_hw_breakpoint)(unsigned long, int, enum kgdb_bptype); |
251 | + void (*disable_hw_break)(struct pt_regs *regs); | |
259 | 252 | void (*remove_all_hw_break)(void); |
260 | 253 | void (*correct_hw_break)(void); |
261 | 254 | }; |
kernel/debug/debug_core.c
... | ... | @@ -209,18 +209,6 @@ |
209 | 209 | return 0; |
210 | 210 | } |
211 | 211 | |
212 | -/** | |
213 | - * kgdb_disable_hw_debug - Disable hardware debugging while we in kgdb. | |
214 | - * @regs: Current &struct pt_regs. | |
215 | - * | |
216 | - * This function will be called if the particular architecture must | |
217 | - * disable hardware debugging while it is processing gdb packets or | |
218 | - * handling exception. | |
219 | - */ | |
220 | -void __weak kgdb_disable_hw_debug(struct pt_regs *regs) | |
221 | -{ | |
222 | -} | |
223 | - | |
224 | 212 | /* |
225 | 213 | * Some architectures need cache flushes when we set/clear a |
226 | 214 | * breakpoint: |
... | ... | @@ -484,7 +472,9 @@ |
484 | 472 | atomic_inc(&masters_in_kgdb); |
485 | 473 | else |
486 | 474 | atomic_inc(&slaves_in_kgdb); |
487 | - kgdb_disable_hw_debug(ks->linux_regs); | |
475 | + | |
476 | + if (arch_kgdb_ops.disable_hw_break) | |
477 | + arch_kgdb_ops.disable_hw_break(regs); | |
488 | 478 | |
489 | 479 | acquirelock: |
490 | 480 | /* |