summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYue Du <daviddu@us.ibm.com>2017-06-21 11:48:41 -0500
committerJoshua Hunsberger <jahunsbe@us.ibm.com>2017-10-23 18:14:59 -0500
commit259c982f8d547abce8af160037559fcefee439e5 (patch)
tree99461ebb745219640ef2e0a4ffe7a4ae80b7f08e
parentf6e4d0e10392910f9a36b584c4387a6d04772eb0 (diff)
downloadtalos-hcode-259c982f8d547abce8af160037559fcefee439e5.tar.gz
talos-hcode-259c982f8d547abce8af160037559fcefee439e5.zip
STOP: sgpe take out cppm/db scom workaround for DD2
Change-Id: Ia868942bd0e1310ef40a624baf8ccb7a677efe7a Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/42227 Reviewed-by: Michael S. Floyd <mfloyd@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: BRIAN D. VICTOR <brian.d.victor1@ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
-rw-r--r--import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_exit.c45
1 files changed, 41 insertions, 4 deletions
diff --git a/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_exit.c b/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_exit.c
index 6875d437..e4117248 100644
--- a/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_exit.c
+++ b/import/chips/p9/procedures/ppe_closed/sgpe/stop_gpe/p9_sgpe_stop_exit.c
@@ -282,27 +282,48 @@ void p9_sgpe_stop_exit_end(uint32_t cexit, uint32_t qspwu, uint32_t qloop)
#if NIMBUS_DD_LEVEL != 10
- p9_dd1_cppm_unicast_wr(
- GPE_SCOM_ADDR_CORE(CPPM_CPMMR, ((qloop << 2) + cloop)),
- GPE_SCOM_ADDR_CORE(CPPM_CPMMR_OR, ((qloop << 2) + cloop)),
- BIT64(0), OR_OP);
+ // do not do this for dd1
+ GPE_PUTSCOM(GPE_SCOM_ADDR_CORE(CPPM_CPMMR_OR,
+ ((qloop << 2) + cloop)), BIT64(0));
#endif
// if waken up by pc, send doorbell to unmask pc
if (G_sgpe_stop_record.group.core[VECTOR_PCWU] & BIT32(((qloop << 2) + cloop)))
{
+
+#if NIMBUS_DD_LEVEL != 10
+
+ GPE_PUTSCOM(GPE_SCOM_ADDR_CORE(CPPM_CMEDB2,
+ ((qloop << 2) + cloop)), BIT64(7));
+
+#else
+
p9_dd1_db_unicast_wr(GPE_SCOM_ADDR_CORE(CPPM_CMEDB2,
((qloop << 2) + cloop)), BIT64(7));
+
+#endif
+
G_sgpe_stop_record.group.core[VECTOR_PCWU] &= ~BIT32(((qloop << 2) + cloop));
}
PK_TRACE_INF("SX.CME: Core[%d] Switch CorePPM Wakeup Back to CME via CPMMR[13]",
((qloop << 2) + cloop));
+
+#if NIMBUS_DD_LEVEL != 10
+
+ GPE_PUTSCOM(GPE_SCOM_ADDR_CORE(CPPM_CPMMR_CLR,
+ ((qloop << 2) + cloop)), BIT64(13));
+
+#else
+
p9_dd1_cppm_unicast_wr(
GPE_SCOM_ADDR_CORE(CPPM_CPMMR, ((qloop << 2) + cloop)),
GPE_SCOM_ADDR_CORE(CPPM_CPMMR_CLR, ((qloop << 2) + cloop)),
BIT64(13), CLR_OP);
+
+#endif
+
}
PK_TRACE("Update QSSR: drop stop_exit_ongoing");
@@ -839,9 +860,25 @@ p9_sgpe_stop_exit()
}
PK_TRACE_DBG("Check: Core[%d] will send Doorbell1", ((qloop << 2) + cloop));
+
+#if NIMBUS_DD_LEVEL != 10
+
+ GPE_PUTSCOM(GPE_SCOM_ADDR_CORE(CPPM_CMEMSG,
+ ((qloop << 2) + cloop)), BIT64(0));
+ // workaround has to use base address as read on OR/CLR leads to error
+ GPE_PUTSCOM(GPE_SCOM_ADDR_CORE(CPPM_CMEDB1,
+ ((qloop << 2) + cloop)), BIT64(7));
+
+#else
+
+ p9_dd1_db_unicast_wr(GPE_SCOM_ADDR_CORE(CPPM_CMEMSG,
+ ((qloop << 2) + cloop)), BIT64(0));
// workaround has to use base address as read on OR/CLR leads to error
p9_dd1_db_unicast_wr(GPE_SCOM_ADDR_CORE(CPPM_CMEDB1,
((qloop << 2) + cloop)), BIT64(7));
+
+#endif
+
}
// Setting up cme_flags
OpenPOWER on IntegriCloud