summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRahul Batra <rbatra@us.ibm.com>2018-04-25 16:04:46 -0500
committerhostboot <hostboot@us.ibm.com>2018-04-28 10:28:33 -0500
commitfc9d466b31fede5902ec7dd223275ab64367ea27 (patch)
tree8772695e27e012690e00c8afd08f554db5c13c94
parent29168cdee489450b618b0741c15fa263ee979e2b (diff)
downloadtalos-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.c13
-rw-r--r--import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_thread_process_requests.c15
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
OpenPOWER on IntegriCloud