summaryrefslogtreecommitdiffstats
path: root/import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_intercme.c
diff options
context:
space:
mode:
authorRahul Batra <rbatra@us.ibm.com>2017-02-20 08:47:45 -0600
committerJoshua Hunsberger <jahunsbe@us.ibm.com>2017-10-23 17:13:39 -0500
commit8448cd993431805ee6b1d75ba21ea7b7a2bb3c70 (patch)
treeddaeeb49ea5dab59fbdb30ce90037a97c5fc6559 /import/chips/p9/procedures/ppe_closed/cme/pstate_cme/p9_cme_intercme.c
parentcb658ba8f6374cc81e848e45ccfdacc7ac091ce4 (diff)
downloadtalos-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.c40
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");
}
OpenPOWER on IntegriCloud