diff options
author | Dave Olson <dave.olson@qlogic.com> | 2007-07-20 17:41:26 -0400 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2007-07-30 16:16:46 -0400 |
commit | 78d1e02fac0595a8aa8a5064d1bd0c0ea55b22b0 (patch) | |
tree | 3c0ec43cacc0ec7ec2eea4ea831396995bbe1d03 /drivers/infiniband/hw/ipath/ipath_kernel.h | |
parent | 3810f2a84e994e295e181eb9bd4b8007f611b5eb (diff) |
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>
Diffstat (limited to 'drivers/infiniband/hw/ipath/ipath_kernel.h')
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_kernel.h | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_kernel.h b/drivers/infiniband/hw/ipath/ipath_kernel.h index ef773298b805..7a7966f7e4ff 100644 --- a/drivers/infiniband/hw/ipath/ipath_kernel.h +++ b/drivers/infiniband/hw/ipath/ipath_kernel.h | |||
@@ -261,18 +261,10 @@ struct ipath_devdata { | |||
261 | * limiting of hwerror reporting | 261 | * limiting of hwerror reporting |
262 | */ | 262 | */ |
263 | ipath_err_t ipath_lasthwerror; | 263 | ipath_err_t ipath_lasthwerror; |
264 | /* | 264 | /* errors masked because they occur too fast */ |
265 | * errors masked because they occur too fast, also includes errors | ||
266 | * that are always ignored (ipath_ignorederrs) | ||
267 | */ | ||
268 | ipath_err_t ipath_maskederrs; | 265 | ipath_err_t ipath_maskederrs; |
269 | /* time in jiffies at which to re-enable maskederrs */ | 266 | /* time in jiffies at which to re-enable maskederrs */ |
270 | unsigned long ipath_unmasktime; | 267 | unsigned long ipath_unmasktime; |
271 | /* | ||
272 | * errors always ignored (masked), at least for a given | ||
273 | * chip/device, because they are wrong or not useful | ||
274 | */ | ||
275 | ipath_err_t ipath_ignorederrs; | ||
276 | /* count of egrfull errors, combined for all ports */ | 268 | /* count of egrfull errors, combined for all ports */ |
277 | u64 ipath_last_tidfull; | 269 | u64 ipath_last_tidfull; |
278 | /* for ipath_qcheck() */ | 270 | /* for ipath_qcheck() */ |
@@ -436,6 +428,7 @@ struct ipath_devdata { | |||
436 | u64 ipath_lastibcstat; | 428 | u64 ipath_lastibcstat; |
437 | /* hwerrmask shadow */ | 429 | /* hwerrmask shadow */ |
438 | ipath_err_t ipath_hwerrmask; | 430 | ipath_err_t ipath_hwerrmask; |
431 | ipath_err_t ipath_errormask; /* errormask shadow */ | ||
439 | /* interrupt config reg shadow */ | 432 | /* interrupt config reg shadow */ |
440 | u64 ipath_intconfig; | 433 | u64 ipath_intconfig; |
441 | /* kr_sendpiobufbase value */ | 434 | /* kr_sendpiobufbase value */ |