summaryrefslogtreecommitdiffstats
path: root/import
diff options
context:
space:
mode:
authorYue Du <daviddu@us.ibm.com>2017-07-07 14:53:55 -0500
committerhostboot <hostboot@us.ibm.com>2018-08-22 17:55:03 -0500
commit4f79fd1521fad159f587534497152cb802dfbd2e (patch)
treee8d7d19ba4ddf6217df49c70b61e370488babc74 /import
parent1bdd5be3c625424fc651d24e7f00419275351dc8 (diff)
downloadtalos-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-ximport/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_entry.c70
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);
}
OpenPOWER on IntegriCloud