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 2eb517e2351..761fdd2b303 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 | ||
