diff options
| author | Rahul Batra <rbatra@us.ibm.com> | 2018-05-14 16:09:04 -0500 |
|---|---|---|
| committer | hostboot <hostboot@us.ibm.com> | 2018-05-23 10:55:19 -0500 |
| commit | 503d2e402b13825ecee60d357ccf1fac62bf1ee7 (patch) | |
| tree | f692d5ce613534db36a09388f23c64a223dd731c | |
| parent | a327175c6427ac21d98f5d8f2de1dac488f81a8b (diff) | |
| download | talos-hcode-503d2e402b13825ecee60d357ccf1fac62bf1ee7.tar.gz talos-hcode-503d2e402b13825ecee60d357ccf1fac62bf1ee7.zip | |
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 <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: RANGANATHPRASAD G. BRAHMASAMUDRA <prasadbgr@in.ibm.com>
Reviewed-by: YUE DU <daviddu@us.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 | 6 |
1 files 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; |

