diff options
| author | Yue Du <daviddu@us.ibm.com> | 2017-06-21 11:48:41 -0500 |
|---|---|---|
| committer | Joshua Hunsberger <jahunsbe@us.ibm.com> | 2017-10-23 18:14:59 -0500 |
| commit | 259c982f8d547abce8af160037559fcefee439e5 (patch) | |
| tree | 99461ebb745219640ef2e0a4ffe7a4ae80b7f08e | |
| parent | f6e4d0e10392910f9a36b584c4387a6d04772eb0 (diff) | |
| download | talos-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.c | 45 |
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 |

