aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/debug/debug_core.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/debug/debug_core.c')
-rw-r--r--kernel/debug/debug_core.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c
index 1adf62b39b96..acd749736822 100644
--- a/kernel/debug/debug_core.c
+++ b/kernel/debug/debug_core.c
@@ -471,6 +471,7 @@ static int kgdb_cpu_enter(struct kgdb_state *ks, struct pt_regs *regs,
471 int cpu; 471 int cpu;
472 int trace_on = 0; 472 int trace_on = 0;
473 int online_cpus = num_online_cpus(); 473 int online_cpus = num_online_cpus();
474 u64 time_left;
474 475
475 kgdb_info[ks->cpu].enter_kgdb++; 476 kgdb_info[ks->cpu].enter_kgdb++;
476 kgdb_info[ks->cpu].exception_state |= exception_state; 477 kgdb_info[ks->cpu].exception_state |= exception_state;
@@ -595,9 +596,13 @@ return_normal:
595 /* 596 /*
596 * Wait for the other CPUs to be notified and be waiting for us: 597 * Wait for the other CPUs to be notified and be waiting for us:
597 */ 598 */
598 while (kgdb_do_roundup && (atomic_read(&masters_in_kgdb) + 599 time_left = loops_per_jiffy * HZ;
599 atomic_read(&slaves_in_kgdb)) != online_cpus) 600 while (kgdb_do_roundup && --time_left &&
601 (atomic_read(&masters_in_kgdb) + atomic_read(&slaves_in_kgdb)) !=
602 online_cpus)
600 cpu_relax(); 603 cpu_relax();
604 if (!time_left)
605 pr_crit("KGDB: Timed out waiting for secondary CPUs.\n");
601 606
602 /* 607 /*
603 * At this point the primary processor is completely 608 * At this point the primary processor is completely