summaryrefslogtreecommitdiffstats
path: root/src/usr
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr')
-rw-r--r--src/usr/isteps/istep15/host_start_stop_engine.C32
-rw-r--r--src/usr/isteps/pm/occCheckstop.C19
2 files changed, 31 insertions, 20 deletions
diff --git a/src/usr/isteps/istep15/host_start_stop_engine.C b/src/usr/isteps/istep15/host_start_stop_engine.C
index d7824a8af..a6b3ba8fd 100644
--- a/src/usr/isteps/istep15/host_start_stop_engine.C
+++ b/src/usr/isteps/istep15/host_start_stop_engine.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2016 */
+/* Contributors Listed Below - COPYRIGHT 2016,2017 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -58,6 +58,22 @@ void* host_start_stop_engine (void *io_pArgs)
errlHndl_t l_errl = NULL;
do {
+#ifdef CONFIG_IPLTIME_CHECKSTOP_ANALYSIS
+ uint64_t l_writeData;
+ size_t l_writeSize = sizeof(l_writeData);
+
+ TARGETING::Target* l_proc = NULL;
+ TARGETING::targetService().masterProcChipTargetHandle(l_proc);
+
+ l_errl = deviceRead(l_proc, &l_writeData, l_writeSize,
+ DEVICE_SCOM_ADDRESS(0x6C004));
+ if(l_errl)
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "host_start_stop_engine: failed to read OIMR0 interrupt mask");
+ break;
+ }
+#endif
//Use targeting code to get a list of all processors
TARGETING::TargetHandleList l_procChips;
getAllChips( l_procChips, TARGETING::TYPE_PROC );
@@ -82,6 +98,20 @@ void* host_start_stop_engine (void *io_pArgs)
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "host_start_stop_engine:: failed on proc with HUID : %d",TARGETING::get_huid(l_procChip) );
}
}
+#ifdef CONFIG_IPLTIME_CHECKSTOP_ANALYSIS
+ // Starting SGPE in istep15.4 causes OIMR0 register to be improperly
+ // reset, which breaks the xstop analysis flow during IPL. A hack
+ // is to write the original contents of that register back if
+ // the IPL checkstop flag is enabled.
+ l_errl = deviceWrite(l_proc, &l_writeData, l_writeSize,
+ DEVICE_SCOM_ADDRESS(0x6C004));
+ if(l_errl)
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "host_start_stop_engine: failed to reset OIMR0 interrupt mask");
+ break;
+ }
+#endif
}while (0);
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_host_start_stop_engine exit" );
diff --git a/src/usr/isteps/pm/occCheckstop.C b/src/usr/isteps/pm/occCheckstop.C
index 8c8fb2a0a..476638d98 100644
--- a/src/usr/isteps/pm/occCheckstop.C
+++ b/src/usr/isteps/pm/occCheckstop.C
@@ -119,25 +119,6 @@ namespace HBOCC
do {
// ************************************************************
- // Initialize Cores and Quads
- // ************************************************************
- FAPI_DBG("Executing p9_pm_corequad_init to"
- " initialize cores & quads");
- FAPI_INVOKE_HWP(l_errl, p9_pm_corequad_init,
- l_target,
- p9pm::PM_INIT,
- 0,//CME FIR MASK for reset
- 0,//Core Error Mask for reset
- 0 //Quad Error Mask for reset
- );
- if(l_errl)
- {
- TRACFCOMP(g_fapiTd,
- "ERROR: Failed to initialize cores & quads");
- break;
- }
-
- // ************************************************************
// Issue init to OCB
// ************************************************************
FAPI_DBG("Executing p9_pm_ocb_init to initialize OCB channels");
OpenPOWER on IntegriCloud