diff options
author | crgeddes <crgeddes@us.ibm.com> | 2017-05-16 10:01:13 -0500 |
---|---|---|
committer | Christian R. Geddes <crgeddes@us.ibm.com> | 2017-05-22 11:01:03 -0400 |
commit | 8f6ec7a0a5e878da18d801dd930c12889fc1f3a5 (patch) | |
tree | 1c57ec18708548e8937edfe36b11548c31be73d4 /src/import/chips/p9 | |
parent | 5156dbe7de43e67ec71c7cd97786cd25c4213f6f (diff) | |
download | talos-hostboot-8f6ec7a0a5e878da18d801dd930c12889fc1f3a5.tar.gz talos-hostboot-8f6ec7a0a5e878da18d801dd930c12889fc1f3a5.zip |
Use query_cache_access_state to verify EQ scomable in corequad_init
In corequad_init we cannot rely on hwas states because targets are
not always scommable even though they are functional. This adds
a check to ensure a ex is scommable before we attempt to scom it
CQ: SW388687
Change-Id: Ic4ea7a71231a0cbc13e76fa085cbd3b1a47348c0
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/40560
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
Reviewed-by: AMIT KUMAR <akumar3@us.ibm.com>
Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA <prasadbgr@in.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/40565
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: Christian R. Geddes <crgeddes@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9')
-rw-r--r-- | src/import/chips/p9/procedures/hwp/pm/p9_pm_corequad_init.C | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_pm_corequad_init.C b/src/import/chips/p9/procedures/hwp/pm/p9_pm_corequad_init.C index d80ed81ea..295b3fb22 100644 --- a/src/import/chips/p9/procedures/hwp/pm/p9_pm_corequad_init.C +++ b/src/import/chips/p9/procedures/hwp/pm/p9_pm_corequad_init.C @@ -74,6 +74,7 @@ // Includes // ----------------------------------------------------------------------------- #include <p9_pm_corequad_init.H> +#include <p9_query_cache_access_state.H> // ----------------------------------------------------------------------------- // Constant definitions @@ -339,11 +340,16 @@ fapi2::ReturnCode pm_corequad_reset( FAPI_IMP("Entering pm_corequad_reset..."); fapi2::buffer<uint64_t> l_data64; + fapi2::ReturnCode l_rc; uint8_t l_chpltNumber = 0; uint64_t l_address = 0; uint32_t l_errMask = 0; uint32_t l_firMask = 0; uint32_t l_pollCount = 20; + bool l_l2_is_scanable = false; + bool l_l3_is_scanable = false; + bool l_l2_is_scomable = false; + bool l_l3_is_scomable = false; auto l_eqChiplets = i_target.getChildren<fapi2::TARGET_TYPE_EQ> (fapi2::TARGET_STATE_FUNCTIONAL); @@ -392,6 +398,21 @@ fapi2::ReturnCode pm_corequad_reset( FAPI_TRY(fapi2::putScom(l_quad_chplt, l_address, l_data64), "ERROR: Failed to clear QUAD PPM ERROR"); + //Cannot always rely on HWAS state, during MPIPL attr are not + //accurate, must use query_cache_access state prior to scomming + //ex targets + FAPI_EXEC_HWP(l_rc, p9_query_cache_access_state, l_quad_chplt, + l_l2_is_scomable, l_l2_is_scanable, + l_l3_is_scomable, l_l3_is_scanable); + FAPI_TRY(l_rc, "ERROR: failed to query cache access state for EQ %d", + l_chpltNumber); + + if(!l_l2_is_scomable) + { + //Skip all of the scoms for this EQ if its not scommable + continue; + } + auto l_exChiplets = l_quad_chplt.getChildren<fapi2::TARGET_TYPE_EX> (fapi2::TARGET_STATE_FUNCTIONAL); |