Skip to content

Commit

Permalink
[WATCHDOG] hpwdt: Fix NMI handling.
Browse files Browse the repository at this point in the history
I need to just return in case it's not my NMI so someone else can take a look
at it (and reset die_nmi_called to 0 in case I actually do get one that's mine
to handle).

Signed-off-by: Thomas Mingarelli <thomas.mingarelli@hp.com>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
  • Loading branch information
Mingarelli, Thomas authored and Wim Van Sebroeck committed May 25, 2008
1 parent 93539b1 commit 7f7f894
Showing 1 changed file with 12 additions and 15 deletions.
27 changes: 12 additions & 15 deletions drivers/watchdog/hpwdt.c
Expand Up @@ -418,23 +418,20 @@ static int hpwdt_pretimeout(struct notifier_block *nb, unsigned long ulReason,
static unsigned long rom_pl;
static int die_nmi_called;

if (ulReason != DIE_NMI && ulReason != DIE_NMI_IPI)
return NOTIFY_OK;

spin_lock_irqsave(&rom_lock, rom_pl);
if (!die_nmi_called)
asminline_call(&cmn_regs, cru_rom_addr);
die_nmi_called = 1;
spin_unlock_irqrestore(&rom_lock, rom_pl);
if (cmn_regs.u1.ral == 0) {
printk(KERN_WARNING "hpwdt: An NMI occurred, "
"but unable to determine source.\n");
} else {
panic("An NMI occurred, please see the Integrated "
"Management Log for details.\n");
if (ulReason == DIE_NMI || ulReason == DIE_NMI_IPI) {
spin_lock_irqsave(&rom_lock, rom_pl);
if (!die_nmi_called)
asminline_call(&cmn_regs, cru_rom_addr);
die_nmi_called = 1;
spin_unlock_irqrestore(&rom_lock, rom_pl);
if (cmn_regs.u1.ral != 0) {
panic("An NMI occurred, please see the Integrated "
"Management Log for details.\n");
}
}

return NOTIFY_STOP;
die_nmi_called = 0;
return NOTIFY_DONE;
}

/*
Expand Down

0 comments on commit 7f7f894

Please sign in to comment.