summaryrefslogtreecommitdiffstats
path: root/import
diff options
context:
space:
mode:
authorRahul Batra <rbatra@us.ibm.com>2018-05-09 10:44:04 -0500
committerhostboot <hostboot@us.ibm.com>2018-05-11 10:29:34 -0500
commit898f0008601c8df6c411e6b766c497ee3381c726 (patch)
tree5c24ced2e86107fbf354d67665d9dcabad4cfc1b /import
parent23e14209606e85dfcc2d394495c86be56513b4d3 (diff)
downloadtalos-hcode-898f0008601c8df6c411e6b766c497ee3381c726.tar.gz
talos-hcode-898f0008601c8df6c411e6b766c497ee3381c726.zip
PGPE: Correctly write DB0 when used as DB3 payload
- When DB0 is used as payload for DB3, it should be written even if db0 value to be written is all zeroes. Key_Cronus_Test=PM_REGRESS Change-Id: I4acd634e817c0cac4acc1d2c9d42405af8ef5095 CQ: SW425931 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/58580 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: Steven Sombar <ssombar@us.ibm.com> Reviewed-by: YUE DU <daviddu@us.ibm.com> Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA <prasadbgr@in.ibm.com> Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
Diffstat (limited to 'import')
-rw-r--r--import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c8
-rw-r--r--import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.h5
2 files changed, 11 insertions, 2 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 63099099..16b8fec0 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
@@ -487,7 +487,7 @@ void p9_pgpe_send_db3(db3_parms_t p)
{
if (p.targetCores & CORE_MASK(c))
{
- if(p.db0val)
+ if(p.writeDB0 == PGPE_DB3_WRITE_DB0)
{
GPE_PUTSCOM(GPE_SCOM_ADDR_CORE(CPPM_CMEDB0, c), p.db0val)
}
@@ -631,6 +631,7 @@ void p9_pgpe_handle_nacks(uint32_t origTargetCores, uint32_t origExpectedAckFrom
db3_parms_t p;
p.db3val = (uint64_t)MSGID_DB3_REPLAY_DB0 << 56;
p.db0val = 0;
+ p.writeDB0 = PGPE_DB3_SKIP_WRITE_DB0;
p.waitForAcks = PGPE_DB_ACK_WAIT_CME;
p.checkNACKs = PGPE_DB3_SKIP_CHECK_NACKS;
@@ -1455,6 +1456,7 @@ void p9_pgpe_pstate_safe_mode()
db0.fields.msg_id = MSGID_DB0_DB3_PAYLOAD;
p.db3val = (uint64_t)MSGID_DB3_ENTER_SAFE_MODE << 56;
p.db0val = db0.value;
+ p.writeDB0 = PGPE_DB3_WRITE_DB0;
p.targetCores = G_pgpe_pstate_record.activeDB;
p.waitForAcks = PGPE_DB_ACK_WAIT_CME;
p.expectedAckFrom = G_pgpe_pstate_record.activeQuads;
@@ -1590,6 +1592,7 @@ void p9_pgpe_pstate_sgpe_fault()
//2. PGPE sends all active CMEs a DB3 to disable SGPE Handoff
p.db3val = (uint64_t)MSGID_DB3_DISABLE_SGPE_HANDOFF << 56;
p.db0val = 0;
+ p.writeDB0 = PGPE_DB3_SKIP_WRITE_DB0;
p.targetCores = G_pgpe_pstate_record.activeDB;
p.waitForAcks = PGPE_DB_ACK_WAIT_CME;
p.expectedAckFrom = G_pgpe_pstate_record.activeQuads;
@@ -1972,6 +1975,7 @@ void p9_pgpe_pstate_freq_updt()
db0.fields.msg_id = MSGID_DB0_DB3_PAYLOAD;
db3_parms_t p = {MSGID_DB3_HIGH_PRIORITY_PSTATE,
db0.value,
+ PGPE_DB3_WRITE_DB0,
G_pgpe_pstate_record.activeDB,
PGPE_DB_ACK_WAIT_CME,
G_pgpe_pstate_record.activeQuads,
@@ -2048,6 +2052,7 @@ inline void p9_pgpe_droop_throttle()
db3_parms_t p;
p.db3val = (uint64_t)MSGID_DB3_SUSPEND_STOP_ENTRY << 56;
p.db0val = 0;
+ p.writeDB0 = PGPE_DB3_SKIP_WRITE_DB0;
p.targetCores = G_pgpe_pstate_record.activeDB;
p.waitForAcks = PGPE_DB_ACK_SKIP; //We skip ACKs here bc CME will set CME_FLAGS[]
p.expectedAckFrom = G_pgpe_pstate_record.activeQuads;
@@ -2130,6 +2135,7 @@ inline void p9_pgpe_droop_unthrottle()
db3_parms_t p;
p.db3val = (uint64_t)MSGID_DB3_UNSUSPEND_STOP_ENTRY << 56;
p.db0val = 0;
+ p.writeDB0 = PGPE_DB3_SKIP_WRITE_DB0;
p.targetCores = G_pgpe_pstate_record.activeDB;
p.waitForAcks = PGPE_DB_ACK_WAIT_CME;
p.expectedAckFrom = G_pgpe_pstate_record.activeQuads;
diff --git a/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.h b/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.h
index e05c144e..169e1f90 100644
--- a/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.h
+++ b/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.h
@@ -92,7 +92,9 @@ enum PSTATE_DB
PGPE_DB0_TYPE_UNICAST = 0,
PGPE_DB0_TYPE_MULTICAST = 1,
PGPE_DB3_SKIP_CHECK_NACKS = 0,
- PGPE_DB3_CHECK_NACKS = 1
+ PGPE_DB3_CHECK_NACKS = 1,
+ PGPE_DB3_SKIP_WRITE_DB0 = 0,
+ PGPE_DB3_WRITE_DB0 = 1
};
enum SEMAPHORE_PROCESS_POST_SRC
@@ -206,6 +208,7 @@ typedef struct db3_parms
{
uint64_t db3val;
uint64_t db0val;
+ uint32_t writeDB0;
uint32_t targetCores;
uint32_t waitForAcks;
uint32_t expectedAckFrom;
OpenPOWER on IntegriCloud