浏览代码

cxgb3 - log and clear PEX errors

Clear pciE PEX errors late at module load time.
Log details when PEX errors occur.

Signed-off-by: Divy Le Ray <divy@chelsio.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Divy Le Ray 17 年之前
父节点
当前提交
3eea3337a0
共有 1 个文件被更改,包括 6 次插入0 次删除
  1. 6 0
      drivers/net/cxgb3/t3_hw.c

+ 6 - 0
drivers/net/cxgb3/t3_hw.c

@@ -1358,6 +1358,10 @@ static void pcie_intr_handler(struct adapter *adapter)
 		{0}
 		{0}
 	};
 	};
 
 
+	if (t3_read_reg(adapter, A_PCIE_INT_CAUSE) & F_PEXERR)
+		CH_ALERT(adapter, "PEX error code 0x%x\n",
+			 t3_read_reg(adapter, A_PCIE_PEX_ERR));
+
 	if (t3_handle_intr_status(adapter, A_PCIE_INT_CAUSE, PCIE_INTR_MASK,
 	if (t3_handle_intr_status(adapter, A_PCIE_INT_CAUSE, PCIE_INTR_MASK,
 				  pcie_intr_info, adapter->irq_stats))
 				  pcie_intr_info, adapter->irq_stats))
 		t3_fatal_err(adapter);
 		t3_fatal_err(adapter);
@@ -1809,6 +1813,8 @@ void t3_intr_clear(struct adapter *adapter)
 	for (i = 0; i < ARRAY_SIZE(cause_reg_addr); ++i)
 	for (i = 0; i < ARRAY_SIZE(cause_reg_addr); ++i)
 		t3_write_reg(adapter, cause_reg_addr[i], 0xffffffff);
 		t3_write_reg(adapter, cause_reg_addr[i], 0xffffffff);
 
 
+	if (is_pcie(adapter))
+		t3_write_reg(adapter, A_PCIE_PEX_ERR, 0xffffffff);
 	t3_write_reg(adapter, A_PL_INT_CAUSE0, 0xffffffff);
 	t3_write_reg(adapter, A_PL_INT_CAUSE0, 0xffffffff);
 	t3_read_reg(adapter, A_PL_INT_CAUSE0);	/* flush */
 	t3_read_reg(adapter, A_PL_INT_CAUSE0);	/* flush */
 }
 }