diff options
| author | Yue Du <daviddu@us.ibm.com> | 2019-10-09 09:43:41 -0500 |
|---|---|---|
| committer | hostboot <hostboot@us.ibm.com> | 2019-10-12 06:20:59 -0500 |
| commit | bd92fe00d639c484d0b3fb647a495334ec038d47 (patch) | |
| tree | 772f8f5d11e170a1ae41d05be61b7d05ef2cf7b6 | |
| parent | cf7d20a8166dfa177ce40e846b82283bc3abb4f5 (diff) | |
| download | talos-hcode-bd92fe00d639c484d0b3fb647a495334ec038d47.tar.gz talos-hcode-bd92fe00d639c484d0b3fb647a495334ec038d47.zip | |
CME: Perform SMF Self Save After RAM Psscr.PLS in STOP Entry
Change-Id: I38d6b03c2a44def6aed080722a77e08892d35efb
CQ:SW474026
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/85053
Tested-by: Jenkins Server <pfd-jenkins+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: Christopher R Jones <crjones@us.ibm.com>
Reviewed-by: Jennifer A Stofer <stofer@us.ibm.com>
| -rwxr-xr-x | import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_entry.c | 122 |
1 files changed, 61 insertions, 61 deletions
diff --git a/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_entry.c b/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_entry.c index 48111d1d..ab2e92d1 100755 --- a/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_entry.c +++ b/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_entry.c @@ -585,67 +585,6 @@ p9_cme_stop_entry() #endif -#if SMF_SUPPORT_ENABLE - - if (G_cme_stop_record.req_level[0] >= STOP_LEVEL_4) - { - self_save_core |= CME_MASK_C0; - } - - if (G_cme_stop_record.req_level[1] >= STOP_LEVEL_4) - { - self_save_core |= CME_MASK_C1; - } - - self_save_core = self_save_core & core; - - if ( self_save_core ) - { - - p9_cme_stop_self_execute(self_save_core, SPR_SELF_SAVE); - - PK_TRACE("Poll for core stop again(pm_active=1)"); - - while((~(in32(G_CME_LCL_EINR))) & (self_save_core << SHIFT32(21))) - { - core_spattn = (in32_sh(CME_LCL_SISR) >> SHIFT64SH(33)) & self_save_core; - - if (core_spattn) - { - PK_TRACE_ERR("ERROR: Core[%d] Special Attention Detected. Gard Core!", core_spattn); - CME_STOP_CORE_ERROR_HANDLER(self_save_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 (!self_save_core) - { - -#if NIMBUS_DD_LEVEL == 20 || DISABLE_CME_DUAL_CAST == 1 - - continue; - -#else - - return; - -#endif - - } - } - - PK_TRACE("SF.RS: Self Save Completed, Core Stopped Again(pm_exit=0/pm_active=1)"); - - p9_cme_stop_self_cleanup(self_save_core); - - }// if self_save_core - -#endif // --------------------------------- // Permanent workaround for HW407385 @@ -883,6 +822,67 @@ p9_cme_stop_entry() #endif +#if SMF_SUPPORT_ENABLE + + if (G_cme_stop_record.req_level[0] >= STOP_LEVEL_4) + { + self_save_core |= CME_MASK_C0; + } + + if (G_cme_stop_record.req_level[1] >= STOP_LEVEL_4) + { + self_save_core |= CME_MASK_C1; + } + + self_save_core = self_save_core & core; + + if ( self_save_core ) + { + + p9_cme_stop_self_execute(self_save_core, SPR_SELF_SAVE); + + PK_TRACE("Poll for core stop again(pm_active=1)"); + + while((~(in32(G_CME_LCL_EINR))) & (self_save_core << SHIFT32(21))) + { + core_spattn = (in32_sh(CME_LCL_SISR) >> SHIFT64SH(33)) & self_save_core; + + if (core_spattn) + { + PK_TRACE_ERR("ERROR: Core[%d] Special Attention Detected. Gard Core!", core_spattn); + CME_STOP_CORE_ERROR_HANDLER(self_save_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 (!self_save_core) + { + +#if NIMBUS_DD_LEVEL == 20 || DISABLE_CME_DUAL_CAST == 1 + + continue; + +#else + + return; + +#endif + + } + } + + PK_TRACE("SF.RS: Self Save Completed, Core Stopped Again(pm_exit=0/pm_active=1)"); + + p9_cme_stop_self_cleanup(self_save_core); + + }// if self_save_core + +#endif // ==================================== |

