diff options
-rw-r--r-- | src/usr/diag/attn/runtime/attn_rt.C | 29 | ||||
-rw-r--r-- | src/usr/diag/attn/runtime/attn_rt.mk | 13 | ||||
-rw-r--r-- | src/usr/isteps/istep08/call_proc_xbus_enable_ridi.C | 3 | ||||
-rw-r--r-- | src/usr/isteps/istep10/call_proc_chiplet_scominit.C | 3 | ||||
-rw-r--r-- | src/usr/isteps/nest/makefile | 1 | ||||
-rw-r--r-- | src/usr/isteps/nest/nestHwpHelperFuncs.C | 8 | ||||
-rw-r--r-- | src/usr/isteps/nest/nestHwpHelperFuncs.H | 1 |
7 files changed, 55 insertions, 3 deletions
diff --git a/src/usr/diag/attn/runtime/attn_rt.C b/src/usr/diag/attn/runtime/attn_rt.C index 9102acbaf..a82cdb7d2 100644 --- a/src/usr/diag/attn/runtime/attn_rt.C +++ b/src/usr/diag/attn/runtime/attn_rt.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2014,2017 */ +/* Contributors Listed Below - COPYRIGHT 2014,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -37,6 +37,10 @@ #include <errno.h> #include <prdf/common/prdfMain_common.H> +#include <p9_io_obus_firmask_save_restore.H> +#include <fapi2_target.H> // fapi2::Target +#include <fapi2/plat_hwp_invoker.H> // FAPI_INVOKE_HWP + using namespace std; using namespace TARGETING; using namespace ATTN; @@ -57,8 +61,29 @@ namespace ATTN_RT do { + // Get a list of all the processors in the system + TARGETING::TargetHandleList l_targetList; + getAllChips(l_targetList, TARGETING::TYPE_PROC); + // Loop through all processors chip targets + for (const auto & l_target: l_targetList) + { + const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>l_fapi2Target(l_target); + // Restore firmask values that were stored in attributes after chiplet_scominit. + // Now that we are in HBRT , OBUS peer targets are known so it is okay to + // re-enable the firs that we masked off during Hostboot IPL + FAPI_INVOKE_HWP(err, + p9_io_obus_firmask_save_restore, + l_fapi2Target, p9iofirmasksaverestore::RESTORE); + if(err) + { + // Commit error but don't fail, we lose debug capabilties but this + // should not fail the boot + errlCommit(err, FAPI2_COMP_ID); + } + } + err = initialize(); - if ( nullptr != err ) + if (err) { ATTN_ERR( "ATTN_RT::enableAttns: Failed to initialize PRD" ); diff --git a/src/usr/diag/attn/runtime/attn_rt.mk b/src/usr/diag/attn/runtime/attn_rt.mk index ced2fd88e..4919b1e9a 100644 --- a/src/usr/diag/attn/runtime/attn_rt.mk +++ b/src/usr/diag/attn/runtime/attn_rt.mk @@ -5,7 +5,7 @@ # # OpenPOWER HostBoot Project # -# Contributors Listed Below - COPYRIGHT 2012,2014 +# Contributors Listed Below - COPYRIGHT 2012,2018 # [+] International Business Machines Corp. # # @@ -23,5 +23,16 @@ # # IBM_PROLOG_END_TAG + +EXTRAINCDIR += ${ROOTPATH}/src/import/hwpf/fapi2/include/ +EXTRAINCDIR += ${ROOTPATH}/src/include/usr/fapi2/ +EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/io/ +EXTRAINCDIR += ${ROOTPATH}/src/import/chips/common/utils/imageProcs/ +EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/ffdc/ +EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/common/include/ + +VPATH += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/io/ + ATTN_RT_OBJS += attn_rt.o ATTN_RT_OBJS += attnsvc.o +ATTN_RT_OBJS += p9_io_obus_firmask_save_restore.o
\ No newline at end of file diff --git a/src/usr/isteps/istep08/call_proc_xbus_enable_ridi.C b/src/usr/isteps/istep08/call_proc_xbus_enable_ridi.C index 8a0a651e7..c34047bd2 100644 --- a/src/usr/isteps/istep08/call_proc_xbus_enable_ridi.C +++ b/src/usr/isteps/istep08/call_proc_xbus_enable_ridi.C @@ -82,12 +82,15 @@ void* call_proc_xbus_enable_ridi( void *io_pArgs ) if (INITSERVICE::isSMPWrapConfig()) { // Make the FAPI call to p9_chiplet_scominit + // Make the FAPI call to p9_io_obus_firmask_save_restore, if previous call succeeded // Make the FAPI call to p9_psi_scominit, if previous call succeeded // Make the FAPI call to p9_io_obus_scominit, if previous call succeeded // Make the FAPI call to p9_npu_scominit, if previous call succeeded // Make the FAPI call to p9_chiplet_enable_ridi, if previous call succeeded fapiHWPCallWrapperHandler(P9_CHIPLET_SCOMINIT, l_stepError, HWPF_COMP_ID, TYPE_PROC) && + fapiHWPCallWrapperHandler(P9_OBUS_FIRMASK_SAVE_RESTORE, l_stepError, + HWPF_COMP_ID, TYPE_PROC) && fapiHWPCallWrapperHandler(P9_PSI_SCOMINIT, l_stepError, HWPF_COMP_ID, TYPE_PROC) && fapiHWPCallWrapperHandler(P9_IO_OBUS_SCOMINIT, l_stepError, diff --git a/src/usr/isteps/istep10/call_proc_chiplet_scominit.C b/src/usr/isteps/istep10/call_proc_chiplet_scominit.C index 6493aa7d1..8e2950163 100644 --- a/src/usr/isteps/istep10/call_proc_chiplet_scominit.C +++ b/src/usr/isteps/istep10/call_proc_chiplet_scominit.C @@ -77,9 +77,12 @@ void* call_proc_chiplet_scominit( void *io_pArgs ) if (!INITSERVICE::isSMPWrapConfig()) { // Make the FAPI call to p9_chiplet_scominit + // Make the FAPI call to p9_io_obus_firmask_save_restore, if previous call succeeded // Make the FAPI call to p9_psi_scominit, if previous call succeeded fapiHWPCallWrapperHandler(P9_CHIPLET_SCOMINIT, l_stepError, HWPF_COMP_ID, TYPE_PROC) && + fapiHWPCallWrapperHandler(P9_OBUS_FIRMASK_SAVE_RESTORE, l_stepError, + HWPF_COMP_ID, TYPE_PROC) && fapiHWPCallWrapperHandler(P9_PSI_SCOMINIT, l_stepError, HWPF_COMP_ID, TYPE_PROC); } diff --git a/src/usr/isteps/nest/makefile b/src/usr/isteps/nest/makefile index 6a0a35625..a858b2cb2 100644 --- a/src/usr/isteps/nest/makefile +++ b/src/usr/isteps/nest/makefile @@ -39,6 +39,7 @@ EXTRAINCDIR += ${ROOTPATH}/src/import/chips/common/utils/imageProcs/ EXTRAINCDIR += ${PROCEDURES_PATH}/hwp/initfiles OBJS += nestHwpHelperFuncs.o +OBJS += p9_io_obus_firmask_save_restore.o VPATH += ${PROCEDURES_PATH}/hwp/initfiles VPATH += ${PROCEDURES_PATH}/hwp/io diff --git a/src/usr/isteps/nest/nestHwpHelperFuncs.C b/src/usr/isteps/nest/nestHwpHelperFuncs.C index 451caf79f..6ff374f5d 100644 --- a/src/usr/isteps/nest/nestHwpHelperFuncs.C +++ b/src/usr/isteps/nest/nestHwpHelperFuncs.C @@ -54,6 +54,7 @@ #include <p9_fbc_eff_config_links.H> #include <p9_sys_chiplet_scominit.H> #include <p9_chiplet_fabric_scominit.H> +#include <p9_io_obus_firmask_save_restore.H> namespace ISTEP { @@ -81,6 +82,7 @@ const char * hwpCallToString( HWP_CALL_TYPE i_hwpCall ) { P9_PSI_SCOMINIT, "p9_psi_scominit" }, { P9_SYS_CHIPLET_SCOMINIT, "p9_sys_chiplet_scominit" }, { P9_XBUS_ENABLE_RIDI, "p9_xbus_enable_ridi" }, + { P9_OBUS_FIRMASK_SAVE_RESTORE, "p9_io_obus_firmask_save_restore" }, }; if (hwpCallToStringMap.count(i_hwpCall) > 0) @@ -208,6 +210,12 @@ void fapiHWPCallWrapper(HWP_CALL_TYPE i_hwpCall, p9_chiplet_fabric_scominit, l_fapi2Target); } + else if (P9_OBUS_FIRMASK_SAVE_RESTORE == i_hwpCall) + { + FAPI_INVOKE_HWP(l_err, + p9_io_obus_firmask_save_restore, + l_fapi2Target, p9iofirmasksaverestore::SAVE); + } else { TRACFCOMP(g_trac_isteps_trace, "ERROR: Invalid/Uknown HWP call"); diff --git a/src/usr/isteps/nest/nestHwpHelperFuncs.H b/src/usr/isteps/nest/nestHwpHelperFuncs.H index fb35700b7..9fe2b23bf 100644 --- a/src/usr/isteps/nest/nestHwpHelperFuncs.H +++ b/src/usr/isteps/nest/nestHwpHelperFuncs.H @@ -74,6 +74,7 @@ enum HWP_CALL_TYPE P9_PSI_SCOMINIT, P9_SYS_CHIPLET_SCOMINIT, // Although it says chiplet, this uses proc chip P9_XBUS_ENABLE_RIDI, + P9_OBUS_FIRMASK_SAVE_RESTORE, // loops on proc chip }; /** |