summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/usr/diag/attn/runtime/attn_rt.C29
-rw-r--r--src/usr/diag/attn/runtime/attn_rt.mk13
-rw-r--r--src/usr/isteps/istep08/call_proc_xbus_enable_ridi.C3
-rw-r--r--src/usr/isteps/istep10/call_proc_chiplet_scominit.C3
-rw-r--r--src/usr/isteps/nest/makefile1
-rw-r--r--src/usr/isteps/nest/nestHwpHelperFuncs.C8
-rw-r--r--src/usr/isteps/nest/nestHwpHelperFuncs.H1
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
};
/**
OpenPOWER on IntegriCloud