summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_ex.C
diff options
context:
space:
mode:
authorPrem Shanker Jha <premjha2@in.ibm.com>2018-04-11 00:33:01 -0500
committerChristian R. Geddes <crgeddes@us.ibm.com>2018-04-20 14:56:28 -0400
commit0b218fdee3aa4847f12df980ae3f5c05d285a327 (patch)
tree8f6703764a51cbfe2fd04aa69fac378fe7e3ef2e /src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_ex.C
parent3d354558091d4b22dd8fa93aad10f54d5cb770ce (diff)
downloadtalos-hostboot-0b218fdee3aa4847f12df980ae3f5c05d285a327.tar.gz
talos-hostboot-0b218fdee3aa4847f12df980ae3f5c05d285a327.zip
Special Wakeup: Handling of special wakeup request on poweroff slave cores.
FSP is ignorent of exact host processor state during hostboot istep. During slave SBE update failure, hwsv on FSP stack request special wakeup on all procs which includes slave ones. Since, PM complex isn't booted at this stage, special wakeup times out. As a result, on Zepplin system, there is a flood of informational error logs which breaks automated test scripts. Key_Cronus_Test=PM_REGRESS Change-Id: Id0be8af5966404618dde0a8c7af00b081f5bd412 CQ: SW422995 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/57039 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> Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Tested-by: Cronus HW CI <cronushw-ci+hostboot@us.ibm.com> Dev-Ready: Gregory S. Still <stillgs@us.ibm.com> Reviewed-by: AMIT J. TENDOLKAR <amit.tendolkar@in.ibm.com> Reviewed-by: Gregory S. Still <stillgs@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/57042 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: Christian R. Geddes <crgeddes@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_ex.C')
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_ex.C34
1 files changed, 30 insertions, 4 deletions
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 1fbb683ab..381bc65ab 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
@@ -59,14 +59,21 @@ fapi2::ReturnCode p9_cpu_special_wakeup_ex(
fapi2::ReturnCode l_rc;
ProcessingValues_t l_processing_info;
- uint8_t l_spWakeUpInProg = 0;
- auto l_eqTarget = i_target.getParent<fapi2::TARGET_TYPE_EQ>();
+ fapi2::buffer<uint64_t> l_autoSpWkUp;
+ fapi2::buffer<uint64_t> l_sgpeActive;
+ uint8_t l_exPos = 0;
+ uint8_t l_autoSpWkUpEn = 0;
+ 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_EX_INSIDE_SPECIAL_WAKEUP,
i_target,
l_spWakeUpInProg );
- //A special wakeup is already in progress. In all likelyhood, a special
+ // A special wakeup is already in progress. In all likelyhood, a special
// wakeup has timed out and we are in FFDC collection path. During this
// FFDC collection, we SCOMed a register which itself needs a special
// wakeup.
@@ -79,6 +86,24 @@ fapi2::ReturnCode p9_cpu_special_wakeup_ex(
p9specialWakeup::blockWakeupRecurssion( l_eqTarget, p9specialWakeup::BLOCK );
+ //Special wakeup request can't be serviced if
+ //SGPE did not boot auto Special wakeup not enabled
+ if( !l_sgpeActive.getBit( SGPE_ACTIVE_BIT ) )
+ {
+ l_rc = getScom( i_target, EQ_CME_SCOM_LMCR_SCOM, l_autoSpWkUp );
+
+ if( !l_rc )
+ {
+ l_autoSpWkUpEn =
+ l_autoSpWkUp.getBit( AUTO_SPWKUP_DIS_POS + (l_exPos & 0x01) ) ? 0 : 1;
+
+ FAPI_ASSERT( (!l_rc && l_autoSpWkUpEn ),
+ fapi2::EX_SPECIAL_WAKEUP_NOT_FEASIBLE()
+ .set_EX_POS( l_exPos ),
+ "Special Wakeup Request Cannot Be Serviced on This Ex" );
+ }
+ }
+
l_rc = _special_wakeup( i_target,
i_operation,
i_entity,
@@ -89,9 +114,10 @@ fapi2::ReturnCode p9_cpu_special_wakeup_ex(
collectExTimeoutFailInfo( i_target, l_processing_info );
}
- p9specialWakeup::blockWakeupRecurssion( l_eqTarget, p9specialWakeup::UNBLOCK );
+fapi_try_exit:
FAPI_INF("<< p9_cpu_special_wakeup_ex" );
+ p9specialWakeup::blockWakeupRecurssion( l_eqTarget, p9specialWakeup::UNBLOCK );
return fapi2::current_err;
}
OpenPOWER on IntegriCloud