--- 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);