summaryrefslogtreecommitdiffstats
path: root/src/occ_405/main.c
diff options
context:
space:
mode:
authorWilliam Bryan <wilbryan@us.ibm.com>2017-04-28 09:34:16 -0500
committerWilliam A. Bryan <wilbryan@us.ibm.com>2017-04-28 15:14:00 -0400
commiteb9cdf57261295ee7c4c745acce6e15653bfa857 (patch)
treefdd1c2cd5345ab6dee224cf3b99c80efabf7cc44 /src/occ_405/main.c
parent6bc1827d25df20ea4dbb40129897110b2cc251a8 (diff)
downloadtalos-occ-eb9cdf57261295ee7c4c745acce6e15653bfa857.tar.gz
talos-occ-eb9cdf57261295ee7c4c745acce6e15653bfa857.zip
Don't log an error within PGPE callback
Change-Id: I619513860541b7a98664b42894be5b9dd5f7ed30 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/39811 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> Reviewed-by: Martha Broyles <mbroyles@us.ibm.com> Reviewed-by: William A. Bryan <wilbryan@us.ibm.com>
Diffstat (limited to 'src/occ_405/main.c')
-rwxr-xr-xsrc/occ_405/main.c34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/occ_405/main.c b/src/occ_405/main.c
index 3169fc8..2b8affc 100755
--- a/src/occ_405/main.c
+++ b/src/occ_405/main.c
@@ -61,12 +61,14 @@
#include <gpe_register_addresses.h>
#include <p9_pstates_occ.h>
#include <wof.h>
+#include "pgpe_service_codes.h"
extern uint32_t __ssx_boot; // Function address is 32 bits
extern uint32_t G_occ_phantom_critical_count;
extern uint32_t G_occ_phantom_noncritical_count;
extern uint8_t G_occ_interrupt_type;
extern uint8_t G_occ_role;
+extern pstateStatus G_proc_pstate_status;
extern GpeRequest G_meas_start_request;
extern GpeRequest G_meas_cont_request;
@@ -90,7 +92,7 @@ ppmr_header_t G_ppmr_header; // PPMR Header layout format
pgpe_header_data_t G_pgpe_header; // Selected fields from PGPE Header
OCCPstateParmBlock G_oppb; // OCC Pstate Parameters Block Structure
extern uint16_t G_proc_fmax_mhz; // max(turbo,uturbo) frequencies
-
+extern int G_ss_pgpe_rc;
// Set main thread timer for one second
#define MAIN_THRD_TIMER_SLICE ((SsxInterval) SSX_SECONDS(1))
@@ -1776,6 +1778,36 @@ void Main_thread_routine(void *private)
REQUEST_RESET(l_err);
}
+
+ // Check to make sure that the start_suspend PGPE job did not fail
+ if( (G_proc_pstate_status == PSTATES_FAILED) &&
+ (FALSE == isSafeStateRequested()) &&
+ (CURRENT_STATE() != OCC_STATE_SAFE) &&
+ (CURRENT_STATE() != OCC_STATE_STANDBY) )
+ {
+ /* @
+ * @errortype
+ * @moduleid MAIN_THRD_ROUTINE_MID
+ * @reasoncode PGPE_FAILURE
+ * @userdata1 start_suspend rc
+ * @userdata2 0
+ * @userdata4 ERC_PGPE_UNSUCCESSFULL
+ * @devdesc PGPE returned an error in response to start_suspend
+ */
+ errlHndl_t l_err = createErrl(
+ MAIN_THRD_ROUTINE_MID, // modId
+ PGPE_FAILURE, // reasoncode
+ ERC_PGPE_UNSUCCESSFULL, // Extended reason code
+ ERRL_SEV_UNRECOVERABLE, // Severity
+ NULL, // Trace Buf
+ DEFAULT_TRACE_SIZE, // Trace Size
+ G_ss_pgpe_rc, // userdata1
+ 0 // userdata2
+ );
+
+ REQUEST_RESET(l_err);
+ }
+
} // while loop
}
OpenPOWER on IntegriCloud