OpenSolaris

Printable Version Enter a New Search
Bug ID 6561445
Synopsis Power down upon hotplug connect on Sun-Blade-T6300 Platform
State 11-Closed:Verified (Closed)
Category:Subcategory pcie-sw:pciehp
Keywords
Responsible Engineer Govinda Tatti
Reported Against hwp1 , solaris_10u4
Duplicate Of
Introduced In solaris_nevada
Commit to Fix snv_67
Fixed In snv_67
Release Fixed solaris_nevada(snv_67) , solaris_10u5(s10u5_01) (Bug ID:2149925)
Related Bugs 6583656 , 6587689
Submit Date 23-May-2007
Last Update Date 19-August-2009
Description
Filing this CR under C10 category as starting point, please re-assign if this is not the right categoty.



1. Symptom:

After a Atlas-PEM module was plugging in a St.Paul slot, both the attention(amber) and the power(green) LEDs lit on to indicate a fault condition when the "cfgadm -c connect" command was issued. During the "cfgadm -c connect" command, the St. Paul blade asserted power enable (PWREN_L) and then deasserted it approximately 1.3 secs later.

2. Analysis:

PWRFLT_L from the PEM module is asserted until all internal voltages stabilized.  St.Paul stores any power-fault condition in PLX8532 even though PWRFLT_L is de-asserted when MRST_L is de-asserted, i.e., there is no power-fault asserted while PWREN_L is active.
Work Around

Tak/Taeon/Jeff,

The changes I created to avoid powering down the PEM on connect will need
to be integrated into Solaris. The contact name for these changes is Govinda Tatti.
He can create an official CR and integrate it in to S11 and S10 Patch release. I can
help with explanations. Here I attach the file changes for s10:

#sccs diffs -C pciehpc.c

------- pciehpc.c -------
*** /tmp/sccs.bgaqPw    Thu May 17 11:31:25 2007
--- pciehpc.c   Thu May 17 11:31:07 2007
***************
*** 1118,1124 ****
        /* 2. set power control to ON */
        control =  pciehpc_reg_get16(ctrl_p,
                ctrl_p->pcie_caps_reg_offset + PCIE_SLOTCTL);
!       control &= ~PCIE_SLOTCTL_PWR_CONTROL;
        pciehpc_issue_hpc_command(ctrl_p, control);
 
        /* 3. wait for DLL State Change event, if it's supported */
--- 1118,1125 ----
        /* 2. set power control to ON */
        control =  pciehpc_reg_get16(ctrl_p,
                ctrl_p->pcie_caps_reg_offset + PCIE_SLOTCTL);
!       control &= ~PCIE_SLOTCTL_PWR_CONTROL;  /* enable power */
!       control &= ~PCIE_SLOTCTL_PWR_FAULT_EN; /* disable power fault */
        pciehpc_issue_hpc_command(ctrl_p, control);
 
        /* 3. wait for DLL State Change event, if it's supported */
***************
*** 1159,1164 ****
--- 1160,1173 ----
                goto cleanup1;
        }
 
+       /* reset power fault interrupt */
+       status =  pciehpc_reg_get16(ctrl_p,
+           ctrl_p->pcie_caps_reg_offset + PCIE_SLOTSTS);
+       status |= PCIE_SLOTSTS_PWR_FAULT_DETECTED;
+       pciehpc_reg_put16(ctrl_p, ctrl_p->pcie_caps_reg_offset + PCIE_SLOTSTS,
+           status);
+       delay(drv_usectohz(100000));
+
        /* enable power fault detection interrupt */
        control |= PCIE_SLOTCTL_PWR_FAULT_EN;
        pciehpc_issue_hpc_command(ctrl_p, control);
Comments
N/A