diff options
author | Wim Van Sebroeck <wim@iguana.be> | 2008-06-18 16:22:48 +0000 |
---|---|---|
committer | Wim Van Sebroeck <wim@iguana.be> | 2008-06-18 16:22:48 +0000 |
commit | fdf7be6f13b920f0d80c249c70f794a2f6d53992 (patch) | |
tree | d430de48f9f17ab536d67e963fc895797a28fe48 /drivers/watchdog | |
parent | 4dc7347a3b4a76705b7fd00b271847dd10cf5a32 (diff) | |
download | linux-stable-fdf7be6f13b920f0d80c249c70f794a2f6d53992.tar.gz linux-stable-fdf7be6f13b920f0d80c249c70f794a2f6d53992.tar.bz2 linux-stable-fdf7be6f13b920f0d80c249c70f794a2f6d53992.zip |
Revert "[WATCHDOG] hpwdt: Fix NMI handling."
The old setup works better.
Signed-off-by: Thomas Mingarelli <Thomas.Mingarelli@hp.com>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Diffstat (limited to 'drivers/watchdog')
-rw-r--r-- | drivers/watchdog/hpwdt.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c index 2bc1f74433ce..2686f3eaeedf 100644 --- a/drivers/watchdog/hpwdt.c +++ b/drivers/watchdog/hpwdt.c @@ -418,20 +418,23 @@ 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) { - 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"); - } + 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"); } - die_nmi_called = 0; - return NOTIFY_DONE; + return NOTIFY_STOP; } /* |