]> www.infradead.org Git - users/jedix/linux-maple.git/commit
net/qlge: Avoids recursive EEH error
authorGavin Shan <gwshan@linux.vnet.ibm.com>
Mon, 23 May 2016 01:58:28 +0000 (11:58 +1000)
committerChuck Anderson <chuck.anderson@oracle.com>
Mon, 6 Mar 2017 20:32:42 +0000 (12:32 -0800)
commit562099424daf0aa976feea5e2748b8f07880eaf2
tree63dc5a5c051038a76b5125bf17fe93cb5d626532
parented200c626d250f5719bc90692d677de76e73d068
net/qlge: Avoids recursive EEH error

One timer, whose handler keeps reading on MMIO register for EEH
core to detect error in time, is started when the PCI device driver
is loaded. MMIO register can't be accessed during PE reset in EEH
recovery. Otherwise, the unexpected recursive error is triggered.
The timer isn't closed that time if the interface isn't brought
up. So the unexpected recursive error is seen during EEH recovery
when the interface is down.

This avoids the unexpected recursive EEH error by closing the timer
in qlge_io_error_detected() before EEH PE reset unconditionally. The
timer is started unconditionally after EEH PE reset in qlge_io_resume().
Also, the timer should be closed unconditionally when the device is
removed from the system permanently in qlge_io_error_detected().

Reported-by: Shriya R. Kulkarni <shriyakul@in.ibm.com>
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Orabug: 25605959
(cherry picked from commit 3275c0c6c522ab04afa14f80efdac6213c3883d6)
Signed-off-by: Jack Vogel <jack.vogel@oracle.com>
drivers/net/ethernet/qlogic/qlge/qlge_main.c