diff options
Diffstat (limited to 'kernel/kgdb.c')
-rw-r--r-- | kernel/kgdb.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/kernel/kgdb.c b/kernel/kgdb.c index 2eb517e23514..761fdd2b3034 100644 --- a/kernel/kgdb.c +++ b/kernel/kgdb.c | |||
@@ -583,6 +583,9 @@ static void kgdb_wait(struct pt_regs *regs) | |||
583 | smp_wmb(); | 583 | smp_wmb(); |
584 | atomic_set(&cpu_in_kgdb[cpu], 1); | 584 | atomic_set(&cpu_in_kgdb[cpu], 1); |
585 | 585 | ||
586 | /* Disable any cpu specific hw breakpoints */ | ||
587 | kgdb_disable_hw_debug(regs); | ||
588 | |||
586 | /* Wait till primary CPU is done with debugging */ | 589 | /* Wait till primary CPU is done with debugging */ |
587 | while (atomic_read(&passive_cpu_wait[cpu])) | 590 | while (atomic_read(&passive_cpu_wait[cpu])) |
588 | cpu_relax(); | 591 | cpu_relax(); |
@@ -596,7 +599,7 @@ static void kgdb_wait(struct pt_regs *regs) | |||
596 | 599 | ||
597 | /* Signal the primary CPU that we are done: */ | 600 | /* Signal the primary CPU that we are done: */ |
598 | atomic_set(&cpu_in_kgdb[cpu], 0); | 601 | atomic_set(&cpu_in_kgdb[cpu], 0); |
599 | touch_softlockup_watchdog(); | 602 | touch_softlockup_watchdog_sync(); |
600 | clocksource_touch_watchdog(); | 603 | clocksource_touch_watchdog(); |
601 | local_irq_restore(flags); | 604 | local_irq_restore(flags); |
602 | } | 605 | } |
@@ -1450,7 +1453,7 @@ acquirelock: | |||
1450 | (kgdb_info[cpu].task && | 1453 | (kgdb_info[cpu].task && |
1451 | kgdb_info[cpu].task->pid != kgdb_sstep_pid) && --sstep_tries) { | 1454 | kgdb_info[cpu].task->pid != kgdb_sstep_pid) && --sstep_tries) { |
1452 | atomic_set(&kgdb_active, -1); | 1455 | atomic_set(&kgdb_active, -1); |
1453 | touch_softlockup_watchdog(); | 1456 | touch_softlockup_watchdog_sync(); |
1454 | clocksource_touch_watchdog(); | 1457 | clocksource_touch_watchdog(); |
1455 | local_irq_restore(flags); | 1458 | local_irq_restore(flags); |
1456 | 1459 | ||
@@ -1550,7 +1553,7 @@ kgdb_restore: | |||
1550 | } | 1553 | } |
1551 | /* Free kgdb_active */ | 1554 | /* Free kgdb_active */ |
1552 | atomic_set(&kgdb_active, -1); | 1555 | atomic_set(&kgdb_active, -1); |
1553 | touch_softlockup_watchdog(); | 1556 | touch_softlockup_watchdog_sync(); |
1554 | clocksource_touch_watchdog(); | 1557 | clocksource_touch_watchdog(); |
1555 | local_irq_restore(flags); | 1558 | local_irq_restore(flags); |
1556 | 1559 | ||