summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRahul Batra <rbatra@us.ibm.com>2018-01-16 10:53:41 -0600
committerJoshua Hunsberger <jahunsbe@us.ibm.com>2018-02-01 16:20:23 -0600
commitdab30d1e806523225cdc166ff7d52405fed21122 (patch)
tree230c5b8edac379bfe5bf767bf58daa591f9c3e07
parentf3f430d6403b89e0ceb4c230896d53b4a48e4062 (diff)
downloadtalos-hcode-dab30d1e806523225cdc166ff7d52405fed21122.tar.gz
talos-hcode-dab30d1e806523225cdc166ff7d52405fed21122.zip
PGPE: Intermittent Local Pstate Rollback Fix
Key_Cronus_Test=PM_REGRESS Change-Id: I0911e4a73cbbed3b8d16c6d0dbfc91dbf2f76ba5 Original-Change-Id: I4b49f1254328b8286754ad0140a5d22e920751a5 CQ: SW414108 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/52005 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Michael S. Floyd <mfloyd@us.ibm.com> Reviewed-by: YUE DU <daviddu@us.ibm.com> Tested-by: Cronus HW CI <cronushw-ci+hostboot@us.ibm.com> Dev-Ready: Gregory S. Still <stillgs@us.ibm.com> Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA <prasadbgr@in.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
-rw-r--r--import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c b/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c
index 11425f6e..58e68a78 100644
--- a/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c
+++ b/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c
@@ -1458,14 +1458,7 @@ void p9_pgpe_pstate_do_step()
{
if(G_pgpe_pstate_record.activeQuads & QUAD_MASK(q))
{
- if (G_pgpe_pstate_record.quadPSTarget[q] > G_pgpe_pstate_record.globalPSNext) //Keep localPS under GlobalPS
- {
- G_pgpe_pstate_record.quadPSNext[q] = G_pgpe_pstate_record.globalPSNext;
- }
- else
- {
- G_pgpe_pstate_record.quadPSNext[q] = G_pgpe_pstate_record.quadPSTarget[q];
- }
+ G_pgpe_pstate_record.quadPSNext[q] = G_pgpe_pstate_record.quadPSTarget[q];
}
}
@@ -1665,6 +1658,18 @@ void p9_pgpe_pstate_freq_updt()
db0.fields.quad4_ps = G_pgpe_pstate_record.quadPSNext[4];
db0.fields.quad5_ps = G_pgpe_pstate_record.quadPSNext[5];
+ //Ensure quadPS is not lower numbered(higher freq/volt) than globalPS
+ if ((G_pgpe_pstate_record.quadPSNext[0] < G_pgpe_pstate_record.globalPSNext) ||
+ (G_pgpe_pstate_record.quadPSNext[1] < G_pgpe_pstate_record.globalPSNext) ||
+ (G_pgpe_pstate_record.quadPSNext[2] < G_pgpe_pstate_record.globalPSNext) ||
+ (G_pgpe_pstate_record.quadPSNext[3] < G_pgpe_pstate_record.globalPSNext) ||
+ (G_pgpe_pstate_record.quadPSNext[4] < G_pgpe_pstate_record.globalPSNext) ||
+ (G_pgpe_pstate_record.quadPSNext[5] < G_pgpe_pstate_record.globalPSNext))
+ {
+ PK_TRACE_ERR("FREQ: Invalid Freq Updt. quadPS < globalPS");
+ PGPE_PANIC_AND_TRACE(PGPE_INVALID_FREQ_UPDT);
+ }
+
p9_pgpe_optrace(ACTL_BROADCAST);
p9_pgpe_send_db0(db0.value,
G_pgpe_pstate_record.activeDB,
OpenPOWER on IntegriCloud