summaryrefslogtreecommitdiffstats
path: root/import/chips/p9/procedures/ppe_closed/sgpe
diff options
context:
space:
mode:
authorYue Du <daviddu@us.ibm.com>2018-06-26 11:42:10 -0500
committerhostboot <hostboot@us.ibm.com>2018-08-22 17:55:53 -0500
commit4c395be55c719ea5510c3ee1c41c11cb6941c981 (patch)
tree05f62ddf9f44c19651e1210c49b4e047ee43cb5b /import/chips/p9/procedures/ppe_closed/sgpe
parent22782e49d66c79268492e6f0d1b65ec073eb3921 (diff)
downloadtalos-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.h1
-rw-r--r--import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_entry.c30
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;
OpenPOWER on IntegriCloud