aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/kgdb.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/kgdb.c b/kernel/kgdb.c
index 2f7f454605c2..11f3515ca83f 100644
--- a/kernel/kgdb.c
+++ b/kernel/kgdb.c
@@ -1365,6 +1365,7 @@ static int kgdb_cpu_enter(struct kgdb_state *ks, struct pt_regs *regs)
1365 int sstep_tries = 100; 1365 int sstep_tries = 100;
1366 int error = 0; 1366 int error = 0;
1367 int i, cpu; 1367 int i, cpu;
1368 int trace_on = 0;
1368acquirelock: 1369acquirelock:
1369 /* 1370 /*
1370 * Interrupts will be restored by the 'trap return' code, except when 1371 * Interrupts will be restored by the 'trap return' code, except when
@@ -1399,6 +1400,8 @@ return_normal:
1399 */ 1400 */
1400 if (arch_kgdb_ops.correct_hw_break) 1401 if (arch_kgdb_ops.correct_hw_break)
1401 arch_kgdb_ops.correct_hw_break(); 1402 arch_kgdb_ops.correct_hw_break();
1403 if (trace_on)
1404 tracing_on();
1402 atomic_dec(&cpu_in_kgdb[cpu]); 1405 atomic_dec(&cpu_in_kgdb[cpu]);
1403 touch_softlockup_watchdog_sync(); 1406 touch_softlockup_watchdog_sync();
1404 clocksource_touch_watchdog(); 1407 clocksource_touch_watchdog();
@@ -1474,6 +1477,9 @@ return_normal:
1474 kgdb_single_step = 0; 1477 kgdb_single_step = 0;
1475 kgdb_contthread = current; 1478 kgdb_contthread = current;
1476 exception_level = 0; 1479 exception_level = 0;
1480 trace_on = tracing_is_on();
1481 if (trace_on)
1482 tracing_off();
1477 1483
1478 /* Talk to debugger with gdbserial protocol */ 1484 /* Talk to debugger with gdbserial protocol */
1479 error = gdb_serial_stub(ks); 1485 error = gdb_serial_stub(ks);
@@ -1505,6 +1511,8 @@ kgdb_restore:
1505 else 1511 else
1506 kgdb_sstep_pid = 0; 1512 kgdb_sstep_pid = 0;
1507 } 1513 }
1514 if (trace_on)
1515 tracing_on();
1508 /* Free kgdb_active */ 1516 /* Free kgdb_active */
1509 atomic_set(&kgdb_active, -1); 1517 atomic_set(&kgdb_active, -1);
1510 touch_softlockup_watchdog_sync(); 1518 touch_softlockup_watchdog_sync();