|
|
@@ -133,15 +133,18 @@ static void watchdog_smp_panic(int cpu, u64 tb)
|
|
|
pr_emerg("Watchdog CPU:%d detected Hard LOCKUP other CPUS:%*pbl\n",
|
|
|
cpu, cpumask_pr_args(&wd_smp_cpus_pending));
|
|
|
|
|
|
- /*
|
|
|
- * Try to trigger the stuck CPUs.
|
|
|
- */
|
|
|
- for_each_cpu(c, &wd_smp_cpus_pending) {
|
|
|
- if (c == cpu)
|
|
|
- continue;
|
|
|
- smp_send_nmi_ipi(c, wd_lockup_ipi, 1000000);
|
|
|
+ if (!sysctl_hardlockup_all_cpu_backtrace) {
|
|
|
+ /*
|
|
|
+ * Try to trigger the stuck CPUs, unless we are going to
|
|
|
+ * get a backtrace on all of them anyway.
|
|
|
+ */
|
|
|
+ for_each_cpu(c, &wd_smp_cpus_pending) {
|
|
|
+ if (c == cpu)
|
|
|
+ continue;
|
|
|
+ smp_send_nmi_ipi(c, wd_lockup_ipi, 1000000);
|
|
|
+ }
|
|
|
+ smp_flush_nmi_ipi(1000000);
|
|
|
}
|
|
|
- smp_flush_nmi_ipi(1000000);
|
|
|
|
|
|
/* Take the stuck CPUs out of the watch group */
|
|
|
set_cpumask_stuck(&wd_smp_cpus_pending, tb);
|