summaryrefslogtreecommitdiffstats
path: root/src/usr/isteps/istep06
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/isteps/istep06')
-rw-r--r--src/usr/isteps/istep06/call_host_update_master_tpm.C28
-rw-r--r--src/usr/isteps/istep06/call_host_voltage_config.C6
-rw-r--r--src/usr/isteps/istep06/host_discover_targets.C65
-rw-r--r--src/usr/isteps/istep06/host_gard.C1
-rw-r--r--src/usr/isteps/istep06/host_init_fsi.C1
5 files changed, 89 insertions, 12 deletions
diff --git a/src/usr/isteps/istep06/call_host_update_master_tpm.C b/src/usr/isteps/istep06/call_host_update_master_tpm.C
index 284d43450..fa374f279 100644
--- a/src/usr/isteps/istep06/call_host_update_master_tpm.C
+++ b/src/usr/isteps/istep06/call_host_update_master_tpm.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2015,2018 */
+/* Contributors Listed Below - COPYRIGHT 2015,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -31,6 +31,8 @@
#include <trustedbootif.H>
#include <initservice/isteps_trace.H>
#include <secureboot/service.H>
+#include <secureboot/phys_presence_if.H>
+#include <config.h>
namespace ISTEP_06
{
@@ -39,7 +41,7 @@ void* call_host_update_master_tpm( void *io_pArgs )
{
ISTEP_ERROR::IStepError l_stepError;
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"call_host_update_master_tpm entry" );
errlHndl_t l_err = nullptr;
@@ -67,10 +69,28 @@ void* call_host_update_master_tpm( void *io_pArgs )
ERRORLOG::errlCommit( l_err, SECURE_COMP_ID );
}
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_host_update_master_tpm exit" );
+ // Check for Physical Presence
+#ifdef CONFIG_PHYS_PRES_PWR_BUTTON
+ l_err = SECUREBOOT::detectPhysPresence();
+ if (l_err)
+ {
+ // @TODO RTC 210301 - Handle Error Log Correctly, but for now
+ // just delete it
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_host_update_master_tpm: Error back from "
+ "SECUREBOOT::detectPhysPresence: rc=0x%X, plid=0x%X. "
+ "Deleting error for now",
+ ERRL_GETRC_SAFE(l_err), ERRL_GETPLID_SAFE(l_err));
+ delete l_err;
+ l_err = nullptr;
+ }
+#endif
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_host_update_master_tpm exit" );
return l_stepError.getErrorHandle();
+
+
}
};
diff --git a/src/usr/isteps/istep06/call_host_voltage_config.C b/src/usr/isteps/istep06/call_host_voltage_config.C
index 6cb647e9b..5e7b0eb94 100644
--- a/src/usr/isteps/istep06/call_host_voltage_config.C
+++ b/src/usr/isteps/istep06/call_host_voltage_config.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2016,2018 */
+/* Contributors Listed Below - COPYRIGHT 2016,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -489,7 +489,7 @@ void* call_host_voltage_config( void *io_pArgs )
l_err->addHwCallout(l_proc,
HWAS::SRCI_PRIORITY_HIGH,
- HWAS::DECONFIG,
+ HWAS::DELAYED_DECONFIG,
HWAS::GARD_NULL );
// Create IStep error log and
@@ -538,7 +538,7 @@ void* call_host_voltage_config( void *io_pArgs )
l_err->addHwCallout(l_proc,
HWAS::SRCI_PRIORITY_HIGH,
- HWAS::DECONFIG,
+ HWAS::DELAYED_DECONFIG,
HWAS::GARD_NULL );
// Create IStep error log and
diff --git a/src/usr/isteps/istep06/host_discover_targets.C b/src/usr/isteps/istep06/host_discover_targets.C
index 89e0dd8dd..7884056c1 100644
--- a/src/usr/isteps/istep06/host_discover_targets.C
+++ b/src/usr/isteps/istep06/host_discover_targets.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. */
/* */
@@ -59,6 +59,7 @@
//SBE interfacing
#include <sbeio/sbeioif.H>
#include <sys/misc.h>
+#include <sbe/sbeif.H>
#include <p9_query_core_access_state.H>
#include <p9_setup_sbe_config.H>
@@ -618,13 +619,71 @@ void* host_discover_targets( void *io_pArgs )
errlCommit (l_err, ISTEP_COMP_ID);
}
} // end if (l_pMasterProcChip)
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "host_discover_targets exit" );
#ifdef CONFIG_PRINT_SYSTEM_INFO
print_system_info();
#endif
+ // Handle the case where we don't have a valid memory map swap victim due
+ // to a module swap - See TARGETING::adjustMemoryMap()
+ if( l_pTopLevel->getAttr<TARGETING::ATTR_FORCE_SBE_UPDATE>()
+ == TARGETING::FORCE_SBE_UPDATE_BAR_MISMATCH )
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "Forcing SBE update to handle swapped memory map" );
+ l_err = SBE::updateProcessorSbeSeeproms();
+ if(l_err)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "host_discover_targets: Error calling updateProcessorSbeSeeproms");
+ l_stepError.addErrorDetails( l_err );
+ errlCommit( l_err, ISTEP_COMP_ID );
+ }
+
+ // We should never get here, if we do that means the SBE update didn't
+ // actually happen. That is a problem since we're currently running
+ // with mismatched BAR data
+ TARGETING::ATTR_XSCOM_BASE_ADDRESS_type l_xscom =
+ l_pMasterProcChip->getAttr<TARGETING::ATTR_XSCOM_BASE_ADDRESS>();
+ TARGETING::ATTR_PROC_EFF_FABRIC_GROUP_ID_type l_group =
+ l_pMasterProcChip->getAttr<TARGETING::ATTR_PROC_EFF_FABRIC_GROUP_ID>();
+ TARGETING::ATTR_PROC_EFF_FABRIC_CHIP_ID_type l_chip =
+ l_pMasterProcChip->getAttr<TARGETING::ATTR_PROC_EFF_FABRIC_CHIP_ID>();
+ /*@
+ * @errortype
+ * @moduleid ISTEP::MOD_DISCOVER_TARGETS
+ * @reasoncode ISTEP::RC_CANNOT_BOOT_WITH_MISMATCHED_BARS
+ * @userdata1 Current XSCOM BAR
+ * @userdata2[0-31] Desired ATTR_PROC_EFF_FABRIC_GROUP_ID
+ * @userdata2[32:63] Desired ATTR_PROC_EFF_FABRIC_GROUP_ID
+ * @devdesc Not able to update the SBE to correct the BAR mismatch
+ * @custdesc Required module update failed
+ */
+ l_err = new ERRORLOG::ErrlEntry(
+ ERRORLOG::ERRL_SEV_UNRECOVERABLE,
+ ISTEP::MOD_DISCOVER_TARGETS,
+ ISTEP::RC_CANNOT_BOOT_WITH_MISMATCHED_BARS,
+ l_xscom,
+ TWO_UINT32_TO_UINT64(
+ l_group,
+ l_chip));
+
+ l_err->addHwCallout( l_pMasterProcChip,
+ HWAS::SRCI_PRIORITY_HIGH,
+ HWAS::NO_DECONFIG,
+ HWAS::GARD_NULL );
+
+ l_err->collectTrace(TARG_COMP_NAME);
+ l_err->collectTrace(SBE_COMP_NAME);
+ l_err->collectTrace("ISTEPS_TRACE",256);
+
+ // Create IStep error log and cross ref error that occurred
+ l_stepError.addErrorDetails( l_err );
+ errlCommit( l_err, ISTEP_COMP_ID );
+ }
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "host_discover_targets exit" );
+
return l_stepError.getErrorHandle();
}
diff --git a/src/usr/isteps/istep06/host_gard.C b/src/usr/isteps/istep06/host_gard.C
index 4a9852e17..1f16c866c 100644
--- a/src/usr/isteps/istep06/host_gard.C
+++ b/src/usr/isteps/istep06/host_gard.C
@@ -51,7 +51,6 @@
#include <console/consoleif.H>
// Custom compile configs
-#include <config.h>
#ifdef CONFIG_DRTM
#include <secureboot/drtm.H>
diff --git a/src/usr/isteps/istep06/host_init_fsi.C b/src/usr/isteps/istep06/host_init_fsi.C
index 2e294893e..455068633 100644
--- a/src/usr/isteps/istep06/host_init_fsi.C
+++ b/src/usr/isteps/istep06/host_init_fsi.C
@@ -37,7 +37,6 @@
#include <isteps/hwpisteperror.H>
#include <attributeenums.H>
#include <secureboot/trustedbootif.H>
-#include <config.h>
//Targeting
#include <targeting/common/commontargeting.H>
OpenPOWER on IntegriCloud