From fca494dbdcf944718a577bfe0e3c6c01aabb1a69 Mon Sep 17 00:00:00 2001 From: Andres Lugo-Reyes Date: Thu, 1 Feb 2018 13:20:27 -0600 Subject: 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 Reviewed-by: Christopher J. Cain Reviewed-by: Martha Broyles --- src/occ_405/proc/proc_data_control.c | 6 ++-- src/occ_405/proc/proc_pstate.c | 55 +++++++++++++++++++++++++++++++----- 2 files changed, 51 insertions(+), 10 deletions(-) (limited to 'src/occ_405/proc') 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); } } + } -- cgit v1.2.1