Patch "watchdog: hpwdt: Check source of NMI" has been added to the 4.14-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
watchdog: hpwdt: Check source of NMI
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
watchdog-hpwdt-check-source-of-nmi.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
838534e50e2e5c1e644e30ab6cb28da88eb31368Mon Sep 17 00:00:00 2001
From: Jerry Hoemann <[email protected]>
Date: Mon, 23 Oct 2017 16:46:17 -0600
Subject: watchdog: hpwdt: Check source of NMI
From: Jerry Hoemann <[email protected]>
commit 838534e50e2e5c1e644e30ab6cb28da88eb31368 upstream.
Do not claim the NMI (i.e. return NMI_DONE) if the source of the NMI isn't the iLO watchdog or debug.
--- drivers/watchdog/hpwdt.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
drivers/watchdog/hpwdt.c +10 -0
@@ -52,6 +52,7 @@ static char expect_release;static unsigned long hpwdt_is_open;static void __iomem *pci_mem_addr;/* the PCI-memory address */ +static unsigned long __iomem *hpwdt_nmistat;static unsigned long __iomem *hpwdt_timer_reg;static unsigned long __iomem *hpwdt_timer_con;
@@ -474,6 +475,11 @@ static int hpwdt_time_left(void)return TICKS_TO_SECS (ioread16 (hpwdt_timer_reg)); } +static int hpwdt_my_nmi (void ) +{ +return ioread8 (hpwdt_nmistat) &0x6 ; +} +#ifdef CONFIG_HPWDT_NMI_DECODING /* * NMI Handler
@@ -486,6 +492,9 @@ static int hpwdt_pretimeout(unsigned intif (!hpwdt_nmi_decoding)return NMI_DONE ; +if ((ulReason ==NMI_UNKNOWN ) && !hpwdt_my_nmi ()) +return NMI_DONE ; +spin_lock_irqsave (&rom_lock, rom_pl);if (!die_nmi_called && !is_icru && !is_uefi)asminline_call (&cmn_regs, cru_rom_addr);
@@ -842,6 +851,7 @@ static int hpwdt_init_one(struct pci_dev retval = -ENOMEM ; goto error_pci_iomap; } + hpwdt_nmistat = pci_mem_addr +0x6e ; hpwdt_timer_reg = pci_mem_addr +0x70 ; hpwdt_timer_con = pci_mem_addr +0x72 ;
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/watchdog-hpwdt-fix-unused-variable-warning.patch queue-4.14/watchdog-hpwdt-smbios-check.patch queue-4.14/watchdog-hpwdt-remove-legacy-nmi-sourcing.patch queue-4.14/watchdog-hpwdt-check-source-of-nmi.patch