summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2014-04-14 14:44:21 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-04-15 10:47:55 -0500
commit279d152e4d095884110de94e9510a8b7d86ced97 (patch)
tree81c9110fc66e08e655270122cb897b70ac2a5282
parent791c705e31529a345e4e01eb10a6326990de4acb (diff)
downloadtalos-hostboot-279d152e4d095884110de94e9510a8b7d86ced97.tar.gz
talos-hostboot-279d152e4d095884110de94e9510a8b7d86ced97.zip
Fix FSI MRW Parsing
Missed a case where the alt-master chip was pointing to the wrong master. Change-Id: I0e8010c5adb871344a7d1fd11fefd7f7f152ec72 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/10529 Reviewed-by: Andrew J. Geissler <andrewg@us.ibm.com> Tested-by: Jenkins Server Reviewed-by: Michael Baiocchi <baiocchi@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
-rw-r--r--src/include/usr/fsi/fsi_reasoncodes.H4
-rw-r--r--src/usr/fsi/fsidd.C34
-rwxr-xr-xsrc/usr/targeting/common/genHwsvMrwXml.pl4
3 files changed, 37 insertions, 5 deletions
diff --git a/src/include/usr/fsi/fsi_reasoncodes.H b/src/include/usr/fsi/fsi_reasoncodes.H
index f8c7e3f2f..86e3bd746 100644
--- a/src/include/usr/fsi/fsi_reasoncodes.H
+++ b/src/include/usr/fsi/fsi_reasoncodes.H
@@ -5,7 +5,7 @@
/* */
/* IBM CONFIDENTIAL */
/* */
-/* COPYRIGHT International Business Machines Corp. 2011,2013 */
+/* COPYRIGHT International Business Machines Corp. 2011,2014 */
/* */
/* p1 */
/* */
@@ -40,6 +40,7 @@ namespace FSI
MOD_FSIDD_GENFULLFSIADDR = 0x09, /**< fsidd.C : FsiDD::genFullFsiAddr */
MOD_FSIDD_CHECKFORERRORS = 0x0A, /**< fsidd.C : FsiDD::checkForErrors */
MOD_FSIDD_VERIFYPRESENT = 0x0B, /**< fsidd.C : FsiDD::verifyPresent */
+ MOD_FSIDD_INITIALIZEHARDWARE = 0x0C, /**< fsidd.C : FsiDD::initializeHardware */
MOD_FSIPRES_PROCPRESENCEDETECT = 0x20, /**< fsipres.C : procPresenceDetect */
MOD_FSIPRES_MEMBPRESENCEDETECT = 0x21, /**< fsipres.C : membPresenceDetect */
@@ -65,6 +66,7 @@ namespace FSI
RC_FSI_MVPD_MISMATCH = FSI_COMP_ID | 0x0F,
RC_FSI_CVPD_MISMATCH = FSI_COMP_ID | 0x10,
RC_ERROR_IN_MAEB = FSI_COMP_ID | 0x11,
+ RC_BAD_ATTRIBUTES = FSI_COMP_ID | 0x12,
};
enum UserDetailsTypes
diff --git a/src/usr/fsi/fsidd.C b/src/usr/fsi/fsidd.C
index 571daf448..f2af99d2e 100644
--- a/src/usr/fsi/fsidd.C
+++ b/src/usr/fsi/fsidd.C
@@ -498,14 +498,44 @@ errlHndl_t FsiDD::initializeHardware()
else
{
FsiChipInfo_t info2 = getFsiInfo(info.master);
- remote_cmfsi[info2.port][info.port].info = info;
- remote_cmfsi[info2.port][info.port].targ = *t_itr;
+ if( info2.master == NULL )
+ {
+ TRACFCOMP( g_trac_fsi, "Problem with attribute data for master %.8X for slave %.8X", TARGETING::get_huid(info.master), TARGETING::get_huid(*t_itr) );
+ /*@
+ * @errortype
+ * @moduleid FSI::MOD_FSIDD_INITIALIZEHARDWARE
+ * @reasoncode FSI::RC_BAD_ATTRIBUTES
+ * @userdata1[00:31] Slave HUID
+ * @userdata1[32:63] Slave FSI LinkId
+ * @userdata2[00:31] Master HUID
+ * @userdata2[32:63] Master FSI LinkId
+ * @devdesc FsiDD::initializeHardware>
+ * Unexpected attribute data for remote FSI link
+ */
+ l_err = new ERRORLOG::ErrlEntry(
+ ERRORLOG::ERRL_SEV_UNRECOVERABLE,
+ FSI::MOD_FSIDD_INITIALIZEHARDWARE,
+ FSI::RC_BAD_ATTRIBUTES,
+ TWO_UINT32_TO_UINT64(
+ TARGETING::get_huid(*t_itr),
+ info.linkid.id),
+ TWO_UINT32_TO_UINT64(
+ TARGETING::get_huid(info.master),
+ info2.linkid.id));
+ break;
+ }
+ else
+ {
+ remote_cmfsi[info2.port][info.port].info = info;
+ remote_cmfsi[info2.port][info.port].targ = *t_itr;
+ }
}
}
}
++t_itr;
}
+ if( l_err ) { break; }
// Cleanup any initial error states
l_err = resetPib2Opb( iv_master );
diff --git a/src/usr/targeting/common/genHwsvMrwXml.pl b/src/usr/targeting/common/genHwsvMrwXml.pl
index 1665f43f2..3c297c302 100755
--- a/src/usr/targeting/common/genHwsvMrwXml.pl
+++ b/src/usr/targeting/common/genHwsvMrwXml.pl
@@ -1156,7 +1156,7 @@ for (my $do_core = 0, my $i = 0; $i <= $#STargets; $i++)
{
if (($Fsis[$j][FSI_TARGET_FIELD] eq "n${node}:p$proc") &&
($Fsis[$j][FSI_TARGET_TYPE_FIELD] eq "pu") &&
- (lc($Fsis[$j][FSI_SLAVE_PORT_FIELD]) eq "fsi_slave0") &&
+ (lc($Fsis[$j][FSI_MASTERPOS_FIELD]) eq "0") &&
(lc($Fsis[$j][FSI_TYPE_FIELD]) eq "hub master") )
{
@fsi = @{@Fsis[$j]};
@@ -1169,7 +1169,7 @@ for (my $do_core = 0, my $i = 0; $i <= $#STargets; $i++)
{
if (($Fsis[$j][FSI_TARGET_FIELD] eq "n${node}:p$proc") &&
($Fsis[$j][FSI_TARGET_TYPE_FIELD] eq "pu") &&
- (lc($Fsis[$j][FSI_SLAVE_PORT_FIELD]) eq "fsi_slave1") &&
+ (lc($Fsis[$j][FSI_MASTERPOS_FIELD]) eq "1") &&
(lc($Fsis[$j][FSI_TYPE_FIELD]) eq "hub master") )
{
@altfsi = @{@Fsis[$j]};
OpenPOWER on IntegriCloud