|
@@ -158,14 +158,14 @@ void touch_all_softlockup_watchdogs(void)
|
|
|
#ifdef CONFIG_HARDLOCKUP_DETECTOR
|
|
|
void touch_nmi_watchdog(void)
|
|
|
{
|
|
|
- if (watchdog_user_enabled) {
|
|
|
- unsigned cpu;
|
|
|
-
|
|
|
- for_each_present_cpu(cpu) {
|
|
|
- if (per_cpu(watchdog_nmi_touch, cpu) != true)
|
|
|
- per_cpu(watchdog_nmi_touch, cpu) = true;
|
|
|
- }
|
|
|
- }
|
|
|
+ /*
|
|
|
+ * Using __raw here because some code paths have
|
|
|
+ * preemption enabled. If preemption is enabled
|
|
|
+ * then interrupts should be enabled too, in which
|
|
|
+ * case we shouldn't have to worry about the watchdog
|
|
|
+ * going off.
|
|
|
+ */
|
|
|
+ __raw_get_cpu_var(watchdog_nmi_touch) = true;
|
|
|
touch_softlockup_watchdog();
|
|
|
}
|
|
|
EXPORT_SYMBOL(touch_nmi_watchdog);
|