Commit d7ba979d45272385ce0fdf141d922e61ff48e07b

Authored by Dongdong Deng
Committed by Jason Wessel
1 parent 578bd4dfcd

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 /*