diff options
| author | Rahul Batra <rbatra@us.ibm.com> | 2018-04-25 16:04:46 -0500 |
|---|---|---|
| committer | hostboot <hostboot@us.ibm.com> | 2018-04-28 10:28:33 -0500 |
| commit | fc9d466b31fede5902ec7dd223275ab64367ea27 (patch) | |
| tree | 8772695e27e012690e00c8afd08f554db5c13c94 | |
| parent | 29168cdee489450b618b0741c15fa263ee979e2b (diff) | |
| download | talos-hcode-fc9d466b31fede5902ec7dd223275ab64367ea27.tar.gz talos-hcode-fc9d466b31fede5902ec7dd223275ab64367ea27.zip | |
PGPE: Fix SGPE-PGPE Cores Updt Interaction during Safe Mode and WOF Disbale
Key_Cronus_Test=PM_REGRESS
Change-Id: I387d53829923f61f409e29933bd5c7c1b191598c
CQ: SW426716
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/57852
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Cronus HW CI <cronushw-ci+hostboot@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>
| -rw-r--r-- | import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c | 13 | ||||
| -rw-r--r-- | import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_thread_process_requests.c | 15 |
2 files changed, 24 insertions, 4 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 234be95b..37c54705 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 @@ -1509,11 +1509,20 @@ void p9_pgpe_pstate_safe_mode() { async_cmd = (ipc_async_cmd_t*)G_pgpe_pstate_record.ipcPendTbl[IPC_PEND_SGPE_ACTIVE_CORES_UPDT].cmd; ipcmsg_s2p_update_active_cores_t* args = (ipcmsg_s2p_update_active_cores_t*)async_cmd->cmd_data; - G_pgpe_pstate_record.activeCores &= ~(args->fields.active_cores << 8); + + if (args->fields.update_type == UPDATE_ACTIVE_CORES_TYPE_ENTRY) + { + G_pgpe_pstate_record.activeCores &= ~(args->fields.active_cores << 8); + } + else + { + G_pgpe_pstate_record.activeCores |= (args->fields.active_cores << 8); + } + args->fields.return_active_cores = G_pgpe_pstate_record.activeCores >> 8; - args->fields.return_code = IPC_SGPE_PGPE_RC_SUCCESS; G_pgpe_pstate_record.ipcPendTbl[IPC_PEND_SGPE_ACTIVE_CORES_UPDT].pending_ack = 0; ipc_send_rsp(G_pgpe_pstate_record.ipcPendTbl[IPC_PEND_SGPE_ACTIVE_CORES_UPDT].cmd, IPC_RC_SUCCESS); + args->fields.return_code = IPC_SGPE_PGPE_RC_SUCCESS; } ///Disable WOF, so that PGPE doesn't interlock with OCC anymore diff --git a/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_thread_process_requests.c b/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_thread_process_requests.c index c8dccb78..c68ad583 100644 --- a/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_thread_process_requests.c +++ b/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_thread_process_requests.c @@ -227,9 +227,20 @@ inline void p9_pgpe_process_sgpe_updt_active_cores() } else { + if (args->fields.update_type == UPDATE_ACTIVE_CORES_TYPE_ENTRY) + { + G_pgpe_pstate_record.activeCores &= ~(args->fields.active_cores << 8); + } + else + { + G_pgpe_pstate_record.activeCores |= (args->fields.active_cores << 8); + } + args->fields.return_active_cores = G_pgpe_pstate_record.activeCores >> 8; - ack_now = 1; - PK_TRACE_DBG("PTH: Core Updt(WOF_Disabled) Ack Only"); + + PK_TRACE_INF("PTH: Core Updt(WOF_Disabled) Ack Only numActiveCores=0x%x,activeCores=0x%x", + G_pgpe_pstate_record.numActiveCores, G_pgpe_pstate_record.activeCores); + } } else |

