diff options
| author | Yue Du <daviddu@us.ibm.com> | 2018-06-11 01:39:29 -0500 |
|---|---|---|
| committer | hostboot <hostboot@us.ibm.com> | 2018-06-27 10:40:02 -0500 |
| commit | 9cf14ad78beeec8347add7bb9a8b0ef7166a1e45 (patch) | |
| tree | 98bca416a1bd0590c75883bf894c94f0a3883ef9 | |
| parent | 6c04729cc5a548624428e5cf4d67743deb477e19 (diff) | |
| download | talos-hcode-9cf14ad78beeec8347add7bb9a8b0ef7166a1e45.tar.gz talos-hcode-9cf14ad78beeec8347add7bb9a8b0ef7166a1e45.zip | |
STOP: Fix CME Special Attention handling
Key_Cronus_Test=PM_REGRESS
Change-Id: Ic88c33e3f557710b1ec8bf006089797e63ffe8a9
CQ: SW432080
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/61104
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Cronus HW CI <cronushw-ci+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
| -rw-r--r-- | import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_exit.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_exit.c b/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_exit.c index be0588d7..a8db50c0 100644 --- a/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_exit.c +++ b/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_exit.c @@ -1206,12 +1206,19 @@ p9_cme_stop_exit() while((~(in32(G_CME_LCL_EINR))) & (core << SHIFT32(21))) { - core_spattn = (in32_sh(CME_LCL_SISR) >> SHIFT64SH(33)) & CME_MASK_BC; + core_spattn = (in32_sh(CME_LCL_SISR) >> SHIFT64SH(33)) & core; if (core_spattn) { PK_TRACE_ERR("ERROR: Core[%d] Special Attention Detected. Gard Core!", core_spattn); CME_STOP_CORE_ERROR_HANDLER(core, core_spattn, CME_STOP_EXIT_SELF_RES_SPATTN); + + PK_TRACE("Release PCB Mux back on Core via SICR[10/11]"); + out32(G_CME_LCL_SICR_CLR, core_spattn << SHIFT32(11)); + + while((core_spattn & ~(in32(G_CME_LCL_SISR) >> SHIFT32(11))) != core_spattn); + + PK_TRACE("PCB Mux Released on Core[%d]", core_spattn); } if (!core) |

