diff options
author | Dan Crowell <dcrowell@us.ibm.com> | 2014-04-14 14:44:21 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-04-15 10:47:55 -0500 |
commit | 279d152e4d095884110de94e9510a8b7d86ced97 (patch) | |
tree | 81c9110fc66e08e655270122cb897b70ac2a5282 /src/usr/fsi | |
parent | 791c705e31529a345e4e01eb10a6326990de4acb (diff) | |
download | talos-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>
Diffstat (limited to 'src/usr/fsi')
-rw-r--r-- | src/usr/fsi/fsidd.C | 34 |
1 files changed, 32 insertions, 2 deletions
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 ); |