summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Vanderpool <vanderp@us.ibm.com>2017-05-19 15:38:16 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-05-24 22:34:25 -0400
commit788c46952d807743b711b1a10c1d7a58002a3ab7 (patch)
tree302569c920b0225a5804038f2e4c39bca54e2ce3
parent8461f51d2d93bd5372450f15c4313ac4ddbce07e (diff)
downloadtalos-hostboot-788c46952d807743b711b1a10c1d7a58002a3ab7.tar.gz
talos-hostboot-788c46952d807743b711b1a10c1d7a58002a3ab7.zip
Add configuration error checking before starting SGPE
Change-Id: I4cfa93c8854e971d7f391a37071c699402c550f4 RTC: 173585 CQ: SW386570 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/40770 Reviewed-by: Gregory S. Still <stillgs@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Juan R. Medina <jrmedina@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/40778 Reviewed-by: Hostboot Team <hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_pm_stop_gpe_init.C43
-rw-r--r--src/import/chips/p9/procedures/xml/error_info/p9_pm_stop_gpe_init_errors.xml39
2 files changed, 82 insertions, 0 deletions
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_pm_stop_gpe_init.C b/src/import/chips/p9/procedures/hwp/pm/p9_pm_stop_gpe_init.C
index 8fac18d66..5e05fcb45 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_pm_stop_gpe_init.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_pm_stop_gpe_init.C
@@ -131,6 +131,49 @@ fapi2::ReturnCode p9_pm_stop_gpe_init(
fusedModeState),
"Error from FAPI_ATTR_GET for attribute ATTR_FUSED_CORE_MODE");
+ // Check each core has a functional EX and EQ
+ auto l_functional_core_vector =
+ i_target.getChildren<fapi2::TARGET_TYPE_CORE>
+ (fapi2::TARGET_STATE_FUNCTIONAL);
+
+ for(auto l_core_trgt : l_functional_core_vector)
+ {
+ auto l_ex_trgt = l_core_trgt.getParent<fapi2::TARGET_TYPE_EX>();
+ FAPI_ASSERT(l_ex_trgt.isFunctional() == true,
+ fapi2::STOP_GPE_INVALID_CORE_EX_CONFIG()
+ .set_CORE(l_core_trgt)
+ .set_EX(l_ex_trgt)
+ .set_CHIP(i_target),
+ "Invalid Config - good core without functional EX");
+
+ auto l_eq_trgt = l_core_trgt.getParent<fapi2::TARGET_TYPE_EQ>();
+ FAPI_ASSERT(l_eq_trgt.isFunctional() == true,
+ fapi2::STOP_GPE_INVALID_CORE_EQ_CONFIG()
+ .set_CORE(l_core_trgt)
+ .set_EQ(l_eq_trgt)
+ .set_CHIP(i_target),
+ "Invalid Config - good core without functional EQ");
+ }
+
+ // Check each functional EX has at least one functional core
+ auto l_functional_ex_vector =
+ i_target.getChildren<fapi2::TARGET_TYPE_EX>
+ (fapi2::TARGET_STATE_FUNCTIONAL);
+
+ for(auto l_ex_trgt : l_functional_ex_vector)
+ {
+ auto l_functional_core_vector = l_ex_trgt.getChildren<fapi2::TARGET_TYPE_CORE>
+ (fapi2::TARGET_STATE_FUNCTIONAL);
+ FAPI_ASSERT(l_functional_core_vector.empty() == false,
+ fapi2::STOP_GPE_INVALID_EX_CORE_CONFIG()
+ .set_EX(l_ex_trgt)
+ .set_CHIP(i_target),
+ "Invalid Config - good EX without any functional cores");
+ }
+
+
+
+
//Additional settings for fused mode
if (fusedModeState == 1)
{
diff --git a/src/import/chips/p9/procedures/xml/error_info/p9_pm_stop_gpe_init_errors.xml b/src/import/chips/p9/procedures/xml/error_info/p9_pm_stop_gpe_init_errors.xml
index dc12ed173..414996d13 100644
--- a/src/import/chips/p9/procedures/xml/error_info/p9_pm_stop_gpe_init_errors.xml
+++ b/src/import/chips/p9/procedures/xml/error_info/p9_pm_stop_gpe_init_errors.xml
@@ -107,4 +107,43 @@
</collectRegisterFfdc>
</hwpError>
<!-- ******************************************************************** -->
+ <hwpError>
+ <rc>RC_STOP_GPE_INVALID_CORE_EX_CONFIG</rc>
+ <description> Invalid configuration of good core and bad EX detected
+ </description>
+ <ffdc>CORE</ffdc>
+ <ffdc>EX</ffdc>
+ <collectRegisterFfdc>
+ <id>SGPE_FFDC_REGISTERS</id>
+ <target>CHIP</target>
+ <targetType>TARGET_TYPE_PROC_CHIP</targetType>
+ </collectRegisterFfdc>
+ </hwpError>
+ <!-- ******************************************************************** -->
+ <hwpError>
+ <rc>RC_STOP_GPE_INVALID_CORE_EQ_CONFIG</rc>
+ <description> Invalid configuration of good core and bad EQ detected
+ </description>
+ <ffdc>CORE</ffdc>
+ <ffdc>EQ</ffdc>
+ <collectRegisterFfdc>
+ <id>SGPE_FFDC_REGISTERS</id>
+ <target>CHIP</target>
+ <targetType>TARGET_TYPE_PROC_CHIP</targetType>
+ </collectRegisterFfdc>
+ </hwpError>
+ <!-- ******************************************************************** -->
+ <hwpError>
+ <rc>RC_STOP_GPE_INVALID_EX_CORE_CONFIG</rc>
+ <description> Invalid configuration of good EX and no functional cores detected
+ </description>
+ <ffdc>EX</ffdc>
+ <collectRegisterFfdc>
+ <id>SGPE_FFDC_REGISTERS</id>
+ <target>CHIP</target>
+ <targetType>TARGET_TYPE_PROC_CHIP</targetType>
+ </collectRegisterFfdc>
+ </hwpError>
+ <!-- ******************************************************************** -->
+
</hwpErrors>
OpenPOWER on IntegriCloud