diff options
author | Rahul Batra <rbatra@us.ibm.com> | 2017-09-15 08:48:28 -0500 |
---|---|---|
committer | Joshua Hunsberger <jahunsbe@us.ibm.com> | 2017-10-23 19:21:01 -0500 |
commit | 634c93d5c11293cb7c3418e7bdf6fd6afa684fdc (patch) | |
tree | cc7af2039ddbd37c6437ff52232c083b901563de /import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c | |
parent | 0be08fe5de5f5924f6665282153774d7605492cf (diff) | |
download | talos-hcode-634c93d5c11293cb7c3418e7bdf6fd6afa684fdc.tar.gz talos-hcode-634c93d5c11293cb7c3418e7bdf6fd6afa684fdc.zip |
PGPE: Quad Registration Pstate Fix
Change-Id: Iae9cb4a12a6fc06bd0fc9fea558a17871b676ff1
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/46314
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Brian T. Vanderpool <vanderp@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/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c')
-rw-r--r-- | import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c | 20 |
1 files changed, 12 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 f65342bd..faffeff1 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 @@ -418,7 +418,7 @@ void p9_pgpe_pstate_updt_actual_quad(uint32_t quadsVector) //p9_pgpe_send_db0 // //Sends DB0 to CMEs -void p9_pgpe_send_db0(uint64_t db0, uint32_t coreVector, uint32_t unicast, uint32_t ack) +void p9_pgpe_send_db0(uint64_t db0, uint32_t coreVector, uint32_t unicast, uint32_t ack, uint32_t ackVector) { uint32_t c; @@ -453,7 +453,7 @@ void p9_pgpe_send_db0(uint64_t db0, uint32_t coreVector, uint32_t unicast, uint3 if (ack == PGPE_DB0_ACK_WAIT_CME) { - p9_pgpe_wait_cme_db_ack(G_pgpe_pstate_record.activeQuads);//Wait for ACKs from all QuadManagers + p9_pgpe_wait_cme_db_ack(ackVector);//Wait for ACKs from all QuadManagers } } @@ -482,7 +482,7 @@ void p9_pgpe_wait_cme_db_ack(uint32_t quadAckExpect) opit4Clr |= (opit4prQuad << ((MAX_QUADS - q + 1) << 2)); PK_TRACE_DBG("DBW: GotAck from %d", q); } - else if(!(G_pgpe_pstate_record.pendQuadsRegistration & QUAD_MASK(q))) + else if(!(G_pgpe_pstate_record.pendQuadsRegisterReceive & QUAD_MASK(q))) { PK_TRACE_ERR("DBW:Unexpected qCME[%u] ACK", q); PGPE_PANIC_AND_TRACE(PGPE_CME_UNEXPECTED_DB0_ACK); @@ -693,7 +693,8 @@ void p9_pgpe_pstate_start(uint32_t pstate_start_origin) p9_pgpe_send_db0(db0.value, G_pgpe_pstate_record.activeCores, PGPE_DB0_UNICAST, - PGPE_DB0_ACK_WAIT_CME); + PGPE_DB0_ACK_WAIT_CME, + G_pgpe_pstate_record.activeQuads); G_pgpe_pstate_record.globalPSCurr = G_pgpe_pstate_record.globalPSTarget; @@ -807,7 +808,8 @@ void p9_pgpe_pstate_stop() p9_pgpe_send_db0(db0_stop.value, G_pgpe_pstate_record.activeCores, PGPE_DB0_UNICAST, - PGPE_DB0_ACK_WAIT_CME); + PGPE_DB0_ACK_WAIT_CME, + G_pgpe_pstate_record.activeQuads); uint32_t occScr2 = in32(OCB_OCCS2); occScr2 &= ~BIT32(PGPE_PSTATE_PROTOCOL_ACTIVE); @@ -852,7 +854,8 @@ void p9_pgpe_pstate_clip_bcast(uint32_t clip_bcast_type) p9_pgpe_send_db0(db0.value, G_pgpe_pstate_record.activeCores, PGPE_DB0_UNICAST, - PGPE_DB0_ACK_WAIT_CME); + PGPE_DB0_ACK_WAIT_CME, + G_pgpe_pstate_record.activeQuads); } // @@ -997,7 +1000,7 @@ void p9_pgpe_pstate_process_quad_exit(uint32_t quadsRequested) //Add quads to pending registration list. They are taken out when //registration msg from the quad is received. - G_pgpe_pstate_record.pendQuadsRegistration |= quadsRequested; + G_pgpe_pstate_record.pendQuadsRegisterReceive |= quadsRequested; //ACK back to SGPE /* ipc_async_cmd_t* async_cmd = (ipc_async_cmd_t*)G_pgpe_pstate_record.ipcPendTbl[IPC_PEND_SGPE_ACTIVE_QUADS_UPDT].cmd; @@ -1417,7 +1420,8 @@ void p9_pgpe_pstate_freq_updt() p9_pgpe_send_db0(db0.value, G_pgpe_pstate_record.activeCores, PGPE_DB0_MULTICAST, - PGPE_DB0_ACK_WAIT_CME); + PGPE_DB0_ACK_WAIT_CME, + G_pgpe_pstate_record.activeQuads); p9_pgpe_optrace(ACK_ACTL_DONE); PK_TRACE_DBG("FREQ: Exit"); |