summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures
diff options
context:
space:
mode:
authorPrem Shanker Jha <premjha2@in.ibm.com>2018-05-15 11:01:53 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2018-05-18 10:58:40 -0400
commit5ed2437d9ecf5b33050accdd5e1708d9fc0f5084 (patch)
tree7aec6774f779a037cc3b405299cb06f424c912a6 /src/import/chips/p9/procedures
parent7b8e60462b27343ed743e947f35abcac52a4ec58 (diff)
downloadtalos-hostboot-5ed2437d9ecf5b33050accdd5e1708d9fc0f5084.tar.gz
talos-hostboot-5ed2437d9ecf5b33050accdd5e1708d9fc0f5084.zip
SplWkup: Fixed issue in FFDC collection in case of special wakeup timeout.
Commit fixes corruption of current error in case of special wakeup timeout. Due to use of a FAPI_TRY at the begining of HWP, in FFDC path, due to recurssion, current error get reset. As a result, callback procedures crash. CQ: SW427695 Change-Id: Ic33bea5422f69400a8eb6e825fd359a475bd91b2 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/58844 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA <prasadbgr@in.ibm.com> Reviewed-by: Gregory S. Still <stillgs@us.ibm.com> Reviewed-by: Richard J. Knight <rjknight@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/58853 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures')
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_core.C8
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_eq.C8
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_ex.C11
3 files changed, 23 insertions, 4 deletions
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_core.C b/src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_core.C
index 4f365c3d9..155568414 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_core.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_core.C
@@ -69,7 +69,6 @@ fapi2::ReturnCode p9_cpu_special_wakeup_core(
auto l_exTarget = i_target.getParent<fapi2::TARGET_TYPE_EX>();
auto l_eqTarget = i_target.getParent<fapi2::TARGET_TYPE_EQ>();
auto l_procChip = i_target.getParent<fapi2::TARGET_TYPE_PROC_CHIP>();
- FAPI_TRY( getScom( l_procChip, PU_OCB_OCI_OCCFLG_SCOM, l_sgpeActive ) );
FAPI_ATTR_GET( fapi2::ATTR_CHIP_UNIT_POS, i_target, l_corePos );
FAPI_ATTR_GET( fapi2::ATTR_CORE_INSIDE_SPECIAL_WAKEUP,
@@ -89,6 +88,13 @@ fapi2::ReturnCode p9_cpu_special_wakeup_core(
}
p9specialWakeup::blockWakeupRecurssion( l_eqTarget, p9specialWakeup::BLOCK );
+ l_rc = getScom( l_procChip, PU_OCB_OCI_OCCFLG_SCOM, l_sgpeActive );
+
+ if( l_rc )
+ {
+ FAPI_ERR( "Failed To Read OCC Flag Register" );
+ return l_rc;
+ }
//Special wakeup request can't be serviced if
//SGPE did not boot and auto-special wakeup is not enabled.
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_eq.C b/src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_eq.C
index 36d15ba2d..16e13f684 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_eq.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_eq.C
@@ -67,7 +67,6 @@ fapi2::ReturnCode p9_cpu_special_wakeup_eq(
auto l_procChip = i_target.getParent<fapi2::TARGET_TYPE_PROC_CHIP>();
FAPI_ATTR_GET( fapi2::ATTR_CHIP_UNIT_POS, i_target, l_eqPos );
- FAPI_TRY( getScom( l_procChip, PU_OCB_OCI_OCCFLG_SCOM, l_sgpeActive ) );
FAPI_ATTR_GET( fapi2::ATTR_EQ_INSIDE_SPECIAL_WAKEUP,
i_target,
@@ -85,6 +84,13 @@ fapi2::ReturnCode p9_cpu_special_wakeup_eq(
}
p9specialWakeup::blockWakeupRecurssion( i_target, p9specialWakeup::BLOCK );
+ l_rc = getScom( l_procChip, PU_OCB_OCI_OCCFLG_SCOM, l_sgpeActive );
+
+ if( l_rc )
+ {
+ FAPI_ERR( "Failed To Read OCC Flag Register" );
+ return l_rc;
+ }
//Special wakeup request can't be serviced if
//SGPE did not boot.
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_ex.C b/src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_ex.C
index bf063ace0..05e870e5b 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_ex.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_ex.C
@@ -66,9 +66,8 @@ fapi2::ReturnCode p9_cpu_special_wakeup_ex(
uint8_t l_spWakeUpInProg = 0;
auto l_eqTarget = i_target.getParent<fapi2::TARGET_TYPE_EQ>();
auto l_procChip = i_target.getParent<fapi2::TARGET_TYPE_PROC_CHIP>();
- FAPI_ATTR_GET( fapi2::ATTR_CHIP_UNIT_POS, i_target, l_exPos );
- FAPI_TRY( getScom( l_procChip, PU_OCB_OCI_OCCFLG_SCOM, l_sgpeActive ) );
+ FAPI_ATTR_GET( fapi2::ATTR_CHIP_UNIT_POS, i_target, l_exPos );
FAPI_ATTR_GET( fapi2::ATTR_EX_INSIDE_SPECIAL_WAKEUP,
i_target,
l_spWakeUpInProg );
@@ -86,6 +85,14 @@ fapi2::ReturnCode p9_cpu_special_wakeup_ex(
p9specialWakeup::blockWakeupRecurssion( l_eqTarget, p9specialWakeup::BLOCK );
+ l_rc = getScom( l_procChip, PU_OCB_OCI_OCCFLG_SCOM, l_sgpeActive );
+
+ if( l_rc )
+ {
+ FAPI_ERR( "Failed To Read OCC Flag Register" );
+ return l_rc;
+ }
+
//Special wakeup request can't be serviced if
//SGPE did not boot auto Special wakeup not enabled
if( !l_sgpeActive.getBit( SGPE_ACTIVE_BIT ) )
OpenPOWER on IntegriCloud