aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-05-21 14:10:41 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-05-21 14:10:41 -0400
commitac3ee84c604502240122c47b52f0542ec8774f15 (patch)
treefa74b50e310af6cef3298a052514b2d42b260d6b /kernel
parent90b9a32d8f441369b2f97a765d2d957b531eb653 (diff)
parent4fe1da4ebc18c4c42fa56c228447f68033fce5f0 (diff)
Merge branch 'dbg-early-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/linux-2.6-kgdb
* 'dbg-early-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/linux-2.6-kgdb: echi-dbgp: Add kernel debugger support for the usb debug port earlyprintk,vga,kdb: Fix \b and \r for earlyprintk=vga with kdb kgdboc: Add ekgdboc for early use of the kernel debugger x86,early dr regs,kgdb: Allow kernel debugger early dr register access x86,kgdb: Implement early hardware breakpoint debugging x86, kgdb, init: Add early and late debug states x86, kgdb: early trap init for early debug
Diffstat (limited to 'kernel')
-rw-r--r--kernel/debug/debug_core.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c
index 64b5588c9638..5cb7cd1de10c 100644
--- a/kernel/debug/debug_core.c
+++ b/kernel/debug/debug_core.c
@@ -78,6 +78,8 @@ static DEFINE_SPINLOCK(kgdb_registration_lock);
78static int kgdb_con_registered; 78static int kgdb_con_registered;
79/* determine if kgdb console output should be used */ 79/* determine if kgdb console output should be used */
80static int kgdb_use_con; 80static int kgdb_use_con;
81/* Flag for alternate operations for early debugging */
82bool dbg_is_early = true;
81/* Next cpu to become the master debug core */ 83/* Next cpu to become the master debug core */
82int dbg_switch_cpu; 84int dbg_switch_cpu;
83 85
@@ -777,11 +779,25 @@ static struct notifier_block kgdb_panic_event_nb = {
777 .priority = INT_MAX, 779 .priority = INT_MAX,
778}; 780};
779 781
782void __weak kgdb_arch_late(void)
783{
784}
785
786void __init dbg_late_init(void)
787{
788 dbg_is_early = false;
789 if (kgdb_io_module_registered)
790 kgdb_arch_late();
791 kdb_init(KDB_INIT_FULL);
792}
793
780static void kgdb_register_callbacks(void) 794static void kgdb_register_callbacks(void)
781{ 795{
782 if (!kgdb_io_module_registered) { 796 if (!kgdb_io_module_registered) {
783 kgdb_io_module_registered = 1; 797 kgdb_io_module_registered = 1;
784 kgdb_arch_init(); 798 kgdb_arch_init();
799 if (!dbg_is_early)
800 kgdb_arch_late();
785 atomic_notifier_chain_register(&panic_notifier_list, 801 atomic_notifier_chain_register(&panic_notifier_list,
786 &kgdb_panic_event_nb); 802 &kgdb_panic_event_nb);
787#ifdef CONFIG_MAGIC_SYSRQ 803#ifdef CONFIG_MAGIC_SYSRQ