diff options
| author | Yue Du <daviddu@us.ibm.com> | 2018-02-14 09:15:49 -0600 |
|---|---|---|
| committer | hostboot <hostboot@us.ibm.com> | 2018-03-22 14:06:03 -0500 |
| commit | f4686765eda235237f346dec5e6b12100df43074 (patch) | |
| tree | c5d73e3a48170afa3de95b4a2372dc05d05ac4da | |
| parent | b70ce0d14a2a63d6c35942ab92ba5e40718d4146 (diff) | |
| download | talos-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.c | 30 |
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))); } |

