Mercurial > illumos > illumos-gate
changeset 3420:0d6bd61bb5d0
6502201 Galaxy1F panics while running MAXQ with Northstar duel port card and also with Northstar QGE card
author | anish |
---|---|
date | Sun, 14 Jan 2007 09:14:05 -0800 |
parents | 83f3eb80c815 |
children | 45bf66715362 |
files | usr/src/uts/common/os/pcifm.c usr/src/uts/common/sys/pcifm.h usr/src/uts/i86pc/io/pciex/pcie_error.c |
diffstat | 3 files changed, 16 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/uts/common/os/pcifm.c Sat Jan 13 16:24:00 2007 -0800 +++ b/usr/src/uts/common/os/pcifm.c Sun Jan 14 09:14:05 2007 -0800 @@ -20,7 +20,7 @@ */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -897,8 +897,10 @@ /* Disable PTLP/ECRC (or mask these two) for Switches */ if (dev_type == PCIE_PCIECAP_DEV_TYPE_UP || - dev_type == PCIE_PCIECAP_DEV_TYPE_DOWN) + dev_type == PCIE_PCIECAP_DEV_TYPE_DOWN) { + erpt_p->pe_dflags |= PCIEX_SWITCH_DEV; mask |= PCIE_AER_UCE_PTLP | PCIE_AER_UCE_ECRC; + } if (pcie_regs->pcie_adv_regs->pcie_ue_mask != mask) { pci_config_put32(erpt_p->pe_hdl, @@ -1952,12 +1954,12 @@ goto done; #if !defined(__sparc) /* - * On x86 ignore UR on non-RBER leaf devices and pciex-pci - * bridges. + * On x86 ignore UR on non-RBER leaf devices, pciex-pci + * bridges and switches. */ if ((pcie_regs->pcie_err_status & PCIE_DEVSTS_UR_DETECTED) && !(pcie_regs->pcie_err_status & PCIE_DEVSTS_FE_DETECTED) && - ((erpt_p->pe_dflags & PCIEX_2PCI_DEV) || + ((erpt_p->pe_dflags & (PCIEX_2PCI_DEV|PCIEX_SWITCH_DEV)) || !(erpt_p->pe_dflags & PCI_BRIDGE_DEV)) && !(pcie_regs->pcie_dev_cap & PCIE_DEVCAP_ROLE_BASED_ERR_REP)) goto done; @@ -2019,7 +2021,8 @@ * advisory nonfatal. */ if (pciex_ue_err_tbl[i].reg_bit == PCIE_AER_UCE_UR && - ((erpt_p->pe_dflags & PCIEX_2PCI_DEV) || + ((erpt_p->pe_dflags & + (PCIEX_2PCI_DEV|PCIEX_SWITCH_DEV)) || !(erpt_p->pe_dflags & PCI_BRIDGE_DEV))) { if (!(pcie_regs->pcie_dev_cap & PCIE_DEVCAP_ROLE_BASED_ERR_REP))
--- a/usr/src/uts/common/sys/pcifm.h Sat Jan 13 16:24:00 2007 -0800 +++ b/usr/src/uts/common/sys/pcifm.h Sun Jan 14 09:14:05 2007 -0800 @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -44,6 +44,7 @@ #define PCIEX_ADV_DEV 0x10 #define PCIEX_RC_DEV 0x20 #define PCIEX_2PCI_DEV 0x40 +#define PCIEX_SWITCH_DEV 0x80 /* * PCI and PCI-X valid flags
--- a/usr/src/uts/i86pc/io/pciex/pcie_error.c Sat Jan 13 16:24:00 2007 -0800 +++ b/usr/src/uts/i86pc/io/pciex/pcie_error.c Sun Jan 14 09:14:05 2007 -0800 @@ -20,7 +20,7 @@ */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -292,9 +292,12 @@ device_ctl |= pcie_device_ctrl_default; /* - * Disable UR for any non-RBER enabled leaf PCIe device or bridge + * Disable UR for any non-RBER enabled leaf PCIe device, + * bridge or switch devices. */ if ((dev_type == PCIE_PCIECAP_DEV_TYPE_PCIE_DEV || + dev_type == PCIE_PCIECAP_DEV_TYPE_UP || + dev_type == PCIE_PCIECAP_DEV_TYPE_DOWN || dev_type == PCIE_PCIECAP_DEV_TYPE_PCIE2PCI) && ((pci_config_get16(cfg_hdl, cap_ptr + PCIE_DEVCAP) & PCIE_DEVCAP_ROLE_BASED_ERR_REP) !=