From a2c708da6e1ac1f4e5f504dae30783c149ed042f Mon Sep 17 00:00:00 2001 From: Amit Tendolkar Date: Thu, 22 Feb 2018 09:35:46 -0600 Subject: Add PGPE XIRs to Special Wakeup Failure FFDC Adds PGPE to the list of PPEs whose FFDC is collected on special- wakeup failures for core, ex and quad. PGPE reset fail FFDC collection mode changes from snaphot to halt. Change-Id: I48e67f5088ea9e5298e0c2d0f786121c6f0a7896 CQ: SW418521 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/54566 Tested-by: FSP CI Jenkins Tested-by: Jenkins Server Tested-by: HWSV CI Tested-by: Hostboot CI Reviewed-by: Prem Shanker Jha Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA Reviewed-by: Gregory S. Still Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/54591 Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Reviewed-by: Daniel M. Crowell --- .../procedures/hwp/pm/p9_cpu_special_wakeup_core.C | 15 +++++++-------- .../p9/procedures/hwp/pm/p9_cpu_special_wakeup_eq.C | 3 ++- .../p9/procedures/hwp/pm/p9_cpu_special_wakeup_ex.C | 21 +++++++-------------- .../p9/procedures/hwp/pm/p9_pm_pstate_gpe_init.C | 4 ++-- 4 files changed, 18 insertions(+), 25 deletions(-) (limited to 'src/import/chips/p9/procedures/hwp/pm') 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 8031ff929..e3cc00849 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 @@ -123,10 +123,11 @@ fapi2::ReturnCode collectCoreTimeoutFailInfo( const fapi2::Target < fapi2::TARGE uint8_t l_exPos = 0; FAPI_ATTR_GET( fapi2::ATTR_CHIP_UNIT_POS, parentExTgt, l_exPos ); - std::vector l_cmeBaseAddress; - std::vector l_sgpeBaseAddress; - l_sgpeBaseAddress.push_back( SGPE_BASE_ADDRESS ); - l_cmeBaseAddress.push_back( getCmeBaseAddress( l_exPos ) ); + // Collect PPE FFDC for CME, SGPE and PGPE + std::vector l_ppeBaseAddresses; + l_ppeBaseAddresses.push_back( getCmeBaseAddress( l_exPos ) ); + l_ppeBaseAddresses.push_back( SGPE_BASE_ADDRESS ); + l_ppeBaseAddresses.push_back( PGPE_BASE_ADDRESS ); FAPI_ASSERT( false , fapi2::SPCWKUP_CORE_TIMEOUT(). @@ -140,10 +141,8 @@ fapi2::ReturnCode collectCoreTimeoutFailInfo( const fapi2::Target < fapi2::TARGE set_EX_TARGET( parentExTgt ). set_CORE_TARGET( i_target ). set_PROC_CHIP_TARGET( i_processing_info.procTgt ). - set_CME_BASE_ADDRESS( l_cmeBaseAddress ). - set_SGPE_BASE_ADDRESS( l_sgpeBaseAddress ). - set_CME_STATE_MODE( XIRS ). - set_SGPE_STATE_MODE( XIRS ), + set_PPE_BASE_ADDRESSES( l_ppeBaseAddresses ). + set_PPE_STATE_MODE( XIRS ), "Timed Out In Setting Core Special Wakeup"); fapi_try_exit: FAPI_INF("<< collectCoreTimeoutFailInfo" ); 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 72683fd16..7e23c7587 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 @@ -115,7 +115,8 @@ fapi2::ReturnCode collectEqTimeoutFailInfo( const fapi2::Target < fapi2::TARGET_ fapi2::buffer l_histRegVal; fapi2::buffer l_netCtrlVal; std::vector l_ppeBaseAddressList; - l_ppeBaseAddressList.push_back( SGPE_BASE_ADDRESS ); + l_ppeBaseAddressList.push_back (SGPE_BASE_ADDRESS); + l_ppeBaseAddressList.push_back (PGPE_BASE_ADDRESS); uint8_t l_exPos = 0; auto l_ex_vector = 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 768c28c3c..1fbb683ab 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 @@ -144,16 +144,11 @@ fapi2::ReturnCode collectExTimeoutFailInfo( const fapi2::Target < fapi2::TARGET_ uint8_t l_exPos = 0; FAPI_ATTR_GET( fapi2::ATTR_CHIP_UNIT_POS, i_target, l_exPos ); - //For Special Wakeup of EX, in case of timeout, SGPE can't be halted. - //Hence, only XIRs will be collected for it. Whereas for CME, full PPE - //state dump is permissible. As a result, collect PPE State is getting called - //separately for CME and SGPE. Otherwise , collect PPE state expects a - //vector of base addresses. - - std::vector l_cmeBaseAddress; - std::vector l_sgpeBaseAddress; - l_sgpeBaseAddress.push_back( SGPE_BASE_ADDRESS ); - l_cmeBaseAddress.push_back( getCmeBaseAddress( l_exPos ) ); + // Collect CME, SGPE and PGPE FFDC, currently we only collect XIRs + std::vector l_ppeBaseAddresses; + l_ppeBaseAddresses.push_back (getCmeBaseAddress (l_exPos)); + l_ppeBaseAddresses.push_back (SGPE_BASE_ADDRESS); + l_ppeBaseAddresses.push_back (PGPE_BASE_ADDRESS); //From this point onwards, any usage of FAPI TRY in physical or //logical path can be a serious problem. Hence, should not be used. @@ -175,10 +170,8 @@ fapi2::ReturnCode collectExTimeoutFailInfo( const fapi2::Target < fapi2::TARGET_ set_EQ_TARGET( i_target.getParent() ). set_EX_TARGET( i_target ). set_PROC_CHIP_TARGET( i_processing_info.procTgt ). - set_CME_BASE_ADDRESS( l_cmeBaseAddress ). - set_SGPE_BASE_ADDRESS( l_sgpeBaseAddress ). - set_CME_STATE_MODE( XIRS ). - set_SGPE_STATE_MODE( XIRS ), + set_PPE_BASE_ADDRESSES( l_ppeBaseAddresses ). + set_PPE_STATE_MODE( XIRS ), "Timed Out In Setting The EX Special Wakeup" ); fapi_try_exit: diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_pm_pstate_gpe_init.C b/src/import/chips/p9/procedures/hwp/pm/p9_pm_pstate_gpe_init.C index 24f4d14b7..d1c2342ea 100644 --- a/src/import/chips/p9/procedures/hwp/pm/p9_pm_pstate_gpe_init.C +++ b/src/import/chips/p9/procedures/hwp/pm/p9_pm_pstate_gpe_init.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2017 */ +/* Contributors Listed Below - COPYRIGHT 2015,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -327,7 +327,7 @@ fapi2::ReturnCode pstate_gpe_reset( fapi2::PSTATE_GPE_RESET_TIMEOUT() .set_CHIP(i_target) .set_PGPE_BASE_ADDRESS(l_pgpe_base_addr) - .set_PGPE_STATE_MODE(SNAPSHOT), + .set_PGPE_STATE_MODE(HALT), "PSTATE GPE Reset timeout"); FAPI_TRY(getScom(i_target, PU_OCB_OCI_OCCS2_SCOM, l_data64)); -- cgit v1.2.1