2006-11-26 06:47:20

by Dave Jones

[permalink] [raw]
Subject: touch softlockup during

Sometimes the soft watchdog fires after we're done oopsing.
See http://projects.info-pull.com/mokb/MOKB-25-11-2006.html for an example.

Signed-off-by: Dave Jones <[email protected]>

--- linux-2.6.18.noarch/arch/i386/kernel/traps.c~ 2006-11-26 01:40:58.000000000 -0500
+++ linux-2.6.18.noarch/arch/i386/kernel/traps.c 2006-11-26 01:41:28.000000000 -0500
@@ -243,6 +243,7 @@ void dump_trace(struct task_struct *task
stack = (unsigned long*)context->previous_esp;
if (!stack)
break;
+ touch_softlockup_watchdog();
}
}
EXPORT_SYMBOL(dump_trace);
--
http://www.codemonkey.org.uk


2006-11-26 19:28:45

by Andi Kleen

[permalink] [raw]
Subject: Re: touch softlockup during

On Sunday 26 November 2006 07:47, Dave Jones wrote:
> Sometimes the soft watchdog fires after we're done oopsing.
> See http://projects.info-pull.com/mokb/MOKB-25-11-2006.html for an example.
>
> Signed-off-by: Dave Jones <[email protected]>
>
> --- linux-2.6.18.noarch/arch/i386/kernel/traps.c~ 2006-11-26 01:40:58.000000000 -0500
> +++ linux-2.6.18.noarch/arch/i386/kernel/traps.c 2006-11-26 01:41:28.000000000 -0500
> @@ -243,6 +243,7 @@ void dump_trace(struct task_struct *task
> stack = (unsigned long*)context->previous_esp;
> if (!stack)
> break;
> + touch_softlockup_watchdog();

These should be all touch_nmi_watchdog() (which does touch the soft watchdog
too)

-Andi

2006-11-26 20:17:47

by Dave Jones

[permalink] [raw]
Subject: Re: touch softlockup during stack unwinding.

Sometimes the soft watchdog fires after we're done oopsing.
See http://projects.info-pull.com/mokb/MOKB-25-11-2006.html for an example.
The NMI watchdog could also fire, so tickle both watchdogs.

Signed-off-by: Dave Jones <[email protected]>

--- linux-2.6/arch/i386/kernel/traps.c~ 2006-11-26 01:44:58.000000000 -0500
+++ linux-2.6/arch/i386/kernel/traps.c 2006-11-26 01:45:32.000000000 -0500
@@ -29,6 +29,7 @@
#include <linux/kexec.h>
#include <linux/unwind.h>
#include <linux/uaccess.h>
+#include <linux/nmi.h>

#ifdef CONFIG_EISA
#include <linux/ioport.h>
@@ -247,6 +247,7 @@ void dump_trace(struct task_struct *task
stack = (unsigned long*)context->previous_esp;
if (!stack)
break;
+ touch_nmi_watchdog();
}
}
EXPORT_SYMBOL(dump_trace);


--
http://www.codemonkey.org.uk