Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/linux-2.6-kgdb

* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/linux-2.6-kgdb:
x86,kgdb: Fix hw breakpoint regression

+7 -2
+7 -2
arch/x86/kernel/kgdb.c
··· 572 572 return NOTIFY_STOP; 573 573 } 574 574 575 - #ifdef CONFIG_KGDB_LOW_LEVEL_TRAP 576 575 int kgdb_ll_trap(int cmd, const char *str, 577 576 struct pt_regs *regs, long err, int trap, int sig) 578 577 { ··· 589 590 590 591 return __kgdb_notify(&args, cmd); 591 592 } 592 - #endif /* CONFIG_KGDB_LOW_LEVEL_TRAP */ 593 593 594 594 static int 595 595 kgdb_notify(struct notifier_block *self, unsigned long cmd, void *ptr) ··· 623 625 return register_die_notifier(&kgdb_notifier); 624 626 } 625 627 628 + static void kgdb_hw_overflow_handler(struct perf_event *event, int nmi, 629 + struct perf_sample_data *data, struct pt_regs *regs) 630 + { 631 + kgdb_ll_trap(DIE_DEBUG, "debug", regs, 0, 0, SIGTRAP); 632 + } 633 + 626 634 void kgdb_arch_late(void) 627 635 { 628 636 int i, cpu; ··· 659 655 for_each_online_cpu(cpu) { 660 656 pevent = per_cpu_ptr(breakinfo[i].pev, cpu); 661 657 pevent[0]->hw.sample_period = 1; 658 + pevent[0]->overflow_handler = kgdb_hw_overflow_handler; 662 659 if (pevent[0]->destroy != NULL) { 663 660 pevent[0]->destroy = NULL; 664 661 release_bp_slot(*pevent);