diff options
| author | Yue Du <daviddu@us.ibm.com> | 2017-07-24 16:59:51 -0500 |
|---|---|---|
| committer | hostboot <hostboot@us.ibm.com> | 2018-08-22 17:55:10 -0500 |
| commit | 46e554dd65d6f1c3d13fbefe7ed96b1c9c0c6799 (patch) | |
| tree | f757f10189acff312a6adbd1daaa312be2d3a561 /import | |
| parent | a785ba7bd82ae992eb2a2d3469618a5bc0a85c72 (diff) | |
| download | talos-hcode-46e554dd65d6f1c3d13fbefe7ed96b1c9c0c6799.tar.gz talos-hcode-46e554dd65d6f1c3d13fbefe7ed96b1c9c0c6799.zip | |
STOP: Fix Disable Stop8 on L3 Purge Abort case
Change-Id: I288cf67c24900128d244bd2b61335b515a4fa929
Original-Change-Id: I87338f0ead2c74acd23ec092702afc8868e696bb
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/43570
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: BRIAN D. VICTOR <brian.d.victor1@ibm.com>
Reviewed-by: Brian T. Vanderpool <vanderp@us.ibm.com>
Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
Diffstat (limited to 'import')
| -rw-r--r-- | import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_entry.c | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_entry.c b/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_entry.c index dff66f11..9ddd71b6 100644 --- a/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_entry.c +++ b/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_entry.c @@ -39,10 +39,7 @@ extern SgpeStopRecord G_sgpe_stop_record; void p9_sgpe_stop_entry() { -#if !DISABLE_STOP8 uint32_t entry_ongoing[2] = {0, 0}; - uint32_t climit = 0; -#endif uint32_t l3_purge_aborted = 0; uint32_t ex = 0; uint32_t ex_mask = 0; @@ -50,6 +47,7 @@ p9_sgpe_stop_entry() uint32_t bitloc = 0; uint32_t qloop = 0; uint32_t cloop = 0; + uint32_t climit = 0; uint32_t cindex = 0; uint64_t host_attn = 0; uint64_t local_xstop = 0; @@ -220,6 +218,10 @@ p9_sgpe_stop_entry() // NDD1 workaround to save cme image size #if NIMBUS_DD_LEVEL == 10 + //-------------------------------------------------------------------------- + PK_TRACE("+++++ +++++ EX STOP ENTRY [L2 PURGE(NDD1 ONLY)] +++++ +++++"); + //-------------------------------------------------------------------------- + PK_TRACE("Assert L2+NCU purge and NCU tlbie quiesce via SICR[18,21,22]"); for(qloop = 0; qloop < MAX_QUADS; qloop++) @@ -396,8 +398,6 @@ p9_sgpe_stop_entry() GPE_PUTSCOM(GPE_SCOM_ADDR_QUAD(EQ_QPPM_EXCGCR_CLR, qloop), ((uint64_t)ex << SHIFT64(35))); -#if !DISABLE_STOP8 - if (ex & FST_EX_IN_QUAD) { cloop = 0; @@ -440,12 +440,15 @@ p9_sgpe_stop_entry() scom_data.words.lower = 0; scom_data.words.upper = (SSH_ACT_LV8_COMPLETE | (((uint32_t)entry_ongoing[cloop >> 1]) << SHIFT32(3))); - GPE_PUTSCOM_VAR(PPM_SSHSRC, CORE_ADDR_BASE, cindex, 0, scom_data.value); - } +#if !DISABLE_STOP8 + + GPE_PUTSCOM_VAR(PPM_SSHSRC, CORE_ADDR_BASE, cindex, 0, scom_data.value); #endif + } + PK_TRACE("Update QSSR: l2_stopped, drop stop_entry_ongoing"); out32(OCB_QSSR_CLR, BIT32(qloop + 20)); out32(OCB_QSSR_OR, (ex << SHIFT32((qloop << 1) + 1))); @@ -483,7 +486,7 @@ p9_sgpe_stop_entry() ex = G_sgpe_stop_record.group.expg[qloop]; // ------------------------------------------------------------------------ - PK_TRACE("+++++ +++++ QUAD STOP ENTRY [LEVEL 11-15] +++++ +++++"); + PK_TRACE("+++++ +++++ QUAD STOP ENTRY [LEVEL 11-15, L3 PURGE] +++++ +++++"); // ------------------------------------------------------------------------ PK_TRACE_INF("SE.11A: Quad[%d] EX_PG[%d] Shutting Cache Down", qloop, ex); @@ -570,6 +573,10 @@ p9_sgpe_stop_entry() ex = G_sgpe_stop_record.group.expg[qloop]; + // ------------------------------------------------------------------------------ + PK_TRACE("+++++ +++++ QUAD STOP ENTRY [LEVEL 11-15, L3 PURGE DONE] +++++ +++++"); + // ------------------------------------------------------------------------------ + PK_TRACE("Poll for L3 purge done via EX_PM_PURGE_REG[0]"); // Poll on the same request bit thus no need to deassert @@ -708,6 +715,7 @@ p9_sgpe_stop_entry() } + // loop for rest of quad stop for(qloop = 0; qloop < MAX_QUADS; qloop++) { @@ -719,6 +727,10 @@ p9_sgpe_stop_entry() ex = G_sgpe_stop_record.group.expg[qloop]; + // ------------------------------------------------------------------------------ + PK_TRACE("+++++ +++++ QUAD STOP ENTRY [LEVEL 11-15, CONTINUE] +++++ +++++"); + // ------------------------------------------------------------------------------ + //================================== MARK_TAG(SE_PURGE_PB, (32 >> qloop)) //================================== |

