summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYue Du <daviddu@us.ibm.com>2018-02-14 09:15:49 -0600
committerhostboot <hostboot@us.ibm.com>2018-03-22 14:06:03 -0500
commitf4686765eda235237f346dec5e6b12100df43074 (patch)
treec5d73e3a48170afa3de95b4a2372dc05d05ac4da
parentb70ce0d14a2a63d6c35942ab92ba5e40718d4146 (diff)
downloadtalos-hcode-f4686765eda235237f346dec5e6b12100df43074.tar.gz
talos-hcode-f4686765eda235237f346dec5e6b12100df43074.zip
STOP: Fix Block Wakeup Mode with Catchup and Abort cases
Key_Cronus_Test=PM_REGRESS Change-Id: Idbed785514e6f2eb93600482d358ab9a03027772 Original-Change-Id: I9020bc4667f3f3887bf1f6560676bc3583c547c5 CQ: SW417400 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/54040 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Cronus HW CI <cronushw-ci+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Brian T. Vanderpool <vanderp@us.ibm.com> Reviewed-by: Gregory S. Still <stillgs@us.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_entry.c30
1 files changed, 4 insertions, 26 deletions
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 e5f19ce5..e5a386e5 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
@@ -289,30 +289,19 @@ p9_sgpe_stop_entry()
for(qloop = 0; qloop < MAX_QUADS; qloop++)
{
-
-#if NIMBUS_DD_LEVEL == 10
-
- scom_data.value = BIT64(18) | BIT64(21);
-
-#elif DISABLE_STOP8
-
- scom_data.value = BIT64(21);
-
-#endif
-
// insert tlbie quiesce before ncu purge to avoid window condition
// of ncu traffic still happening when purging starts
// Note: chtm purge and drop tlbie quiesce will be done in SGPE
if (G_sgpe_stop_record.group.ex01[qloop] & FST_EX_IN_QUAD)
{
- GPE_PUTSCOM(GPE_SCOM_ADDR_CME(CME_SCOM_SICR_OR, qloop, 0), scom_data.value);
+ GPE_PUTSCOM(GPE_SCOM_ADDR_CME(CME_SCOM_SICR_OR, qloop, 0), BIT64(18) | BIT64(21));
GPE_PUTSCOM(GPE_SCOM_ADDR_CME(CME_SCOM_SICR_OR, qloop, 0), BIT64(22));
}
if (G_sgpe_stop_record.group.ex01[qloop] & SND_EX_IN_QUAD)
{
- GPE_PUTSCOM(GPE_SCOM_ADDR_CME(CME_SCOM_SICR_OR, qloop, 1), scom_data.value);
+ GPE_PUTSCOM(GPE_SCOM_ADDR_CME(CME_SCOM_SICR_OR, qloop, 1), BIT64(18) | BIT64(21));
GPE_PUTSCOM(GPE_SCOM_ADDR_CME(CME_SCOM_SICR_OR, qloop, 1), BIT64(22));
}
}
@@ -321,24 +310,13 @@ p9_sgpe_stop_entry()
for(qloop = 0; qloop < MAX_QUADS; qloop++)
{
-
-#if NIMBUS_DD_LEVEL == 10
-
- uint32_t purge_done = BITS32(22, 2);
-
-#elif DISABLE_STOP8
-
- uint32_t purge_done = BIT32(23);
-
-#endif
-
if (G_sgpe_stop_record.group.ex01[qloop] & FST_EX_IN_QUAD)
{
do
{
GPE_GETSCOM(GPE_SCOM_ADDR_CME(CME_SCOM_EISR, qloop, 0), scom_data.value);
}
- while((scom_data.words.upper & purge_done) != purge_done);
+ while((scom_data.words.upper & BITS32(22, 2)) != BITS32(22, 2));
GPE_PUTSCOM(GPE_SCOM_ADDR_CME(CME_SCOM_SICR_CLR, qloop, 0), (BIT64(18) | BIT64(22)));
}
@@ -349,7 +327,7 @@ p9_sgpe_stop_entry()
{
GPE_GETSCOM(GPE_SCOM_ADDR_CME(CME_SCOM_EISR, qloop, 1), scom_data.value);
}
- while((scom_data.words.upper & purge_done) != purge_done);
+ while((scom_data.words.upper & BITS32(22, 2)) != BITS32(22, 2));
GPE_PUTSCOM(GPE_SCOM_ADDR_CME(CME_SCOM_SICR_CLR, qloop, 1), (BIT64(18) | BIT64(22)));
}
OpenPOWER on IntegriCloud