diff options
| author | Rahul Batra <rbatra@us.ibm.com> | 2017-09-21 11:02:35 -0500 |
|---|---|---|
| committer | Joshua Hunsberger <jahunsbe@us.ibm.com> | 2018-02-01 15:39:44 -0600 |
| commit | da332029fb0d31db960d9a8586dd446ff076a8bc (patch) | |
| tree | 4c94e19e79fdbaa39e69a57f16826b7f8cd9cdc7 | |
| parent | e9f41593a494f2f799088f496fdd42e8ab3ab132 (diff) | |
| download | talos-hcode-da332029fb0d31db960d9a8586dd446ff076a8bc.tar.gz talos-hcode-da332029fb0d31db960d9a8586dd446ff076a8bc.zip | |
WOF: More Phase 2 Fixes
Key_Cronus_Test=PM_REGRESS
Change-Id: I40724e10f7ebbc66a2287203e81c2cc5f5cf3121
Original-Change-Id: Iba2ff6ffc0c2b06b3d2df1c40f707da63eb020b0
CQ: SW404912
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/46595
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: Michael S. Floyd <mfloyd@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/cme/pstate_cme/p9_cme_thread_db.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_thread_db.c b/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_thread_db.c index 34818d40..2771355a 100644 --- a/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_thread_db.c +++ b/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_thread_db.c @@ -71,7 +71,7 @@ inline void p9_cme_pstate_process_db0() __attribute__((always_inline)); inline void p9_cme_pstate_register() __attribute__((always_inline)); inline void p9_cme_pstate_db0_start() __attribute__((always_inline)); inline void p9_cme_pstate_db0_glb_bcast() __attribute__((always_inline)); -inline void p9_cme_pstate_db0_suspend() __attribute__((always_inline)); +inline void p9_cme_pstate_db0_stop() __attribute__((always_inline)); inline void p9_cme_pstate_db0_clip_bcast() __attribute__((always_inline)); inline void p9_cme_pstate_db0_safe_mode() __attribute__((always_inline)); inline void p9_cme_pstate_freq_update() __attribute__((always_inline)); @@ -390,12 +390,12 @@ inline void p9_cme_pstate_process_db0() //It's important that we do it in if (G_cme_flags & BIT32(CME_FLAGS_CORE0_GOOD)) { - out32_sh(CME_LCL_EISR_CLR, BIT32(4)); + out32_sh(CME_LCL_EISR_CLR, BIT64SH(36)); CME_GETSCOM(CPPM_CMEDB0, CME_MASK_C0, G_dbData.value); } else if (G_cme_flags & BIT32(CME_FLAGS_CORE1_GOOD)) { - out32_sh(CME_LCL_EISR_CLR, BIT32(5)); + out32_sh(CME_LCL_EISR_CLR, BIT64SH(37)); CME_GETSCOM(CPPM_CMEDB0, CME_MASK_C1, G_dbData.value); } @@ -442,7 +442,7 @@ inline void p9_cme_pstate_process_db0() else if((G_dbData.fields.cme_message_number0 == MSGID_DB0_STOP_PSTATE_BROADCAST) && (G_cme_flags & BIT32(CME_FLAGS_PSTATES_ENABLED))) { - p9_cme_pstate_db0_suspend(); + p9_cme_pstate_db0_stop(); } //Pmin or Pmax Update else if(G_dbData.fields.cme_message_number0 == MSGID_DB0_CLIP_BROADCAST) @@ -522,16 +522,16 @@ inline void p9_cme_pstate_register() //Wait until DB0 is written again if (G_cme_flags & BIT32(CME_FLAGS_CORE0_GOOD)) { - while(!(in32_sh(CME_LCL_EISR) & BIT32(4))) {} + while(!(in32_sh(CME_LCL_EISR) & BIT64SH(36))) {} - out32_sh(CME_LCL_EISR_CLR, BIT32(4)); + out32_sh(CME_LCL_EISR_CLR, BIT64SH(36)); CME_GETSCOM(CPPM_CMEDB0, CME_MASK_C0, G_dbData.value); } else { - while(!(in32_sh(CME_LCL_EISR) & BIT32(5))) {} + while(!(in32_sh(CME_LCL_EISR) & BIT64SH(37))) {} - out32_sh(CME_LCL_EISR_CLR, BIT32(5)); + out32_sh(CME_LCL_EISR_CLR, BIT64SH(37)); CME_GETSCOM(CPPM_CMEDB0, CME_MASK_C1, G_dbData.value); } @@ -634,11 +634,11 @@ inline void p9_cme_pstate_db0_glb_bcast(cppm_cmedb0_t dbData) } // -//Doorbell0 Suspend +//Doorbell0 Pstate Stop // -inline void p9_cme_pstate_db0_suspend() +inline void p9_cme_pstate_db0_stop() { - PK_TRACE_INF("DB_TH: DB0 Suspend Enter\n"); + PK_TRACE_INF("DB_TH: DB0 Stop Enter\n"); ppm_pig_t ppmPigData; out32(CME_LCL_FLAGS_CLR, BIT32(24));//Set Pstates Disabled @@ -647,6 +647,8 @@ inline void p9_cme_pstate_db0_suspend() out32_sh(CME_LCL_EIMR_OR, BITS64SH(34, 2)); g_eimr_override |= BITS64(34, 2); + //PGPE will update the LMCR[0] before sending the STOP PSTATE Doorbell. + //Here we update the PMSR to indicate that Pstates are no longer honored accordingly. p9_cme_pstate_pmsr_updt(G_cme_record.core_enabled); p9_cme_pstate_notify_sib(); //Notify sibling @@ -659,7 +661,7 @@ inline void p9_cme_pstate_db0_suspend() //Set Core GPMMR RESET_STATE_INDICATOR bit to show pstates have stopped CME_PUTSCOM(PPM_GPMMR_OR, G_cme_record.core_enabled, BIT64(15)); - PK_TRACE_INF("DB_TH: DB0 Suspend Exit\n"); + PK_TRACE_INF("DB_TH: DB0 Stop Exit\n"); } inline void p9_cme_pstate_db0_clip_bcast() |

