Эх сурвалжийг харах

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:
  kgdb: call touch_softlockup_watchdog on resume
  kgdb, x86: Avoid invoking kgdb_nmicallback twice per NMI
Linus Torvalds 16 жил өмнө
parent
commit
afed26d151

+ 1 - 6
arch/x86/kernel/kgdb.c

@@ -455,12 +455,7 @@ static int __kgdb_notify(struct die_args *args, unsigned long cmd)
 		return NOTIFY_DONE;
 		return NOTIFY_DONE;
 
 
 	case DIE_NMI_IPI:
 	case DIE_NMI_IPI:
-		if (atomic_read(&kgdb_active) != -1) {
-			/* KGDB CPU roundup */
-			kgdb_nmicallback(raw_smp_processor_id(), regs);
-			was_in_debug_nmi[raw_smp_processor_id()] = 1;
-			touch_nmi_watchdog();
-		}
+		/* Just ignore, we will handle the roundup on DIE_NMI. */
 		return NOTIFY_DONE;
 		return NOTIFY_DONE;
 
 
 	case DIE_NMIUNKNOWN:
 	case DIE_NMIUNKNOWN:

+ 3 - 0
kernel/kgdb.c

@@ -590,6 +590,7 @@ static void kgdb_wait(struct pt_regs *regs)
 
 
 	/* Signal the primary CPU that we are done: */
 	/* Signal the primary CPU that we are done: */
 	atomic_set(&cpu_in_kgdb[cpu], 0);
 	atomic_set(&cpu_in_kgdb[cpu], 0);
+	touch_softlockup_watchdog();
 	clocksource_touch_watchdog();
 	clocksource_touch_watchdog();
 	local_irq_restore(flags);
 	local_irq_restore(flags);
 }
 }
@@ -1432,6 +1433,7 @@ acquirelock:
 	    atomic_read(&kgdb_cpu_doing_single_step) != cpu) {
 	    atomic_read(&kgdb_cpu_doing_single_step) != cpu) {
 
 
 		atomic_set(&kgdb_active, -1);
 		atomic_set(&kgdb_active, -1);
+		touch_softlockup_watchdog();
 		clocksource_touch_watchdog();
 		clocksource_touch_watchdog();
 		local_irq_restore(flags);
 		local_irq_restore(flags);
 
 
@@ -1524,6 +1526,7 @@ acquirelock:
 kgdb_restore:
 kgdb_restore:
 	/* Free kgdb_active */
 	/* Free kgdb_active */
 	atomic_set(&kgdb_active, -1);
 	atomic_set(&kgdb_active, -1);
+	touch_softlockup_watchdog();
 	clocksource_touch_watchdog();
 	clocksource_touch_watchdog();
 	local_irq_restore(flags);
 	local_irq_restore(flags);