diff options
| author | Yue Du <daviddu@us.ibm.com> | 2017-07-07 14:53:55 -0500 |
|---|---|---|
| committer | hostboot <hostboot@us.ibm.com> | 2018-08-22 17:55:03 -0500 |
| commit | 4f79fd1521fad159f587534497152cb802dfbd2e (patch) | |
| tree | e8d7d19ba4ddf6217df49c70b61e370488babc74 /import | |
| parent | 1bdd5be3c625424fc651d24e7f00419275351dc8 (diff) | |
| download | talos-hcode-4f79fd1521fad159f587534497152cb802dfbd2e.tar.gz talos-hcode-4f79fd1521fad159f587534497152cb802dfbd2e.zip | |
STOP: Put PIG and Notify_select back to back
Change-Id: I41394f820379c140f373fe2287b43966791d7b06
Original-Change-Id: I5e0a237aa8abd7933bf0941d0c98d2c41b3f611f
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/42876
Reviewed-by: Adam S. Hale <adam.samuel.hale@ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Brian T. Vanderpool <vanderp@us.ibm.com>
Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
Diffstat (limited to 'import')
| -rwxr-xr-x | import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_entry.c | 70 |
1 files changed, 11 insertions, 59 deletions
diff --git a/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_entry.c b/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_entry.c index 9dae05d1..e852378d 100755 --- a/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_entry.c +++ b/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_entry.c @@ -1290,32 +1290,6 @@ p9_cme_stop_entry() scom_data.words.upper = SSH_ACT_LV5_COMPLETE; CME_PUTSCOM(PPM_SSHSRC, core, scom_data.value); -#if DEBUG_RUNTIME_STATE_CHECK - - if (core & CME_MASK_C0) - { - CME_GETSCOM(CPPM_CPMMR, CME_MASK_C0, scom_data.value); - - if ((scom_data.words.upper & BIT32(13))) - { - PKTRACE("ERROR.A0: C0 notify was already set?"); - pk_halt(); - } - } - - if (core & CME_MASK_C1) - { - CME_GETSCOM(CPPM_CPMMR, CME_MASK_C1, scom_data.value); - - if ((scom_data.words.upper & BIT32(13))) - { - PKTRACE("ERROR.A1: C1 notify was already set?"); - pk_halt(); - } - } - -#endif - PK_TRACE("Send PCB interrupt per core via PIG, select irq type via CPMMR[10]"); for (core_mask = 2; core_mask; core_mask--) @@ -1338,12 +1312,22 @@ p9_cme_stop_entry() } pig.fields.req_intr_payload = G_cme_stop_record.req_level[core_index]; - CME_PUTSCOM(PPM_PIG, core_mask, pig.value); + + // put PIG and Wakeup_Notify_Select back to back as possible + CME_PUTSCOM(PPM_PIG, core_mask, pig.value); + CME_PUTSCOM(CPPM_CPMMR_OR, core_mask, BIT64(13)); + PK_TRACE_DBG("Switch Core[%d] PPM wakeup to STOP-GPE via CPMMR[13]", core_mask); + G_cme_stop_record.core_stopgpe |= core; G_cme_stop_record.act_level[core_index] = STOP_LEVEL_5; } } + sync(); + + PK_TRACE("Clear special wakeup after wakeup_notify = 1 since it is edge triggered"); + out32(CME_LCL_EISR_CLR, core << SHIFT32(15)); + #if NIMBUS_DD_LEVEL != 10 PK_TRACE("Drop PPM_WRITE_DISABLE via CPMMR[0]"); @@ -1351,38 +1335,6 @@ p9_cme_stop_entry() #endif - PK_TRACE_DBG("Switch Core PPM wakeup to STOP-GPE via CPMMR[13]"); - CME_PUTSCOM(CPPM_CPMMR_OR, core, BIT64(13)); - -#if DEBUG_RUNTIME_STATE_CHECK - - if (core & CME_MASK_C0) - { - CME_GETSCOM(CPPM_CPMMR, CME_MASK_C0, scom_data.value); - - if (!(scom_data.words.upper & BIT32(13))) - { - PKTRACE("ERROR.B0: C0 notify fail to set"); - pk_halt(); - } - } - - if (core & CME_MASK_C1) - { - CME_GETSCOM(CPPM_CPMMR, CME_MASK_C1, scom_data.value); - - if (!(scom_data.words.upper & BIT32(13))) - { - PKTRACE("ERROR.B1: C1 notify fail to set"); - pk_halt(); - } - } - -#endif - - PK_TRACE("Clear special wakeup after wakeup_notify = 1 since it is edge triggered"); - out32(CME_LCL_EISR_CLR, core << SHIFT32(15)); - PK_TRACE_INF("SE.5B: Core[%d] Handed off to SGPE", core); } |

