Re: [PATCH 1/1] i386: fix a hang on stuck nmi watchdog

From: Stephane Eranian
Date: Sat Sep 01 2007 - 17:33:29 EST


Daniel,

Thanks for your help tracking down this bug. Maybe we can close
the bugzilla report now.

On Sat, Sep 01, 2007 at 01:54:17PM -0700, Daniel Walker wrote:
> In the case when an nmi gets stucks the endflag stays equal to zero. This
> causes the busy looping on other cpus to continue, even tho the nmi test
> is done.
>
> On my machine with out the change below the system would hang right after
> check_nmi_watchdog(). The change below just sets endflag prior to checking
> if the test was successful or not.
>
> Signed-off-by: Daniel Walker <dwalker@xxxxxxxxxx>
>
> ---
> arch/i386/kernel/nmi.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> Index: linux-2.6.22/arch/i386/kernel/nmi.c
> ===================================================================
> --- linux-2.6.22.orig/arch/i386/kernel/nmi.c
> +++ linux-2.6.22/arch/i386/kernel/nmi.c
> @@ -115,12 +115,12 @@ static int __init check_nmi_watchdog(voi
> atomic_dec(&nmi_active);
> }
> }
> + endflag = 1;
> if (!atomic_read(&nmi_active)) {
> kfree(prev_nmi_count);
> atomic_set(&nmi_active, -1);
> return -1;
> }
> - endflag = 1;
> printk("OK.\n");
>
> /* now that we know it works we can reduce NMI frequency to
> --
>
> --

--

-Stephane
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/