diff options
author | mbroyles <mbroyles@us.ibm.com> | 2018-02-08 16:47:04 -0600 |
---|---|---|
committer | Christopher J. Cain <cjcain@us.ibm.com> | 2018-02-16 15:33:29 -0500 |
commit | 919b78927d26c079ac3234128e09c548920f3487 (patch) | |
tree | 01bee21ecf054f12029392122073af008d28a413 /src/occ_405/pgpe | |
parent | fca494dbdcf944718a577bfe0e3c6c01aabb1a69 (diff) | |
download | talos-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.c | 32 |
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 { |