diff options
author | Prem Shanker Jha <premjha2@in.ibm.com> | 2018-04-11 00:33:01 -0500 |
---|---|---|
committer | Christian R. Geddes <crgeddes@us.ibm.com> | 2018-04-20 14:56:28 -0400 |
commit | 0b218fdee3aa4847f12df980ae3f5c05d285a327 (patch) | |
tree | 8f6703764a51cbfe2fd04aa69fac378fe7e3ef2e /src/import/chips/p9/procedures/hwp/pm/p9_cpu_special_wakeup_ex.C | |
parent | 3d354558091d4b22dd8fa93aad10f54d5cb770ce (diff) | |
download | talos-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.C | 34 |
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; } |