From 503d2e402b13825ecee60d357ccf1fac62bf1ee7 Mon Sep 17 00:00:00 2001 From: Rahul Batra Date: Mon, 14 May 2018 16:09:04 -0500 Subject: PGPE: Correctly Set retActQuads during Safe Mode Key_Cronus_Test=PM_REGRESS Change-Id: I14a93245405ab1575675dee1140f33b9d6fde8bf CQ: SW427212 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/58794 Tested-by: Jenkins Server Tested-by: Cronus HW CI Tested-by: FSP CI Jenkins Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA Reviewed-by: YUE DU Reviewed-by: Gregory S. Still --- .../chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c | 6 ++++-- 1 file changed, 4 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 20de38c0..365e8e0f 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 @@ -1494,13 +1494,15 @@ void p9_pgpe_pstate_safe_mode() } //ACK back to SGPE with "IPC_SGPE_PGPE_RC_SUCCESS" + //At this point, every quad is at safe Pstate, so no need to to move quad's frequency. Also, + //system is at safe frequency/voltage, so need to interlock with OCC for a quad exit. Simply, + //ACK back to SGPE, so that it can complete STOP11 Exit. if (G_pgpe_pstate_record.ipcPendTbl[IPC_PEND_SGPE_ACTIVE_QUADS_UPDT].pending_ack == 1) { async_cmd = (ipc_async_cmd_t*)G_pgpe_pstate_record.ipcPendTbl[IPC_PEND_SGPE_ACTIVE_QUADS_UPDT].cmd; ipcmsg_s2p_update_active_quads_t* args = (ipcmsg_s2p_update_active_quads_t*)async_cmd->cmd_data; - p9_pgpe_pstate_process_quad_exit_notify(args->fields.requested_quads << 2); - //activeQuads isn't updated until registration, so we OR with requested quads. + G_pgpe_pstate_record.pReqActQuads->fields.requested_active_quads |= (args->fields.requested_quads << 2); args->fields.return_active_quads = G_pgpe_pstate_record.pReqActQuads->fields.requested_active_quads >> 2; args->fields.return_code = IPC_SGPE_PGPE_RC_SUCCESS; G_pgpe_pstate_record.ipcPendTbl[IPC_PEND_SGPE_ACTIVE_QUADS_UPDT].pending_ack = 0; -- cgit v1.2.3