summaryrefslogtreecommitdiffstats
path: root/src/usr/fsi
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2014-03-18 16:45:02 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-03-21 11:35:30 -0500
commitcf9dc218eea42f99b283f8cf32fbb1371ebf4367 (patch)
tree196fd5b6a32ab4a68dc5bcd8898d8447594f166d /src/usr/fsi
parentc857bac776d690c846af8076f280a1e2f66d7e16 (diff)
downloadtalos-hostboot-cf9dc218eea42f99b283f8cf32fbb1371ebf4367.tar.gz
talos-hostboot-cf9dc218eea42f99b283f8cf32fbb1371ebf4367.zip
Always use PIB2OPB-1 on proc1 in Brazos
If FSP-B is not installed, the PIB2OPB-0 logic has no clocks so we get xscom errors if we attempt to access it. Until the full B-port support is in place (see RTC: 35041) I have a hack to get systems IPLing again. Change-Id: Ia4c4b04e3041f5722ed1fae7526370de2a4bc9d8 CQ: SW252489 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/9711 Tested-by: Jenkins Server Reviewed-by: Michael Baiocchi <baiocchi@us.ibm.com> Reviewed-by: Corey V. Swenson <cswenson@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/fsi')
-rw-r--r--src/usr/fsi/fsidd.C19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/usr/fsi/fsidd.C b/src/usr/fsi/fsidd.C
index 30a611d64..9b51799af 100644
--- a/src/usr/fsi/fsidd.C
+++ b/src/usr/fsi/fsidd.C
@@ -826,11 +826,24 @@ errlHndl_t FsiDD::resetPib2Opb( TARGETING::Target* i_target )
errlHndl_t errhdl = NULL;
do {
+ //@fixme -- RTC:35041
+ //hack for Brazos when FSP-B is not installed
+ uint64_t opb_offset = FSI2OPB_OFFSET_0;
+ if( iv_master->getAttr<TARGETING::ATTR_MODEL>()
+ == TARGETING::MODEL_VENICE )
+ {
+ // always use the B-port engine on proc1
+ if( i_target->getAttr<TARGETING::ATTR_POSITION>() == 1 )
+ {
+ opb_offset = FSI2OPB_OFFSET_1;
+ }
+ }
+
// Clear out OPB error
uint64_t scom_data = 0;
size_t scom_size = sizeof(scom_data);
- uint64_t opbaddr = FSI2OPB_OFFSET_0 | OPB_REG_RES;
+ uint64_t opbaddr = opb_offset | OPB_REG_RES;
scom_data = 0x8000000000000000; //0=Unit Reset
errhdl = deviceOp( DeviceFW::WRITE,
i_target,
@@ -839,7 +852,7 @@ errlHndl_t FsiDD::resetPib2Opb( TARGETING::Target* i_target )
DEVICE_XSCOM_ADDRESS(opbaddr) );
if( errhdl ) { break; }
- opbaddr = FSI2OPB_OFFSET_0 | OPB_REG_STAT;
+ opbaddr = opb_offset | OPB_REG_STAT;
errhdl = deviceOp( DeviceFW::WRITE,
i_target,
&scom_data,
@@ -848,7 +861,7 @@ errlHndl_t FsiDD::resetPib2Opb( TARGETING::Target* i_target )
if( errhdl ) { break; }
// Check if we have any errors left
- opbaddr = FSI2OPB_OFFSET_0 | OPB_REG_STAT;
+ opbaddr = opb_offset | OPB_REG_STAT;
scom_data = 0;
errhdl = deviceOp( DeviceFW::READ,
i_target,
OpenPOWER on IntegriCloud