Signed off by: Milind Dumbare include/linux/kgdb.h | 1 + kernel/kgdb.c | 5 +++++ kernel/softlockup.c | 4 ++++ kernel/timer.c | 9 ++++++++- 4 files changed, 18 insertions(+), 1 deletion(-) Index: linux-2.6.16/kernel/kgdb.c =================================================================== --- linux-2.6.16.orig/kernel/kgdb.c 2006-05-23 16:26:54.000000000 +0100 +++ linux-2.6.16/kernel/kgdb.c 2006-05-23 16:58:16.000000000 +0100 @@ -123,6 +123,8 @@ struct debuggerinfo_struct { /* to keep track of the CPU which is doing the single stepping*/ atomic_t cpu_doing_single_step = ATOMIC_INIT(-1); +atomic_t kgdb_sync_softlockup[NR_CPUS] = {ATOMIC_INIT(0)}; + /* reboot notifier block */ static struct notifier_block kgdb_reboot_notifier = { .notifier_call = kgdb_notify_reboot, @@ -743,6 +745,7 @@ static void kgdb_wait(struct pt_regs *re kgdb_info[processor].debuggerinfo = regs; kgdb_info[processor].task = current; atomic_set(&procindebug[processor], 1); + atomic_set(&kgdb_sync_softlockup[smp_processor_id()], 1); /* Wait till master processor goes completely into the debugger. * FIXME: this looks racy */ @@ -1046,6 +1049,8 @@ int kgdb_handle_exception(int ex_vector, udelay(1); } + atomic_set(&kgdb_sync_softlockup[smp_processor_id()], 1); + /* * Don't enter if the last instance of the exception handler wanted to * come into the debugger again. Index: linux-2.6.16/kernel/softlockup.c =================================================================== --- linux-2.6.16.orig/kernel/softlockup.c 2006-05-23 16:25:22.000000000 +0100 +++ linux-2.6.16/kernel/softlockup.c 2006-05-23 16:59:37.000000000 +0100 @@ -13,6 +13,7 @@ #include #include #include +#include static DEFINE_SPINLOCK(print_lock); @@ -37,6 +38,9 @@ static struct notifier_block panic_block void touch_softlockup_watchdog(void) { per_cpu(touch_timestamp, raw_smp_processor_id()) = jiffies; +#ifdef CONFIG_KGDB + atomic_set(&kgdb_sync_softlockup[raw_smp_processor_id()], 0); +#endif } EXPORT_SYMBOL(touch_softlockup_watchdog); Index: linux-2.6.16/kernel/timer.c =================================================================== --- linux-2.6.16.orig/kernel/timer.c 2006-05-23 16:25:22.000000000 +0100 +++ linux-2.6.16/kernel/timer.c 2006-05-23 17:02:10.000000000 +0100 @@ -34,6 +34,7 @@ #include #include #include +#include #include #include Index: linux-2.6.16/include/linux/kgdb.h =================================================================== --- linux-2.6.16.orig/include/linux/kgdb.h 2006-05-23 16:26:54.000000000 +0100 +++ linux-2.6.16/include/linux/kgdb.h 2006-05-23 16:58:16.000000000 +0100 @@ -41,6 +41,7 @@ extern struct tasklet_struct kgdb_taskle extern atomic_t kgdb_setting_breakpoint; extern atomic_t cpu_doing_single_step; +extern atomic_t kgdb_sync_softlockup[NR_CPUS]; extern struct task_struct *kgdb_usethread, *kgdb_contthread;