summaryrefslogtreecommitdiffstats
path: root/src/occ_405/pgpe
diff options
context:
space:
mode:
authormbroyles <mbroyles@us.ibm.com>2018-02-08 16:47:04 -0600
committerChristopher J. Cain <cjcain@us.ibm.com>2018-02-16 15:33:29 -0500
commit919b78927d26c079ac3234128e09c548920f3487 (patch)
tree01bee21ecf054f12029392122073af008d28a413 /src/occ_405/pgpe
parentfca494dbdcf944718a577bfe0e3c6c01aabb1a69 (diff)
downloadtalos-occ-919b78927d26c079ac3234128e09c548920f3487.tar.gz
talos-occ-919b78927d26c079ac3234128e09c548920f3487.zip
Characterization state meltbox support
Prevent temperature timeout errors during state transition Misc state characterization and observation state change fixes Change-Id: Ideeaab96689b145ed960aef5743b8c3947e4ffeb Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/53674 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Andres A. Lugo-Reyes <aalugore@us.ibm.com> Reviewed-by: Christopher J. Cain <cjcain@us.ibm.com>
Diffstat (limited to 'src/occ_405/pgpe')
-rw-r--r--src/occ_405/pgpe/pgpe_interface.c32
1 files changed, 16 insertions, 16 deletions
diff --git a/src/occ_405/pgpe/pgpe_interface.c b/src/occ_405/pgpe/pgpe_interface.c
index 991f6cf..625978d 100644
--- a/src/occ_405/pgpe/pgpe_interface.c
+++ b/src/occ_405/pgpe/pgpe_interface.c
@@ -43,8 +43,9 @@
// Maximum waiting time (usec) for clip update IPC task
#define CLIP_UPDATE_TIMEOUT 100 // maximum waiting time (usec) for clip update IPC task
-extern pstateStatus G_proc_pstate_status;
-extern PMCR_OWNER G_proc_pmcr_owner;
+extern volatile pstateStatus G_proc_pstate_status;
+extern volatile PMCR_OWNER G_proc_pmcr_owner;
+extern volatile bool G_set_pStates;
extern uint16_t G_proc_fmax_mhz;
extern uint32_t G_present_cores;
@@ -66,8 +67,8 @@ GPE_BUFFER(ipcmsg_start_stop_t G_start_suspend_parms);
GPE_BUFFER(ipcmsg_wof_control_t G_wof_control_parms);
GPE_BUFFER(ipcmsg_wof_vfrt_t G_wof_vfrt_parms);
-// Used to track failure of start_suspend callback
-int G_ss_pgpe_rc; // pgpe return codes
+// Used to track PGPE return code of start_suspend callback
+volatile int G_ss_pgpe_rc = PGPE_RC_SUCCESS;
// Function Specification
@@ -644,9 +645,10 @@ int pgpe_clip_update(void)
G_clip_update_parms.ps_val_clip_max[quad] = G_desired_pstate[quad];
}
-
- if (pstate_list != L_last_list)
+ // Always send request on PowerVM, on OPAL only send the request if there was a change or need to force a send
+ if( (pstate_list != L_last_list) || (!G_sysConfigData.system_type.kvm) || (G_set_pStates) )
{
+ G_set_pStates = FALSE;
if (L_first_trace)
{
TRAC_IMP("pgpe_clip_update: Scheduling clip update: min[0x%02X], max[0x%08X%04X]",
@@ -654,20 +656,18 @@ int pgpe_clip_update(void)
WORD_HIGH(pstate_list), WORD_LOW(pstate_list)>>16);
L_first_trace = FALSE;
}
- else
+ // always trace change on PowerVM since setting clips is very rare with PowerVM which uses PMCR set
+ else if( (G_allow_trace_flags & ALLOW_CLIP_TRACE) || (!G_sysConfigData.system_type.kvm) )
{
- if(G_allow_trace_flags & ALLOW_CLIP_TRACE)
- {
- TRAC_INFO("pgpe_clip_update: Scheduling clip update: min[0x%02X], max[0x%08X%04X]",
- G_clip_update_parms.ps_val_clip_min[0],
- WORD_HIGH(pstate_list), WORD_LOW(pstate_list)>>16);
- }
+ TRAC_INFO("pgpe_clip_update: Scheduling clip update: min[0x%02X], max[0x%08X%04X]",
+ G_clip_update_parms.ps_val_clip_min[0],
+ WORD_HIGH(pstate_list), WORD_LOW(pstate_list)>>16);
}
L_last_list = pstate_list;
- }
- // Schedule PGPE clip update IPC task
- schedule_rc = pgpe_request_schedule(&G_clip_update_req);
+ // Schedule PGPE clip update IPC task
+ schedule_rc = pgpe_request_schedule(&G_clip_update_req);
+ }
}
else
{
OpenPOWER on IntegriCloud