diff options
author | Yue Du <daviddu@us.ibm.com> | 2018-06-26 11:42:10 -0500 |
---|---|---|
committer | hostboot <hostboot@us.ibm.com> | 2018-08-22 17:55:53 -0500 |
commit | 4c395be55c719ea5510c3ee1c41c11cb6941c981 (patch) | |
tree | 05f62ddf9f44c19651e1210c49b4e047ee43cb5b /import/chips/p9/procedures/ppe_closed/sgpe | |
parent | 22782e49d66c79268492e6f0d1b65ec073eb3921 (diff) | |
download | talos-hcode-4c395be55c719ea5510c3ee1c41c11cb6941c981.tar.gz talos-hcode-4c395be55c719ea5510c3ee1c41c11cb6941c981.zip |
STOP: Clean up stop state after aborted L3 purge during Stop 11 entry
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>
Diffstat (limited to 'import/chips/p9/procedures/ppe_closed/sgpe')
-rw-r--r-- | import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop.h | 1 | ||||
-rw-r--r-- | import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_entry.c | 30 |
2 files changed, 31 insertions, 0 deletions
diff --git a/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop.h b/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop.h index 6365b932..02888108 100644 --- a/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop.h +++ b/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop.h @@ -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), 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 ef7d0477..440ab4e2 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 @@ -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; |