summaryrefslogtreecommitdiffstats
path: root/import
diff options
context:
space:
mode:
authorYue Du <daviddu@us.ibm.com>2017-07-24 16:59:51 -0500
committerhostboot <hostboot@us.ibm.com>2018-08-22 17:55:10 -0500
commit46e554dd65d6f1c3d13fbefe7ed96b1c9c0c6799 (patch)
treef757f10189acff312a6adbd1daaa312be2d3a561 /import
parenta785ba7bd82ae992eb2a2d3469618a5bc0a85c72 (diff)
downloadtalos-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.c28
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))
//==================================
OpenPOWER on IntegriCloud