diff options
author | Dan Crowell <dcrowell@us.ibm.com> | 2016-11-15 14:47:11 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-11-16 13:21:17 -0500 |
commit | 929569a227f8d3477fc47abf617e00111445dd4c (patch) | |
tree | 75a6e152e233f465d1d1e1eb4d45fc471e1e16f2 /src/usr/hwas/common | |
parent | 32f45f8ad5f27b5426b6f0eb0710f82c0dbbeaea (diff) | |
download | talos-hostboot-929569a227f8d3477fc47abf617e00111445dd4c.tar.gz talos-hostboot-929569a227f8d3477fc47abf617e00111445dd4c.zip |
Skip deconfig of master proc for 2-chip chip-as-group topology
P9 allows a xbus connection to be used between chips that have
different FABRIC_GROUP_ID values. This is different from P8
where xbus was only used inside of a fabric node/group.
Change-Id: I3cbb1e69573a16efe14768281cc363da52ab3ad3
CQ: SW371680
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/32684
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Martin Gloff <mgloff@us.ibm.com>
Reviewed-by: Matt Derksen <v2cibmd@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/hwas/common')
-rw-r--r-- | src/usr/hwas/common/deconfigGard.C | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/src/usr/hwas/common/deconfigGard.C b/src/usr/hwas/common/deconfigGard.C index 982e3b019..028839351 100644 --- a/src/usr/hwas/common/deconfigGard.C +++ b/src/usr/hwas/common/deconfigGard.C @@ -1160,6 +1160,7 @@ errlHndl_t DeconfigGard::_invokeDeconfigureAssocProc( { l_ProcInfo.iv_masterCapable = true; } + HWAS_INF( "_invokeDeconfigureAssocProc> %.8X : G=%d, C=%d, D=%d, M=%d", l_ProcInfo.procHUID, l_ProcInfo.procFabricGroup, l_ProcInfo.procFabricChip, l_ProcInfo.iv_deconfigured, l_ProcInfo.iv_masterCapable ); l_procInfo.push_back(l_ProcInfo); } // Iterate through l_procInfo and populate child bus endpoint @@ -1231,6 +1232,7 @@ errlHndl_t DeconfigGard::_invokeDeconfigureAssocProc( (*l_procInfoIter).iv_XDeconfigured[xBusIndex] = !(isFunctional(*l_busIter)); xBusIndex++; + HWAS_DBG( "add X> %.8X : G=%d, C=%d, D=%d, M=%d", (*l_matchProcInfoIter).procHUID, (*l_matchProcInfoIter).procFabricGroup, (*l_matchProcInfoIter).procFabricChip, (*l_matchProcInfoIter).iv_deconfigured, (*l_matchProcInfoIter).iv_masterCapable ); } // If subsystem owns abus deconfigs consider them else if (i_doAbusDeconfig && @@ -1242,6 +1244,7 @@ errlHndl_t DeconfigGard::_invokeDeconfigureAssocProc( (*l_procInfoIter).iv_ADeconfigured[aBusIndex] = !(isFunctional(*l_busIter)); aBusIndex++; + HWAS_DBG( "add A> %.8X : G=%d, C=%d, D=%d, M=%d", (*l_matchProcInfoIter).procHUID, (*l_matchProcInfoIter).procFabricGroup, (*l_matchProcInfoIter).procFabricChip, (*l_matchProcInfoIter).iv_deconfigured, (*l_matchProcInfoIter).iv_masterCapable ); } break; } @@ -2588,7 +2591,7 @@ errlHndl_t DeconfigGard::_symmetryValidation(ProcInfoVector &io_procInfo) (*l_mGroupProcInfoIter).procFabricGroup) && (!((*l_mGroupProcInfoIter).iv_deconfigured)) && ((*l_mGroupProcInfoIter).procFabricChip == - (*l_procInfoIter).procFabricChip)) + (*l_procInfoIter).procFabricChip) ) { // Find xbus peer proc to mark deconfigured for (uint8_t i = 0; i < NUM_X_BUSES; i++) @@ -2596,13 +2599,26 @@ errlHndl_t DeconfigGard::_symmetryValidation(ProcInfoVector &io_procInfo) // If xbus peer proc exists, mark it if ((*l_procInfoIter).iv_pXProcs[i]) { - HWAS_INF("symmetryValidation step 2 " - "marked proc: %.8X for " - "deconfiguration.", - (*l_procInfoIter). - iv_pXProcs[i]->procHUID); - (*l_procInfoIter).iv_pXProcs[i]-> - iv_deconfigured = true; + HWAS_INF( "procs> %.8X : G=%d, C=%d, D=%d, M=%d", (*l_procInfoIter).procHUID, (*l_procInfoIter).procFabricGroup, (*l_procInfoIter).procFabricChip, (*l_procInfoIter).iv_deconfigured, (*l_procInfoIter).iv_masterCapable ); + HWAS_INF( "mGroup> %.8X : G=%d, C=%d, D=%d, M=%d", (*l_mGroupProcInfoIter).procHUID, (*l_mGroupProcInfoIter).procFabricGroup, (*l_mGroupProcInfoIter).procFabricChip, (*l_mGroupProcInfoIter).iv_deconfigured, (*l_mGroupProcInfoIter).iv_masterCapable ); + HWAS_INF( "xbus%d> %.8X : G=%d, C=%d, D=%d, M=%d", i, (*l_procInfoIter).iv_pXProcs[i]->procHUID, (*l_procInfoIter).iv_pXProcs[i]->procFabricGroup, (*l_procInfoIter).iv_pXProcs[i]->procFabricChip, (*l_procInfoIter).iv_pXProcs[i]->iv_deconfigured, (*l_procInfoIter).iv_pXProcs[i]->iv_masterCapable ); + + // If the chip we found is the master then do NOT + // deconfigure it + if( (*l_procInfoIter).iv_pXProcs[i]->iv_masterCapable ) + { + HWAS_INF( "Skipping deconfig of master proc %.8X", l_pMasterProcInfo->procHUID ); + } + else + { + HWAS_INF("symmetryValidation step 2 " + "marked proc: %.8X for " + "deconfiguration.", + (*l_procInfoIter). + iv_pXProcs[i]->procHUID); + (*l_procInfoIter).iv_pXProcs[i]-> + iv_deconfigured = true; + } } } } |