summaryrefslogtreecommitdiffstats
path: root/src/occ_405/proc
diff options
context:
space:
mode:
authorAndres Lugo-Reyes <aalugore@us.ibm.com>2018-02-01 13:20:27 -0600
committerMartha Broyles <mbroyles@us.ibm.com>2018-02-12 13:02:00 -0500
commitfca494dbdcf944718a577bfe0e3c6c01aabb1a69 (patch)
tree780d309e273d95a39ed8fc51537b34d15c64c5d8 /src/occ_405/proc
parentccdb19fba8c7b6e8623178d38564703896f4510b (diff)
downloadtalos-occ-fca494dbdcf944718a577bfe0e3c6c01aabb1a69.tar.gz
talos-occ-fca494dbdcf944718a577bfe0e3c6c01aabb1a69.zip
Replace Firmware Level with FClip History in error log
-Throttle noisy traces -Add slave clip history to Call Home log Change-Id: If498c4c5b7e445d7b1b43fb16a2790f11166e430 CMVC-Prereq: 1045167 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/53578 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Christopher J. Cain <cjcain@us.ibm.com> Reviewed-by: Martha Broyles <mbroyles@us.ibm.com>
Diffstat (limited to 'src/occ_405/proc')
-rwxr-xr-xsrc/occ_405/proc/proc_data_control.c6
-rwxr-xr-xsrc/occ_405/proc/proc_pstate.c55
2 files changed, 51 insertions, 10 deletions
diff --git a/src/occ_405/proc/proc_data_control.c b/src/occ_405/proc/proc_data_control.c
index a52cfac..2b793d0 100755
--- a/src/occ_405/proc/proc_data_control.c
+++ b/src/occ_405/proc/proc_data_control.c
@@ -56,7 +56,7 @@ extern GpeRequest G_pmcr_set_req;
extern bool G_state_transition_occuring; // A state transition is currently going on?
-extern uint8_t G_allow_trace_flags;
+extern uint16_t G_allow_trace_flags;
// a global flag used by task_core_data_control() to indicate
// that the OCC is ready to transition to observation state
// (after initiatibg a clip update IPC task if needed)
@@ -123,7 +123,7 @@ void task_core_data_control( task_t * i_task )
// pclip of highest quad frequency corresponds to a frequency higher than legacy turbo
if(pclip < l_pstate)
{
- if( G_allow_trace_flags & PGPE_ALLOW_CLIP_TRACE )
+ if( G_allow_trace_flags & ALLOW_CLIP_TRACE )
{
TRAC_INFO("task_core_data_control: updating clip max to pstate 0x%02X (from 0x%02X)", l_pstate, pclip);
}
@@ -198,7 +198,7 @@ void task_core_data_control( task_t * i_task )
{
L_last = pstateList;
- if( G_allow_trace_flags & PGPE_ALLOW_PMCR_TRACE )
+ if( G_allow_trace_flags & ALLOW_PMCR_TRACE )
{
TRAC_INFO("task_core_data_control: calling pmcr_set() w/pstates: 0x%08X%04X",
WORD_HIGH(pstateList), WORD_LOW(pstateList)>>16);
diff --git a/src/occ_405/proc/proc_pstate.c b/src/occ_405/proc/proc_pstate.c
index 12e3ac1..f78eb41 100755
--- a/src/occ_405/proc/proc_pstate.c
+++ b/src/occ_405/proc/proc_pstate.c
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER OnChipController Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2011,2017 */
+/* Contributors Listed Below - COPYRIGHT 2011,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -49,6 +49,9 @@ extern opal_mem_voting_reason_t G_amec_opal_mem_throt_reason;
//Global OCC Pstate Parameters Block Structure
extern OCCPstateParmBlock G_oppb;
+//Trace flags
+extern uint16_t G_allow_trace_flags;
+
//Holds Fmax for ease of proc_freq2pstate calculation = max(fturbo,futurbo)
uint16_t G_proc_fmax_mhz;
@@ -459,6 +462,9 @@ void check_for_opal_updates(void)
bool dynamic_data_change = false;
bool l_log_crit_error = false;
static uint8_t L_num_bce_checks = 0;
+ static bool L_first_throttle_trace = true;
+ static bool L_first_unthrottle_trace = true;
+ static bool L_first_mem_trace = true;
// check if BCE for previous change finished and now need to notify host
if(G_opal_table_update_state == OPAL_TABLE_UPDATE_NOTIFY_HOST)
@@ -517,18 +523,52 @@ void check_for_opal_updates(void)
else if(G_opal_dynamic_table.dynamic.proc_throt_status != G_amec_opal_proc_throt_reason)
{
dynamic_data_change = true;
- TRAC_INFO("check_for_opal_updates: processor throttle status change - 0x%02X->0x%02X",
- G_opal_dynamic_table.dynamic.proc_throt_status, G_amec_opal_proc_throt_reason);
+
+ // Only want to trace the first time we throttle, and the first
+ // time we unthrottle. If ALLOW_OPAL_TRACE is set, trace every time
+ bool l_trace = false;
+ if( (G_allow_trace_flags & ALLOW_OPAL_TRACE) ||
+ (L_first_throttle_trace) )
+ {
+ l_trace = true;
+ L_first_throttle_trace = false;
+ }
+ else if( (G_amec_opal_proc_throt_reason == 0) &&
+ (L_first_unthrottle_trace) )
+ {
+ l_trace = true;
+ L_first_unthrottle_trace = false;
+ }
+
+ if(l_trace)
+ {
+ TRAC_INFO("check_for_opal_updates: "
+ "processor throttle status change - 0x%02X->0x%02X",
+ G_opal_dynamic_table.dynamic.proc_throt_status,
+ G_amec_opal_proc_throt_reason);
+ }
}
// check if memory throttle status or Quick Power Drop changed
if( (G_opal_dynamic_table.dynamic.mem_throt_status != G_amec_opal_mem_throt_reason) ||
- (G_opal_dynamic_table.dynamic.quick_power_drop != AMEC_INTF_GET_OVERSUBSCRIPTION()) )
+ (G_opal_dynamic_table.dynamic.quick_power_drop != AMEC_INTF_GET_OVERSUBSCRIPTION()) )
{
dynamic_data_change = true;
- TRAC_INFO("check_for_opal_updates: memory throttle status - 0x%02X->0x%02X QPD - 0x%02X->0x%02X",
- G_opal_dynamic_table.dynamic.mem_throt_status, G_amec_opal_mem_throt_reason,
- G_opal_dynamic_table.dynamic.quick_power_drop, AMEC_INTF_GET_OVERSUBSCRIPTION());
+
+ if( (G_allow_trace_flags & ALLOW_OPAL_TRACE ) ||
+ (L_first_mem_trace) ||
+ (G_opal_dynamic_table.dynamic.quick_power_drop !=
+ AMEC_INTF_GET_OVERSUBSCRIPTION()) )
+ {
+ TRAC_INFO("check_for_opal_updates:"
+ " memory throttle status - 0x%02X->0x%02X"
+ " QPD - 0x%02X->0x%02X",
+ G_opal_dynamic_table.dynamic.mem_throt_status,
+ G_amec_opal_mem_throt_reason,
+ G_opal_dynamic_table.dynamic.quick_power_drop,
+ AMEC_INTF_GET_OVERSUBSCRIPTION());
+ L_first_mem_trace = false;
+ }
}
// check for OCC state change
@@ -622,6 +662,7 @@ void check_for_opal_updates(void)
commitErrl(&l_errl);
}
}
+
}
OpenPOWER on IntegriCloud