summaryrefslogtreecommitdiffstats
path: root/src/usr/isteps/istep21
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/isteps/istep21')
-rw-r--r--src/usr/isteps/istep21/call_host_runtime_setup.C69
-rw-r--r--src/usr/isteps/istep21/call_host_start_payload.C96
-rw-r--r--src/usr/isteps/istep21/call_nvdimm_update.C3
-rw-r--r--src/usr/isteps/istep21/call_update_ucd_flash.C1
-rw-r--r--src/usr/isteps/istep21/freqAttrData.C3
5 files changed, 51 insertions, 121 deletions
diff --git a/src/usr/isteps/istep21/call_host_runtime_setup.C b/src/usr/isteps/istep21/call_host_runtime_setup.C
index 4a87ddefd..db0fc2d5f 100644
--- a/src/usr/isteps/istep21/call_host_runtime_setup.C
+++ b/src/usr/isteps/istep21/call_host_runtime_setup.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2015,2019 */
+/* Contributors Listed Below - COPYRIGHT 2015,2020 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -23,7 +23,6 @@
/* */
/* IBM_PROLOG_END_TAG */
-#include <config.h>
#include <errl/errlentry.H>
#include <errl/errlmanager.H>
#include <initservice/isteps_trace.H>
@@ -68,8 +67,12 @@
#ifdef CONFIG_NVDIMM
#include "call_nvdimm_update.H"
+#include <isteps/nvdimm/nvdimm.H>
#endif
+#include <dump/dumpif.H>
+
+
using namespace ERRORLOG;
using namespace ISTEP;
using namespace ISTEP_ERROR;
@@ -290,8 +293,8 @@ errlHndl_t verifyAndMovePayload(void)
break;
}
- // If in Secure Mode Verify PHYP at Temporary TCE-related Memory Location
- if (SECUREBOOT::enabled() && is_phyp)
+ // If in Secure Mode Verify Payload at Temporary TCE-related Memory Location
+ if (SECUREBOOT::enabled())
{
TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,"verifyAndMovePayload() "
"Verifying PAYLOAD: physAddr=0x%.16llX, virtAddr=0x%.16llX",
@@ -736,6 +739,19 @@ void* call_host_runtime_setup (void *io_pArgs)
errlCommit(l_err, ISTEP_COMP_ID);
pmStartSuccess = false;
}
+ else
+ {
+#ifdef CONFIG_NVDIMM
+ // Arm the nvdimms
+ // Only get here if is_sapphire_load and PM started and have NVDIMMs
+ TARGETING::TargetHandleList l_nvdimmTargetList;
+ NVDIMM::nvdimm_getNvdimmList(l_nvdimmTargetList);
+ if (l_nvdimmTargetList.size() != 0)
+ {
+ NVDIMM::nvdimmArm(l_nvdimmTargetList);
+ }
+#endif
+ }
#ifdef CONFIG_HTMGT
// Report PM status to HTMGT
@@ -767,7 +783,7 @@ void* call_host_runtime_setup (void *io_pArgs)
uint8_t l_skip_fir_attr_reset = 1;
// Since we are not leaving the PM complex alive, we will
// explicitly put it into reset and clean up any memory
- l_err = HBPM::resetPMAll(HBPM::RESET_AND_CLEAR_ATTRIBUTES,
+ l_err = HBPM::resetPMAll(HBPM::RESET_AND_CLEAR_ATTRIBUTES,
l_skip_fir_attr_reset);
if (l_err)
{
@@ -846,11 +862,20 @@ void* call_host_runtime_setup (void *io_pArgs)
break;
}
}
-
+
// Update the MDRT Count and PDA Table Entries from Attribute
TargetService& l_targetService = targetService();
Target* l_sys = nullptr;
l_targetService.getTopLevelTarget(l_sys);
+
+ // Default captured data to 0s -- MPIPL if check fills in if
+ // valid
+ uint32_t threadRegSize = sizeof(DUMP::hostArchRegDataHdr)+
+ (95 * sizeof(DUMP::hostArchRegDataEntry));
+ uint8_t threadRegFormat = REG_DUMP_SBE_HB_STRUCT_VER;
+ uint64_t capThreadArrayAddr = 0;
+ uint64_t capThreadArraySize = 0;
+
if(l_sys->getAttr<ATTR_IS_MPIPL_HB>())
{
uint32_t l_mdrtCount =
@@ -862,25 +887,23 @@ void* call_host_runtime_setup (void *io_pArgs)
l_mdrtCount);
}
- // Update PDA Table entries
- if ( !INITSERVICE::spBaseServicesEnabled() )
- {
- uint32_t threadRegSize =
- l_sys->getAttr<TARGETING::ATTR_PDA_THREAD_REG_ENTRY_SIZE>();
- uint8_t threadRegFormat =
- l_sys->getAttr<TARGETING::ATTR_PDA_THREAD_REG_STATE_ENTRY_FORMAT>();
- uint64_t capThreadArrayAddr =
- l_sys->getAttr<TARGETING::ATTR_PDA_CAPTURED_THREAD_REG_ARRAY_ADDR>();
- uint64_t capThreadArraySize =
- l_sys->getAttr<TARGETING::ATTR_PDA_CAPTURED_THREAD_REG_ARRAY_SIZE>();
-
- // Ignore return value
- RUNTIME::updateHostProcDumpActual( RUNTIME::PROC_DUMP_AREA_TBL,
- threadRegSize, threadRegFormat,
- capThreadArrayAddr, capThreadArraySize);
- }
+
+ threadRegSize =
+ l_sys->getAttr<TARGETING::ATTR_PDA_THREAD_REG_ENTRY_SIZE>();
+ threadRegFormat =
+ l_sys->getAttr<TARGETING::ATTR_PDA_THREAD_REG_STATE_ENTRY_FORMAT>();
+ capThreadArrayAddr =
+ l_sys->getAttr<TARGETING::ATTR_PDA_CAPTURED_THREAD_REG_ARRAY_ADDR>();
+ capThreadArraySize =
+ l_sys->getAttr<TARGETING::ATTR_PDA_CAPTURED_THREAD_REG_ARRAY_SIZE>();
}
+ // Ignore return value
+ RUNTIME::updateHostProcDumpActual( RUNTIME::PROC_DUMP_AREA_TBL,
+ threadRegSize, threadRegFormat,
+ capThreadArrayAddr, capThreadArraySize);
+
+
//Update the MDRT value (for MS Dump)
l_err = RUNTIME::writeActualCount(RUNTIME::MS_DUMP_RESULTS_TBL);
if(l_err != NULL)
diff --git a/src/usr/isteps/istep21/call_host_start_payload.C b/src/usr/isteps/istep21/call_host_start_payload.C
index f8cfd3172..85bf3c9f5 100644
--- a/src/usr/isteps/istep21/call_host_start_payload.C
+++ b/src/usr/isteps/istep21/call_host_start_payload.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2015,2018 */
+/* Contributors Listed Below - COPYRIGHT 2015,2019 */
/* [+] Google Inc. */
/* [+] International Business Machines Corp. */
/* */
@@ -54,7 +54,6 @@
#include <p9n2_quad_scom_addresses_fld.H>
#include <p9_quad_scom_addresses.H>
#include <ipmi/ipmiwatchdog.H>
-#include <config.h>
#include <errno.h>
#include <p9_int_scom.H>
#include <sbeio/sbeioif.H>
@@ -110,15 +109,6 @@ errlHndl_t broadcastShutdown ( uint64_t i_hbInstance );
errlHndl_t enableCoreCheckstops();
/**
- * @brief This function will clear the PORE BARs. Needs to be done
- * depending on payload type
- *
- * @return errlHndl_t - nullptr if successful, otherwise a pointer to the error
- * log.
- */
-errlHndl_t clearPoreBars ( void );
-
-/**
* @brief This function will check the Istep mode and send the appropriate
* mailbox message to the Fsp to indicate what we're doing.
*
@@ -479,19 +469,6 @@ errlHndl_t callShutdown ( uint64_t i_masterInstance,
break;
}
- if(is_phyp_load())
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "calling clearPoreBars() in node");
-
- //If PHYP then clear out the PORE BARs
- err = clearPoreBars();
- if( err )
- {
- break;
- }
- }
-
// Get Target Service, and the system target.
TargetService& tS = targetService();
TARGETING::Target* sys = nullptr;
@@ -793,77 +770,6 @@ errlHndl_t enableCoreCheckstops()
return l_errl;
}
-/**
- * @brief This function will clear the PORE BARs. Needs to be done
- * depending on payload type
- *
- * @return errlHndl_t - nullptr if successful, otherwise a pointer to the error
- * log.
- */
-errlHndl_t clearPoreBars ( void )
-{
- errlHndl_t l_errl = nullptr;
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "set PORE bars back to 0" );
-
- TARGETING::TargetHandleList l_procTargetList;
- getAllChips(l_procTargetList, TYPE_PROC);
-
- // loop thru all the cpus and reset the pore bars.
- for (TargetHandleList::const_iterator
- l_proc_iter = l_procTargetList.begin();
- l_proc_iter != l_procTargetList.end();
- ++l_proc_iter)
- {
- // make a local copy of the CPU target
- const TARGETING::Target* l_proc_target = *l_proc_iter;
-
- // trace HUID
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "target HUID %.8X", TARGETING::get_huid(l_proc_target));
-
- //@TODO RTC:133848 cast OUR type of target to a FAPI type of target.
-#if 0
- fapi::Target l_fapi_proc_target( TARGET_TYPE_PROC_CHIP,
- (const_cast<TARGETING::Target*>(
- l_proc_target)) );
-
- // reset pore bar notes:
- // A mem_size of 0 means to ignore the image address
- // This image should have been moved to memory after winkle
-
- // call the HWP with each fapi::Target
- FAPI_INVOKE_HWP( l_errl,
- p8_set_pore_bar,
- l_fapi_proc_target,
- 0,
- 0,
- 0,
- SLW_MEMORY
- );
-#endif
- if ( l_errl )
- {
- // capture the target data in the elog
- ERRORLOG::ErrlUserDetailsTarget(l_proc_target).addToLog( l_errl );
-
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR : p8_set_pore_bar, PLID=0x%x",
- l_errl->plid() );
- break;
- }
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : p8_set_pore_bar" );
- }
-
- } // end for
-
- return l_errl;
-}
-
//
// Notify the Fsp via Mailbox Message
//
diff --git a/src/usr/isteps/istep21/call_nvdimm_update.C b/src/usr/isteps/istep21/call_nvdimm_update.C
index 1204adb61..be1f5b22d 100644
--- a/src/usr/isteps/istep21/call_nvdimm_update.C
+++ b/src/usr/isteps/istep21/call_nvdimm_update.C
@@ -68,6 +68,9 @@ void call_nvdimm_update()
TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
"call_nvdimm_update(): nvdimm update failed");
}
+
+ // Set the threshold warnings
+ NVDIMM::nvdimm_thresholds(l_nvdimmTargetList);
}
TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,EXIT_MRK"call_nvdimm_update()");
diff --git a/src/usr/isteps/istep21/call_update_ucd_flash.C b/src/usr/isteps/istep21/call_update_ucd_flash.C
index 46d843579..89032ddd3 100644
--- a/src/usr/isteps/istep21/call_update_ucd_flash.C
+++ b/src/usr/isteps/istep21/call_update_ucd_flash.C
@@ -30,7 +30,6 @@
#include <util/utilmclmgr.H>
#include <errl/errlmanager.H>
#include <hbotcompid.H>
-#include <config.h>
#include <initservice/isteps_trace.H>
#include <isteps/ucd/updateUcdFlash.H>
#include <secureboot/trustedbootif.H>
diff --git a/src/usr/isteps/istep21/freqAttrData.C b/src/usr/isteps/istep21/freqAttrData.C
index 9dc60bfff..ed8c7df4a 100644
--- a/src/usr/isteps/istep21/freqAttrData.C
+++ b/src/usr/isteps/istep21/freqAttrData.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2011,2018 */
+/* Contributors Listed Below - COPYRIGHT 2011,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -48,7 +48,6 @@
#include <sys/time.h>
#include <sys/vfs.h>
#include <arch/ppc.H>
-#include <config.h>
#include <mbox/ipc_msg_types.H>
#include <fapi2.H>
OpenPOWER on IntegriCloud