Skip to content

Commit

Permalink
STOP: Fix Disable Stop8 on L3 Purge Abort case
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
davidduyue authored and op-jenkins committed Aug 22, 2018
1 parent a785ba7 commit 46e554d
Showing 1 changed file with 20 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,17 +39,15 @@ 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;
uint32_t ex_index = 0;
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;
Expand Down Expand Up @@ -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++)
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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)));
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -708,6 +715,7 @@ p9_sgpe_stop_entry()
}



// loop for rest of quad stop
for(qloop = 0; qloop < MAX_QUADS; qloop++)
{
Expand All @@ -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))
//==================================
Expand Down

0 comments on commit 46e554d

Please sign in to comment.