IB/ipath: Workaround problem of errormask register being overwritten
On some system hardware, we are seeing moderately common cases of the chip errormask register being overwritten due to a chip bug in iba6120 that is triggered by a vendor-specific PCIe broadcast message. This patch merely checks periodically, and corrects it if needed (the overwrite can cause us to not get error and hardware error interrupts). Also, make dd->ipath_errormask the one, true canonical source for kr_errormask, and remove references to ipath_ignorederrs as it is currently unused. Signed-off-by: Dave Olson <dave.olson@qlogic.com> Signed-off-by: John Gregor <john.gregor@qlogic.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
committed by
Roland Dreier
parent
3810f2a84e
commit
78d1e02fac
@@ -261,18 +261,10 @@ struct ipath_devdata {
|
||||
* limiting of hwerror reporting
|
||||
*/
|
||||
ipath_err_t ipath_lasthwerror;
|
||||
/*
|
||||
* errors masked because they occur too fast, also includes errors
|
||||
* that are always ignored (ipath_ignorederrs)
|
||||
*/
|
||||
/* errors masked because they occur too fast */
|
||||
ipath_err_t ipath_maskederrs;
|
||||
/* time in jiffies at which to re-enable maskederrs */
|
||||
unsigned long ipath_unmasktime;
|
||||
/*
|
||||
* errors always ignored (masked), at least for a given
|
||||
* chip/device, because they are wrong or not useful
|
||||
*/
|
||||
ipath_err_t ipath_ignorederrs;
|
||||
/* count of egrfull errors, combined for all ports */
|
||||
u64 ipath_last_tidfull;
|
||||
/* for ipath_qcheck() */
|
||||
@@ -436,6 +428,7 @@ struct ipath_devdata {
|
||||
u64 ipath_lastibcstat;
|
||||
/* hwerrmask shadow */
|
||||
ipath_err_t ipath_hwerrmask;
|
||||
ipath_err_t ipath_errormask; /* errormask shadow */
|
||||
/* interrupt config reg shadow */
|
||||
u64 ipath_intconfig;
|
||||
/* kr_sendpiobufbase value */
|
||||
|
Reference in New Issue
Block a user