aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/mthca/mthca_dev.h
diff options
context:
space:
mode:
authorRoland Dreier <rolandd@cisco.com>2005-10-27 14:03:38 -0400
committerRoland Dreier <rolandd@cisco.com>2005-10-27 14:03:38 -0400
commit3d155f8cd0d077938d271225d26ee52f8eb26082 (patch)
tree28f65ed2dc5e9f12884daf2a97f50367f145d8a0 /drivers/infiniband/hw/mthca/mthca_dev.h
parent7cc656efb560cda66b5ed48444cad7556ea4fe99 (diff)
[IB] mthca: first pass at catastrophic error reporting
Add some initial support for detecting and reporting catastrophic errors reported by Mellanox HCAs. We start a periodic timer which polls the catastrophic error reporting buffer in device memory. If an error is detected, we dump the contents of the buffer for port-mortem debugging, and report a fatal asynchronous error to higher levels. In the future we can try to recover from these errors by resetting the device, but this will require some work in higher-level code as well. Let's get this in now, so that we at least get catastrophic errors reported in logs. Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/hw/mthca/mthca_dev.h')
-rw-r--r--drivers/infiniband/hw/mthca/mthca_dev.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/mthca/mthca_dev.h b/drivers/infiniband/hw/mthca/mthca_dev.h
index f106bac0f925..7e68bd4a3780 100644
--- a/drivers/infiniband/hw/mthca/mthca_dev.h
+++ b/drivers/infiniband/hw/mthca/mthca_dev.h
@@ -258,6 +258,14 @@ struct mthca_mcg_table {
258 struct mthca_icm_table *table; 258 struct mthca_icm_table *table;
259}; 259};
260 260
261struct mthca_catas_err {
262 u64 addr;
263 u32 __iomem *map;
264 unsigned long stop;
265 u32 size;
266 struct timer_list timer;
267};
268
261struct mthca_dev { 269struct mthca_dev {
262 struct ib_device ib_dev; 270 struct ib_device ib_dev;
263 struct pci_dev *pdev; 271 struct pci_dev *pdev;
@@ -318,6 +326,8 @@ struct mthca_dev {
318 struct mthca_av_table av_table; 326 struct mthca_av_table av_table;
319 struct mthca_mcg_table mcg_table; 327 struct mthca_mcg_table mcg_table;
320 328
329 struct mthca_catas_err catas_err;
330
321 struct mthca_uar driver_uar; 331 struct mthca_uar driver_uar;
322 struct mthca_db_table *db_tab; 332 struct mthca_db_table *db_tab;
323 struct mthca_pd driver_pd; 333 struct mthca_pd driver_pd;
@@ -405,6 +415,9 @@ void mthca_cleanup_mcg_table(struct mthca_dev *dev);
405int mthca_register_device(struct mthca_dev *dev); 415int mthca_register_device(struct mthca_dev *dev);
406void mthca_unregister_device(struct mthca_dev *dev); 416void mthca_unregister_device(struct mthca_dev *dev);
407 417
418void mthca_start_catas_poll(struct mthca_dev *dev);
419void mthca_stop_catas_poll(struct mthca_dev *dev);
420
408int mthca_uar_alloc(struct mthca_dev *dev, struct mthca_uar *uar); 421int mthca_uar_alloc(struct mthca_dev *dev, struct mthca_uar *uar);
409void mthca_uar_free(struct mthca_dev *dev, struct mthca_uar *uar); 422void mthca_uar_free(struct mthca_dev *dev, struct mthca_uar *uar);
410 423