aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/stop_machine.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@armlinux.org.uk>2016-11-01 09:17:57 +0000
committerRussell King <rmk+kernel@armlinux.org.uk>2016-11-01 09:17:57 +0000
commit9902aa4728fe9128ea45f1a772e2238d64d8cdc5 (patch)
treecca30efb3ad2126fcb10aa6349ed799a5656e851 /kernel/stop_machine.c
parentARM: dts: am335x-boneblack: Add HDMI audio support (diff)
parentdrm/i2c: tda998x: mali-dp: hdlcd: refactor connector registration (diff)
Merge branch 'drm-tda998x-mali' into drm-tda998x-devel
Diffstat (limited to 'kernel/stop_machine.c')
-rw-r--r--kernel/stop_machine.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c
index a467e6c28a3b..4a1ca5f6da7e 100644
--- a/kernel/stop_machine.c
+++ b/kernel/stop_machine.c
@@ -21,6 +21,7 @@
#include <linux/smpboot.h>
#include <linux/atomic.h>
#include <linux/lglock.h>
+#include <linux/nmi.h>
/*
* Structure to determine completion condition and record errors. May
@@ -209,6 +210,13 @@ static int multi_cpu_stop(void *data)
break;
}
ack_state(msdata);
+ } else if (curstate > MULTI_STOP_PREPARE) {
+ /*
+ * At this stage all other CPUs we depend on must spin
+ * in the same loop. Any reason for hard-lockup should
+ * be detected and reported on their side.
+ */
+ touch_nmi_watchdog();
}
} while (curstate != MULTI_STOP_EXIT);