summaryrefslogtreecommitdiffstats
path: root/src/usr/hwas/common
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2016-11-15 14:47:11 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-11-16 13:21:17 -0500
commit929569a227f8d3477fc47abf617e00111445dd4c (patch)
tree75a6e152e233f465d1d1e1eb4d45fc471e1e16f2 /src/usr/hwas/common
parent32f45f8ad5f27b5426b6f0eb0710f82c0dbbeaea (diff)
downloadtalos-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.C32
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;
+ }
}
}
}
OpenPOWER on IntegriCloud