Re: sky2 (was Re: 2.6.18-mm2)
From: Matthias Hentges
Date: Sun Oct 08 2006 - 09:42:18 EST
Hi Stephen,
I believe I have identified the problem. The freeze only happens when
your debug patch to work around sky2 PCIe error messages is applied.
Without your patch (attached) I get _tons_ of error messages and the NIC
dies every few seconds / minutes (reproduceable!), but the system
recovers just fine from a NIC crash.
I have verified this behavior (works fine w/o debug patch, freezes with
patch applied) with:
- 2.6.19-rc1-git4
- 2.6.18-git something
- 2.6.18-mm3
--
Matthias 'CoreDump' Hentges
My OS: Debian SID. Geek by Nature, Linux by Choice
--- sky2.c.orig 2006-09-30 01:50:35.000000000 +0200
+++ sky2.c 2006-09-30 01:50:38.000000000 +0200
@@ -2463,6 +2463,7 @@
sky2_write8(hw, B0_CTST, CS_MRST_CLR);
+#define PEX_UNC_ERR_STAT 0x104 /* PCI extended error capablity */
/* clear any PEX errors */
if (pci_find_capability(hw->pdev, PCI_CAP_ID_EXP)) {
hw->err_cap = pci_find_ext_capability(hw->pdev, PCI_EXT_CAP_ID_ERR);
@@ -2470,6 +2471,16 @@
sky2_pci_write32(hw,
hw->err_cap + PCI_ERR_UNCOR_STATUS,
0xffffffffUL);
+ else
+ printk(KERN_ERR PFX "pci express found but not extended error support?\n");
+
+ if (hw->err_cap + PCI_ERR_UNCOR_STATUS != PEX_UNC_ERR_STAT) {
+
+ printk(KERN_ERR PFX "pci express error status register fixed from %#x to %#x\n",
+ hw->err_cap, PEX_UNC_ERR_STAT - PCI_ERR_UNCOR_STATUS);
+ hw->err_cap = PEX_UNC_ERR_STAT - PCI_ERR_UNCOR_STATUS;
+ }
+
}
hw->pmd_type = sky2_read8(hw, B2_PMD_TYP);
Attachment:
signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil