Skip to content

Commit

Permalink
STOP: Clean up stop state after aborted L3 purge during Stop 11 entry
Browse files Browse the repository at this point in the history
Key_Cronus_Test=PM_REGRESS

Change-Id: Ia232c3ec3fbff050861b013692fa88273164a9d9
Original-Change-Id: I8177aa82f188ecc9ef9efccfa44971486e60c42a
CQ: SW435009
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/61385
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
Reviewed-by: Brian T. Vanderpool <vanderp@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
  • Loading branch information
davidduyue authored and op-jenkins committed Aug 22, 2018
1 parent 22782e4 commit 4c395be
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,7 @@ extern uint32_t G_GPE_GPE3TSEL;
enum SGPE_STOP_STATE_HISTORY_VECTORS
{
SSH_EXIT_COMPLETE = 0,
SSH_ENTRY_COMPLETE = SSH_STOP_GATED,
SSH_EXIT_IN_SESSION = (SSH_STOP_GATED | SSH_TRANS_EXIT),
SSH_ENTRY_IN_SESSION = (SSH_STOP_GATED | SSH_TRANS_ENTRY),
SSH_REQ_LEVEL_UPDATE = (SSH_STOP_GATED | SSH_TRANS_ENTRY | SSH_REQ_ENABLE),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -988,6 +988,36 @@ p9_sgpe_stop_entry()

#endif

for (ex_mask = 2; ex_mask; ex_mask--)
{
if (ex & ex_mask)
{
ex_index = ex_mask & 1;

// Re-enable Tracing
GPE_PUTSCOM(GPE_SCOM_ADDR_EX(EX_CHTM1_MODE_REG, qloop, ex_index), 0xC00F000000000000);

// Re-enable PMISC and IMA - Bits 1,2,4
GPE_PUTSCOM(GPE_SCOM_ADDR_EX(EX_CHTM1_CTRL_REG, qloop, ex_index), 0x7404000000000000);

PK_TRACE("Restart CHTM1 on EX[%d] via HTM_TRIG[0/4]", ex_index);
GPE_PUTSCOM(GPE_SCOM_ADDR_EX(EX_CHTM1_TRIG_REG, qloop, ex_index), BIT64(4));
GPE_PUTSCOM(GPE_SCOM_ADDR_EX(EX_CHTM1_TRIG_REG, qloop, ex_index), BIT64(0));

}
}

PK_TRACE("Re-enable cme trace array via DEBUG_TRACE_CONTROL[0]");
GPE_PUTSCOM(GPE_SCOM_ADDR_QUAD(DEBUG_TRACE_CONTROL, qloop), BIT64(0));

PK_TRACE("Update QSSR afer L3 Purge Abort: drop stop_entry_ongoing");
out32(OCB_QSSR_CLR, BIT32(qloop + 20));

PK_TRACE("Clear stop history on quad[%d]", qloop);
scom_data.words.lower = 0;
scom_data.words.upper = SSH_ENTRY_COMPLETE;
GPE_PUTSCOM_VAR(PPM_SSHSRC, QUAD_ADDR_BASE, qloop, 0, scom_data.value);

// For IPC reporting, taking aborted quad out of the list
G_sgpe_stop_record.group.quad[VECTOR_ENTRY] &= ~BIT32(qloop);
continue;
Expand Down

0 comments on commit 4c395be

Please sign in to comment.