summaryrefslogtreecommitdiffstats
path: root/drivers/watchdog
diff options
context:
space:
mode:
authorJerry Hoemann <jerry.hoemann@hpe.com>2018-02-26 04:22:23 +0100
committerWim Van Sebroeck <wim@linux-watchdog.org>2018-03-03 17:04:18 +0100
commita6c24733d29315fd2d8dd7140f83e834658c62d5 (patch)
tree15a2c30a6da2a89370e92eabcb957f3b744457c3 /drivers/watchdog
parentwatchdog: hpwdt: Modify to use watchdog core. (diff)
downloadlinux-a6c24733d29315fd2d8dd7140f83e834658c62d5.tar.xz
linux-a6c24733d29315fd2d8dd7140f83e834658c62d5.zip
watchdog: hpwdt: condition early return of NMI handler on iLO5
Modify prior change to not claim an NMI unless originated from iLO to apply only to iLO5 and later going forward. This restores hpwdt traditional behavior of calling panic if the NMI is NMI_IO_CHECK, NMI_SERR, or NMI_UNKNOWN for legacy hardware. Signed-off-by: Jerry Hoemann <jerry.hoemann@hpe.com> Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Diffstat (limited to 'drivers/watchdog')
-rw-r--r--drivers/watchdog/hpwdt.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c
index 0e35bb735d8e..171d5033d7b5 100644
--- a/drivers/watchdog/hpwdt.c
+++ b/drivers/watchdog/hpwdt.c
@@ -32,6 +32,7 @@
#define HPWDT_MAX_TIMER TICKS_TO_SECS(65535)
#define DEFAULT_MARGIN 30
+static bool ilo5;
static unsigned int soft_margin = DEFAULT_MARGIN; /* in seconds */
static unsigned int reload; /* the computed soft_margin */
static bool nowayout = WATCHDOG_NOWAYOUT;
@@ -120,7 +121,7 @@ static int hpwdt_pretimeout(unsigned int ulReason, struct pt_regs *regs)
"3. OA Forward Progress Log\n"
"4. iLO Event Log";
- if ((ulReason == NMI_UNKNOWN) && mynmi)
+ if (ilo5 && ulReason == NMI_UNKNOWN && mynmi)
return NMI_DONE;
if (allow_kdump)
@@ -277,6 +278,9 @@ static int hpwdt_init_one(struct pci_dev *dev,
", timer margin: %d seconds (nowayout=%d).\n",
HPWDT_VERSION, hpwdt_dev.timeout, nowayout);
+ if (dev->subsystem_vendor == PCI_VENDOR_ID_HP_3PAR)
+ ilo5 = true;
+
return 0;
error_wd_register: