diff options
author | Rahul Batra <rbatra@us.ibm.com> | 2017-02-20 08:47:45 -0600 |
---|---|---|
committer | Joshua Hunsberger <jahunsbe@us.ibm.com> | 2017-10-23 17:13:39 -0500 |
commit | 8448cd993431805ee6b1d75ba21ea7b7a2bb3c70 (patch) | |
tree | ddaeeb49ea5dab59fbdb30ce90037a97c5fc6559 /import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_intercme.c | |
parent | cb658ba8f6374cc81e848e45ccfdacc7ac091ce4 (diff) | |
download | talos-hcode-8448cd993431805ee6b1d75ba21ea7b7a2bb3c70.tar.gz talos-hcode-8448cd993431805ee6b1d75ba21ea7b7a2bb3c70.zip |
WOF/PGPE Bug Fixes(Set 2)
-Fixes Inter-CME interrupt issue
-Fixed back to back CLIP Updt issue
-reverses CLIP_UPDT clip_min and clip_max(as per OCC)
-Fixes AVS_Driver issues
-Moved VPD points from GeneratedPstateInfo to Global Parm
-Added nest frequency field to OCCParmBlock
-Picking up slopes from Global Parm
Change-Id: I7578a8a51efde59f0678b9c3f44be77bf7a15603
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/36741
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA <prasadbgr@in.ibm.com>
Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com>
Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
Diffstat (limited to 'import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_intercme.c')
-rw-r--r-- | import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_intercme.c | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_intercme.c b/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_intercme.c index 45860434..4e3ac93d 100644 --- a/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_intercme.c +++ b/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_intercme.c @@ -55,38 +55,55 @@ void p9_cme_pstate_intercme_in0_handler(void* arg, PkIrqId irq) int32_t c = 0; PkMachineContext ctx; - PK_TRACE("INTERCME_IN0: Enter\n"); + PK_TRACE("INTER0: Enter\n"); for (c = 0; c < CORES_PER_EX; c++ ) { if (cme_flags & (CME_FLAGS_CORE0_GOOD >> c)) { + if (c == 0) + { + CME_GETSCOM(CPPM_CMEDB0, CME_MASK_C0, CME_SCOM_EQ, dbData.value); + + } + else + { + CME_GETSCOM(CPPM_CMEDB0, CME_MASK_C1, CME_SCOM_EQ, dbData.value); + } + + //Determine PMSR + localPS = (dbData.value >> + ((MAX_QUADS - G_cme_pstate_record.quadNum - 1) << 3)) & 0xFF; + pmsrData = (dbData.value << 8) & 0xFF00000000000000; + pmsrData |= ((uint64_t)localPS << 48) & 0x00FF000000000000; + PK_TRACE_INF("INTER0:C%d PMSR=0x%08x%08x\n", c, pmsrData >> 32, pmsrData); + if(dbData.fields.cme_message_number0 == MSGID_DB0_START_PSTATE_BROADCAST) { - PK_TRACE("INTERCME_IN0: DB0 Start\n"); + PK_TRACE("INTER0:C%d DB0 Start\n", c); + out64((CME_LCL_PMSRS0 + (c << 5)), pmsrData); + //Clear any pending PMCR interrupts out32_sh(CME_LCL_EISR_CLR, BIT32(2) >> c); out32_sh(CME_LCL_EIMR_CLR, BIT32(2) >> c);//Enable PMCR0/1 + } else if(dbData.fields.cme_message_number0 == MSGID_DB0_GLOBAL_ACTUAL_BROADCAST) { - PK_TRACE("INTERCME_IN0: DB0 GlbBcast\n"); - localPS = (dbData.value >> - ((MAX_QUADS - G_cme_pstate_record.quadNum - 1) << 8)) & 0xFF; - pmsrData = (dbData.value << 8) & 0xFF00000000000000; - pmsrData |= ((uint64_t)localPS << 48) & 0x00FF000000000000; + PK_TRACE("INTER0:C%d DB0 GlbBcast\n", c); out64((CME_LCL_PMSRS0 + (c << 5)), pmsrData); - out32_sh(CME_LCL_EISR_CLR, BIT32(4) >> c);//Clear DB0_C0 } else if(dbData.fields.cme_message_number0 == MSGID_DB0_STOP_PSTATE_BROADCAST) { - PK_TRACE("INTERCME_IN0: DB0 Stop\n"); - out32_sh(CME_LCL_EIMR_OR, BIT32(2) >> c);//Enable PMCR0/1 + PK_TRACE("INTER0:C%d DB0 Stop\n"); + out32_sh(CME_LCL_EIMR_OR, BIT32(2) >> c);//Disable PMCR0/1 } else { pk_halt(); } + + out32_sh(CME_LCL_EISR_CLR, BIT32(4) >> c);//Clear DB0_C0/C1 } } @@ -95,5 +112,6 @@ void p9_cme_pstate_intercme_in0_handler(void* arg, PkIrqId irq) out32(CME_LCL_EISR_CLR, BIT32(7));//Clear InterCME_IN0 pk_irq_vec_restore(&ctx); - PK_TRACE("INTERCME_IN0: Exit\n"); + + PK_TRACE("INTER0: Exit\n"); } |