summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPrachi Gupta <pragupta@us.ibm.com>2015-10-23 12:23:36 -0500
committerPatrick Williams <iawillia@us.ibm.com>2015-12-11 15:30:26 -0600
commitbce98936a30fb420c5deb9faf361db0fc01f35df (patch)
treee3f315cef15e57304701e36bcd9fff7bc457c37f /src
parent0d9998e37c153a2b32fb2e7014152e01823ace86 (diff)
downloadtalos-hostboot-bce98936a30fb420c5deb9faf361db0fc01f35df.tar.gz
talos-hostboot-bce98936a30fb420c5deb9faf361db0fc01f35df.zip
P9 Isteps: Created directory structure for istep 9 wrappers
Change-Id: I6dd801b4b47a37048e66a96b6a29f1d1d75d0fa8 RTC:137652 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/21460 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src')
-rwxr-xr-xsrc/build/tools/genIStep.pl6
-rwxr-xr-xsrc/build/tools/listdeps.pl12
-rw-r--r--src/include/usr/isteps/istep09list.H152
-rw-r--r--src/makefile1
-rw-r--r--src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C1103
-rw-r--r--src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.H233
-rw-r--r--src/usr/hwpf/hwp/edi_ei_initialization/makefile6
-rw-r--r--src/usr/hwpf/hwp/edi_ei_initialization/smp_unfencing_inter_enclosure_abus_links.C236
-rw-r--r--src/usr/isteps/istep09/call_fabric_erepair.C294
-rw-r--r--src/usr/isteps/istep09/call_fabric_io_dccal.C166
-rw-r--r--src/usr/isteps/istep09/call_fabric_io_run_training.C143
-rw-r--r--src/usr/isteps/istep09/call_fabric_post_trainadv.C160
-rw-r--r--src/usr/isteps/istep09/call_fabric_pre_trainadv.C161
-rw-r--r--src/usr/isteps/istep09/call_host_attnlisten_proc.C117
-rw-r--r--src/usr/isteps/istep09/call_host_startprd_pbus.C132
-rw-r--r--src/usr/isteps/istep09/call_proc_fab_iovalid.C201
-rw-r--r--src/usr/isteps/istep09/call_proc_smp_link_layer.C90
-rw-r--r--src/usr/isteps/istep09/makefile40
-rw-r--r--src/usr/isteps/makefile1
19 files changed, 1897 insertions, 1357 deletions
diff --git a/src/build/tools/genIStep.pl b/src/build/tools/genIStep.pl
index 7f6826de6..953139103 100755
--- a/src/build/tools/genIStep.pl
+++ b/src/build/tools/genIStep.pl
@@ -6,7 +6,9 @@
#
# OpenPOWER HostBoot Project
#
-# COPYRIGHT International Business Machines Corp. 2012,2014
+# Contributors Listed Below - COPYRIGHT 2012,2015
+# [+] International Business Machines Corp.
+#
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -329,7 +331,7 @@ my $templateCFileHdr =
#include <fapi.H>
#include <fapiPlatHwpInvoker.H>
-#include <hwpisteperror.H>
+#include <isteps/hwpisteperror.H>
#include \"\@istepname.H\"
diff --git a/src/build/tools/listdeps.pl b/src/build/tools/listdeps.pl
index 7881b952b..196f48a03 100755
--- a/src/build/tools/listdeps.pl
+++ b/src/build/tools/listdeps.pl
@@ -168,8 +168,8 @@ else
@istep_modules = (
"libistep06.so",
"libistep07.so",
- "libistep08.so" ,
- "libedi_ei_initialization.so" ,
+ "libistep08.so",
+ "libistep09.so",
"libbuild_winkle_images.so" ,
"libcore_activate.so" ,
"libstart_payload.so" ,
@@ -217,10 +217,10 @@ my $resident_modules = {
# A list of the dependent libraries in each istep.
# These must be included in the istep file as a dependency.
my %istepFiles = (
- "libistep06.so" => "istep06list.H" ,
- "libistep07.so" => "istep07list.H" ,
- "libistep08.so" => "istep08list.H" ,
- "libedi_ei_initialization.so" => "istep09list.H" ,
+ "libistep06.so" => "istep06list.H" ,
+ "libistep07.so" => "istep07list.H" ,
+ "libistep08.so" => "istep08list.H" ,
+ "libistep09.so" => "istep09list.H" ,
"libocc.so" => "istep15list.H" ,
"libbuild_winkle_images.so" => "istep15list.H" ,
"libcore_activate.so" => "istep16list.H" ,
diff --git a/src/include/usr/isteps/istep09list.H b/src/include/usr/isteps/istep09list.H
index 42441e25e..1d03f0c45 100644
--- a/src/include/usr/isteps/istep09list.H
+++ b/src/include/usr/isteps/istep09list.H
@@ -30,7 +30,7 @@
* @file istep09list.H
*
* IStep 09 Activate PowerBus
- * IPL FLow Doc v0.60 (06/02/15)
+ * IPL FLow Doc v0.67 (11/11/15)
*
* 09.1 fabric_erepair
* : Restore Fabric Bus eRepair data
@@ -58,9 +58,138 @@
#include <initservice/initsvcreasoncodes.H>
// include prototypes file
-#include "../../../usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.H"
#include <config.h>
+namespace ISTEP_09
+{
+
+/**
+ * @brief fabric_erepair
+ *
+ * Restore Fabric/EDI Bus eRepair data
+ *
+ * param[in,out] - pointer to any arguments, usually NULL
+ *
+ * return any errlogs to istep
+ *
+ */
+void* call_fabric_erepair( void *io_pArgs );
+
+
+
+/**
+ * @brief fabric_io_dccal
+ *
+ * Calibrate Fabric/EDI interfaces
+ *
+ * param[in,out] - pointer to any arguments, usually NULL
+ *
+ * return any errlogs to istep
+ *
+ */
+void* call_fabric_io_dccal( void *io_pArgs );
+
+
+
+/**
+ * @brief fabric_pre_trainadv
+ *
+ * 08.3 : : Advanced pre EI/EDI training
+ *
+ * param[in,out] - pointer to any arguments, usually NULL
+ *
+ * return any errlogs to istep
+ *
+ */
+void* call_fabric_pre_trainadv( void *io_pArgs );
+
+
+
+/**
+ * @brief fabric_io_run_training
+ *
+ * Run training on internal buses
+ *
+ * param[in,out] - pointer to any arguments, usually NULL
+ *
+ * return any errlogs to istep
+ *
+ */
+void* call_fabric_io_run_training( void *io_pArgs );
+
+
+
+/**
+ * @brief fabric_post_trainadv
+ *
+ * Advanced post EI/EDI training
+ *
+ * param[in,out] - pointer to any arguments, usually NULL
+ *
+ * return any errlogs to istep
+ *
+ */
+void* call_fabric_post_trainadv( void *io_pArgs );
+
+
+
+/**
+ * @brief proc_smp_link_layer
+ *
+ * param[in,out] - pointer to any arguments, usually NULL
+ *
+ * return any errlogs to istep
+ *
+ */
+void* call_proc_smp_link_layer( void *io_pArgs );
+
+
+
+/**
+ * @brief host_startprd_pbus
+ *
+ * Load PRD for powerbus domain
+ *
+ * param[in,out] - pointer to any arguments, usually NULL
+ *
+ * return any errlogs to istep
+ *
+ */
+void* call_host_startprd_pbus( void *io_pArgs );
+
+
+
+/**
+ * @brief host_attnlisten_proc
+ *
+ * Start listening for attentions
+ *
+ * param[in,out] - pointer to any arguments, usually NULL
+ *
+ * return any errlogs to istep
+ *
+ */
+void* call_host_attnlisten_proc( void *io_pArgs );
+
+
+
+/**
+ * @brief proc_fab_iovalid
+ *
+ * Lower functional fences on local SMP
+ *
+ * param[in,out] - pointer to any arguments, usually NULL
+ *
+ * return any errlogs to istep
+ *
+ */
+void* call_proc_fab_iovalid( void *io_pArgs );
+
+
+}; // end namespace
+
+
+
namespace INITSERVICE
{
const TaskInfo g_istep09[] = {
@@ -71,53 +200,54 @@ namespace INITSERVICE
},
{
ISTEPNAME(09,01,"fabric_erepair"),
- EDI_EI_INITIALIZATION::call_fabric_erepair,
+ ISTEP_09::call_fabric_erepair,
{ START_FN, EXT_IMAGE, NORMAL_IPL_OP, false }
},
{
ISTEPNAME(09,02,"fabric_io_dccal"),
- EDI_EI_INITIALIZATION::call_fabric_io_dccal,
+ ISTEP_09::call_fabric_io_dccal,
{ START_FN, EXT_IMAGE, NORMAL_IPL_OP, false }
},
{
ISTEPNAME(09,03,"fabric_pre_trainadv"),
- EDI_EI_INITIALIZATION::call_fabric_pre_trainadv,
+ ISTEP_09::call_fabric_pre_trainadv,
{ START_FN, EXT_IMAGE, NORMAL_IPL_OP, false }
},
{
ISTEPNAME(09,04,"fabric_io_run_training"),
- EDI_EI_INITIALIZATION::call_fabric_io_run_training,
+ ISTEP_09::call_fabric_io_run_training,
{ START_FN, EXT_IMAGE, NORMAL_IPL_OP, false }
},
{
ISTEPNAME(09,05,"fabric_post_trainadv"),
- EDI_EI_INITIALIZATION::call_fabric_post_trainadv,
+ ISTEP_09::call_fabric_post_trainadv,
{ START_FN, EXT_IMAGE, NORMAL_IPL_OP, false }
},
{
ISTEPNAME(09,06,"proc_smp_link_layer"),
- EDI_EI_INITIALIZATION::call_proc_smp_link_layer,
+ ISTEP_09::call_proc_smp_link_layer,
{ START_FN, EXT_IMAGE, NORMAL_IPL_OP, false }
},
{
ISTEPNAME(09,07,"host_startprd_pbus"),
- EDI_EI_INITIALIZATION::call_host_startprd_pbus,
+ ISTEP_09::call_host_startprd_pbus,
{ START_FN, EXT_IMAGE, NORMAL_IPL_OP, false }
},
{
ISTEPNAME(09,08,"host_attnlisten_proc"),
- EDI_EI_INITIALIZATION::call_host_attnlisten_proc,
+ ISTEP_09::call_host_attnlisten_proc,
{ START_FN, EXT_IMAGE, NORMAL_IPL_OP, false }
},
{
ISTEPNAME(09,09,"proc_fab_iovalid"),
- EDI_EI_INITIALIZATION::call_proc_fab_iovalid,
+ ISTEP_09::call_proc_fab_iovalid,
{ START_FN, EXT_IMAGE, NORMAL_IPL_OP, true }
},
};
const DepModInfo g_istep09Dependancies = {
{
+ DEP_LIB(libistep09.so),
DEP_LIB(libedi_ei_initialization.so),
DEP_LIB(libsbe.so),
NULL
diff --git a/src/makefile b/src/makefile
index 7f07d2937..4206b5ece 100644
--- a/src/makefile
+++ b/src/makefile
@@ -120,6 +120,7 @@ BASE_MODULES += $(if $(CONFIG_AST2400), sio)
EXTENDED_MODULES += istep06
EXTENDED_MODULES += istep07
EXTENDED_MODULES += istep08
+EXTENDED_MODULES += istep09
EXTENDED_MODULES += targeting
EXTENDED_MODULES += ecmddatabuffer
EXTENDED_MODULES += fapi
diff --git a/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C b/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C
deleted file mode 100644
index deb6b2af1..000000000
--- a/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C
+++ /dev/null
@@ -1,1103 +0,0 @@
-/* IBM_PROLOG_BEGIN_TAG */
-/* This is an automatically generated prolog. */
-/* */
-/* $Source: src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C $ */
-/* */
-/* OpenPOWER HostBoot Project */
-/* */
-/* Contributors Listed Below - COPYRIGHT 2012,2015 */
-/* [+] International Business Machines Corp. */
-/* */
-/* */
-/* Licensed under the Apache License, Version 2.0 (the "License"); */
-/* you may not use this file except in compliance with the License. */
-/* You may obtain a copy of the License at */
-/* */
-/* http://www.apache.org/licenses/LICENSE-2.0 */
-/* */
-/* Unless required by applicable law or agreed to in writing, software */
-/* distributed under the License is distributed on an "AS IS" BASIS, */
-/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
-/* implied. See the License for the specific language governing */
-/* permissions and limitations under the License. */
-/* */
-/* IBM_PROLOG_END_TAG */
-
-/**
- * @file edi_ei_initialization.C
- *
- * Support file for IStep: edi_ei_initialization
- * EDI, EI Initialization
- *
- * HWP_IGNORE_VERSION_CHECK
- *
- */
-
-/******************************************************************************/
-// Includes
-/******************************************************************************/
-#include <stdint.h>
-#include <map>
-
-#include <trace/interface.H>
-#include <initservice/taskargs.H>
-#include <errl/errlentry.H>
-
-#include <isteps/hwpisteperror.H>
-#include <errl/errludtarget.H>
-
-#include <initservice/isteps_trace.H>
-
-#include <hwas/common/deconfigGard.H>
-#include <hwas/common/hwasCommon.H>
-
-#include <sbe/sbeif.H>
-
-// targeting support
-#include <targeting/common/commontargeting.H>
-#include <targeting/common/utilFilter.H>
-#include <targeting/common/trace.H>
-
-// fapi support
-#include <fapi.H>
-#include <fapiPlatHwpInvoker.H>
-
-#include "edi_ei_initialization.H"
-#include <pbusLinkSvc.H>
-
-// Uncomment these files as they become available:
-#include "io_restore_erepair.H"
-// #include "fabric_io_dccal/fabric_io_dccal.H"
-// #include "fabric_erepair/fabric_erepair.H"
-#include "fabric_io_run_training/fabric_io_run_training.H"
-#include "io_pre_trainadv.H"
-#include "io_post_trainadv.H"
-// #include "host_startprd_pbus/host_startprd_pbus.H"
-// #include "host_attnlisten_proc/host_attnlisten_proc.H"
-#include "proc_fab_iovalid/proc_fab_iovalid.H"
-#include <diag/prdf/prdfMain.H>
-#include "fabric_io_dccal/fabric_io_dccal.H"
-
-// eRepair Restore
-#include <erepairAccessorHwpFuncs.H>
-
-#ifdef CONFIG_IPLTIME_CHECKSTOP_ANALYSIS
- #include <occ/occ_common.H>
-#endif
-
-namespace EDI_EI_INITIALIZATION
-{
-
-
-using namespace ISTEP;
-using namespace ISTEP_ERROR;
-using namespace ERRORLOG;
-using namespace TARGETING;
-using namespace fapi;
-using namespace HWAS;
-
-
-//
-// Wrapper function to call fabric_erepair
-//
-void* call_fabric_erepair( void *io_pArgs )
-{
- ISTEP_ERROR::IStepError l_StepError;
- errlHndl_t l_errl = NULL;
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_fabric_erepair entry" );
-
- do {
-
- // Check if the system can support multiple nest frequencies
- // and if so, see if an SBE Update is required
- TARGETING::Target* l_sys = NULL;
- targetService().getTopLevelTarget(l_sys);
- assert( l_sys != NULL, "call_fabric_erepair: sys target is NULL" );
- MRW_NEST_CAPABLE_FREQUENCIES_SYS l_mrw_nest_capable;
- l_mrw_nest_capable =
- l_sys->getAttr<ATTR_MRW_NEST_CAPABLE_FREQUENCIES_SYS>();
- if ( l_mrw_nest_capable ==
- MRW_NEST_CAPABLE_FREQUENCIES_SYS_2000_MHZ_OR_2400_MHZ )
- {
- // Call to check Processor SBE SEEPROM Images against NEST_FREQ_MHZ
- // attributes and make any necessary updates
- l_errl = SBE::updateProcessorSbeSeeproms(
- SBE::SBE_UPDATE_ONLY_CHECK_NEST_FREQ);
-
- if (l_errl)
- {
- // Create IStep error log and cross reference error that occurred
- l_StepError.addErrorDetails( l_errl );
- // Commit error
- errlCommit( l_errl, HWPF_COMP_ID );
- break;
- }
-
- }
-
- std::vector<uint8_t> l_endp1_txFaillanes;
- std::vector<uint8_t> l_endp1_rxFaillanes;
- std::vector<uint8_t> l_endp2_txFaillanes;
- std::vector<uint8_t> l_endp2_rxFaillanes;
-
- TargetPairs_t l_PbusConnections;
- const uint32_t MaxBusSet = 2;
- TYPE busSet[MaxBusSet] = { TYPE_ABUS, TYPE_XBUS };
- uint32_t l_count = 0;
- fapi::TargetType l_tgtType = fapi::TARGET_TYPE_NONE;
-
- for (uint32_t i = 0; l_StepError.isNull() && (i < MaxBusSet); i++)
- {
- l_errl = PbusLinkSvc::getTheInstance().getPbusConnections(
- l_PbusConnections, busSet[i] );
- if ( l_errl )
- {
- // Create IStep error log and cross reference error that occurred
- l_StepError.addErrorDetails( l_errl );
-
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
- }
-
- for (TargetPairs_t::const_iterator l_itr = l_PbusConnections.begin();
- (l_StepError.isNull()) && (l_itr != l_PbusConnections.end());
- ++l_itr)
- {
- const fapi::Target l_fapi_endp1_target(
- (i ? TARGET_TYPE_XBUS_ENDPOINT : TARGET_TYPE_ABUS_ENDPOINT),
- (const_cast<TARGETING::Target*>(l_itr->first)));
- const fapi::Target l_fapi_endp2_target(
- (i ? TARGET_TYPE_XBUS_ENDPOINT : TARGET_TYPE_ABUS_ENDPOINT),
- (const_cast<TARGETING::Target*>(l_itr->second)));
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "===== " );
-
- // Get the repair lanes from the VPD
- fapi::ReturnCode l_rc;
- l_endp1_txFaillanes.clear();
- l_endp1_rxFaillanes.clear();
- l_endp2_txFaillanes.clear();
- l_endp2_rxFaillanes.clear();
- l_rc = erepairGetRestoreLanes(l_fapi_endp1_target,
- l_endp1_txFaillanes,
- l_endp1_rxFaillanes,
- l_fapi_endp2_target,
- l_endp2_txFaillanes,
- l_endp2_rxFaillanes);
-
- if(l_rc)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "Unable to"
- " retrieve fabric eRepair data from the VPD");
-
- // convert the FAPI return code to an err handle
- l_errl = fapiRcToErrl(l_rc);
-
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_itr->first).addToLog( l_errl );
- ErrlUserDetailsTarget(l_itr->second).addToLog( l_errl );
-
- // Create IStep error log and cross ref error that occurred
- l_StepError.addErrorDetails( l_errl);
-
- // Commit Error
- errlCommit(l_errl, HWPF_COMP_ID);
- break;
- }
-
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "===== Call io_restore_erepair HWP"
- "%cbus connection ", (i ? 'X' : 'A') );
-
- if(l_endp1_txFaillanes.size() || l_endp1_rxFaillanes.size())
- {
- // call the io_restore_erepair HWP to restore eRepair
- // lanes of endp1
-
- //FAPI_INVOKE_HWP(l_errl,
- // p9_io_restore_erepair,
- // l_fapi_endp1_target,
- // l_endp1_txFaillanes,
- // l_endp1_rxFaillanes);
- }
-
- if(l_errl)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X : io_restore_erepair HWP"
- "%cbus connection ",
- l_errl->reasonCode(), (i ? 'X' : 'A') );
-
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_itr->first).addToLog( l_errl );
- ErrlUserDetailsTarget(l_itr->second).addToLog( l_errl );
-
- // Create IStep error log and cross ref error that occurred
- l_StepError.addErrorDetails( l_errl);
-
- // Commit Error
- errlCommit(l_errl, HWPF_COMP_ID);
- break;
- }
-
- l_tgtType = l_fapi_endp1_target.getType();
- for(l_count = 0; l_count < l_endp1_txFaillanes.size(); l_count++)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,"Successfully"
- " restored Tx lane %d, of %s, of endpoint %s",
- l_endp1_txFaillanes[l_count],
- l_tgtType == TARGET_TYPE_XBUS_ENDPOINT ? "X-Bus" :
- "A-Bus", l_fapi_endp1_target.toEcmdString());
- }
-
- for(l_count = 0; l_count < l_endp1_rxFaillanes.size(); l_count++)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,"Successfully"
- " restored Rx lane %d, of %s, of endpoint %s",
- l_endp1_rxFaillanes[l_count],
- l_tgtType == TARGET_TYPE_XBUS_ENDPOINT ? "X-Bus" :
- "A-Bus", l_fapi_endp1_target.toEcmdString());
- }
-
- if(l_endp2_txFaillanes.size() || l_endp2_rxFaillanes.size())
- {
- // call the io_restore_erepair HWP to restore eRepair
- // lanes of endp2
-
- FAPI_INVOKE_HWP(l_errl,
- io_restore_erepair,
- l_fapi_endp2_target,
- l_endp2_txFaillanes,
- l_endp2_rxFaillanes);
- }
-
- if (l_errl)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X : io_restore_erepair HWP"
- "%cbus connection ",
- l_errl->reasonCode(), (i ? 'X' : 'A') );
-
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_itr->first).addToLog( l_errl );
- ErrlUserDetailsTarget(l_itr->second).addToLog( l_errl );
-
- // Create IStep error log and cross ref error that occurred
- l_StepError.addErrorDetails( l_errl);
-
- // Commit Error
- errlCommit(l_errl, HWPF_COMP_ID);
- break;
- }
-
- l_tgtType = l_fapi_endp2_target.getType();
- for(l_count = 0; l_count < l_endp2_txFaillanes.size(); l_count++)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,"Successfully"
- " restored Tx lane %d, of %s, of endpoint %s",
- l_endp2_txFaillanes[l_count],
- l_tgtType == TARGET_TYPE_XBUS_ENDPOINT ? "X-Bus" :
- "A-Bus", l_fapi_endp2_target.toEcmdString());
- }
-
- for(l_count = 0; l_count < l_endp2_rxFaillanes.size(); l_count++)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,"Successfully"
- " restored Rx lane %d, of %s, of endpoint %s",
- l_endp2_rxFaillanes[l_count],
- l_tgtType == TARGET_TYPE_XBUS_ENDPOINT ? "X-Bus" :
- "A-Bus", l_fapi_endp2_target.toEcmdString());
- }
- } // end for l_PbusConnections
- } // end for MaxBusSet
-
- } while (0);
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_fabric_erepair exit" );
-
- return l_StepError.getErrorHandle();
-}
-
-
-
-//
-// Wrapper function to call fabric_io_dccal
-//
-void* call_fabric_io_dccal( void *io_pArgs )
-{
- errlHndl_t l_errl = NULL;
- IStepError l_StepError;
-
- // We are not running this analog procedure in VPO
- if (TARGETING::is_vpo())
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "Skip call_fabric_io_dccal in VPO!");
- return l_StepError.getErrorHandle();
- }
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_fabric_io_dccal entry" );
-
- TargetPairs_t l_PbusConnections;
- TargetPairs_t::iterator l_itr;
- const uint32_t MaxBusSet = 2;
- TYPE busSet[MaxBusSet] = { TYPE_ABUS, TYPE_XBUS };
-
- // Note:
- // Due to lab tester board environment, HW procedure writer (Varkey) has
- // requested to send in one target of a time (we used to send in
- // both ends in one call). Even though they don't have to be
- // in order, we should keep the pair concept here in case we need to send
- // in a pair in the future again.
- for (uint32_t ii = 0; (!l_errl) && (ii < MaxBusSet); ii++)
- {
- l_errl = PbusLinkSvc::getTheInstance().getPbusConnections(
- l_PbusConnections, busSet[ii] );
-
- for (l_itr = l_PbusConnections.begin();
- l_itr != l_PbusConnections.end();
- ++l_itr)
- {
- const fapi::Target l_fapi_endp1_target(
- (ii ? TARGET_TYPE_XBUS_ENDPOINT : TARGET_TYPE_ABUS_ENDPOINT),
- (const_cast<TARGETING::Target*>(l_itr->first)));
- const fapi::Target l_fapi_endp2_target(
- (ii ? TARGET_TYPE_XBUS_ENDPOINT : TARGET_TYPE_ABUS_ENDPOINT),
- (const_cast<TARGETING::Target*>(l_itr->second)));
-
- // call the HWP with each bus connection
- //FAPI_INVOKE_HWP( l_errl, io_dccal, l_fapi_endp1_target );
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "%s : %cbus connection fabric_io_dccal. Target 0x%.8X",
- (l_errl ? "ERROR" : "SUCCESS"), (ii ? 'X' : 'A'),
- TARGETING::get_huid(l_itr->first) );
- if ( l_errl )
- {
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_itr->first).addToLog( l_errl );
-
- // Create IStep error log and cross ref error that occurred
- l_StepError.addErrorDetails( l_errl );
-
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
- // We want to continue the training despite the error, so
- // no break
- }
-
- // call the HWP with each bus connection
- FAPI_INVOKE_HWP( l_errl, fabric_io_dccal, l_fapi_endp2_target );
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "%s : %cbus connection fabric_io_dccal. Target 0x%.8X",
- (l_errl ? "ERROR" : "SUCCESS"), (ii ? 'X' : 'A'),
- TARGETING::get_huid(l_itr->second) );
- if ( l_errl )
- {
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_itr->second).addToLog( l_errl );
-
- // Create IStep error log and cross ref error that occurred
- l_StepError.addErrorDetails( l_errl );
-
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
- // We want to continue the training despite the error, so
- // no break
- }
- }
- }
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_fabric_io_dccal exit" );
-
- // end task, returning any errorlogs to IStepDisp
- return l_StepError.getErrorHandle();
-}
-
-
-
-//
-// Wrapper function to call fabric_pre_trainadv
-//
-void* call_fabric_pre_trainadv( void *io_pArgs )
-{
- errlHndl_t l_errl = NULL;
- IStepError l_StepError;
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_fabric_pre_trainadv entry" );
-
- TargetPairs_t l_PbusConnections;
- TargetPairs_t::iterator l_itr;
- const uint32_t MaxBusSet = 2;
- TYPE busSet[MaxBusSet] = { TYPE_ABUS, TYPE_XBUS };
-
- // Note:
- // Due to lab tester board environment, HW procedure writer (Varkey) has
- // requested to send in one target of a time (we used to send in
- // both ends in one call). Even though they don't have to be
- // in order, we should keep the pair concept here in case we need to send
- // in a pair in the future again.
-
- for (uint32_t ii = 0; (!l_errl) && (ii < MaxBusSet); ii++)
- {
- l_errl = PbusLinkSvc::getTheInstance().getPbusConnections(
- l_PbusConnections, busSet[ii] );
-
- for (l_itr = l_PbusConnections.begin();
- l_itr != l_PbusConnections.end();
- ++l_itr)
- {
- const fapi::Target l_fapi_endp1_target(
- (ii ? TARGET_TYPE_XBUS_ENDPOINT : TARGET_TYPE_ABUS_ENDPOINT),
- (const_cast<TARGETING::Target*>(l_itr->first)));
- const fapi::Target l_fapi_endp2_target(
- (ii ? TARGET_TYPE_XBUS_ENDPOINT : TARGET_TYPE_ABUS_ENDPOINT),
- (const_cast<TARGETING::Target*>(l_itr->second)));
-
- // call the HWP with each bus connection
- //FAPI_INVOKE_HWP( l_errl, p9_io_pre_trainadv,
- //l_fapi_endp1_target );
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "%s : %cbus connection fabric_pre_trainadv. Target 0x%.8X",
- (l_errl ? "ERROR" : "SUCCESS"), (ii ? 'X' : 'A'),
- TARGETING::get_huid(l_itr->first) );
- if ( l_errl )
- {
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_itr->first).addToLog( l_errl );
-
- // Create IStep error log and cross ref error that occurred
- l_StepError.addErrorDetails( l_errl );
-
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
- // We want to continue the training despite the error, so
- // no break
- }
-
- // call the HWP with each bus connection
- FAPI_INVOKE_HWP( l_errl, io_pre_trainadv, l_fapi_endp2_target );
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "%s : %cbus connection fabric_pre_trainadv. Target 0x%.8X",
- (l_errl ? "ERROR" : "SUCCESS"), (ii ? 'X' : 'A'),
- TARGETING::get_huid(l_itr->second) );
- if ( l_errl )
- {
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_itr->second).addToLog( l_errl );
-
- // Create IStep error log and cross ref error that occurred
- l_StepError.addErrorDetails( l_errl );
-
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
- // We want to continue the training despite the error, so
- // no break
- }
- }
- }
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_fabric_pre_trainadv exit" );
-
- // end task, returning any errorlogs to IStepDisp
- return l_StepError.getErrorHandle();
-}
-
-
-
-//
-// Wrapper function to call fabric_io_run_training
-//
-void* call_fabric_io_run_training( void *io_pArgs )
-{
- errlHndl_t l_errl = NULL;
-
- IStepError l_StepError;
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_fabric_io_run_training entry" );
-
- TargetPairs_t l_PbusConnections;
- const uint32_t MaxBusSet = 2;
-
- // Note: Run XBUS first to match with Cronus
- TYPE busSet[MaxBusSet] = { TYPE_XBUS, TYPE_ABUS };
-
- for (uint32_t i = 0; l_StepError.isNull() && (i < MaxBusSet); i++)
- {
- l_errl = PbusLinkSvc::getTheInstance().getPbusConnections(
- l_PbusConnections, busSet[i] );
-
- if ( l_errl )
- {
- // Create IStep error log and cross reference error that occurred
- l_StepError.addErrorDetails( l_errl );
-
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
- }
-
- for (TargetPairs_t::const_iterator l_itr = l_PbusConnections.begin();
- (l_StepError.isNull()) && (l_itr != l_PbusConnections.end());
- ++l_itr)
- {
- const fapi::Target l_fapi_endp1_target(
- (i ? TARGET_TYPE_ABUS_ENDPOINT : TARGET_TYPE_XBUS_ENDPOINT),
- (const_cast<TARGETING::Target*>(l_itr->first)));
- const fapi::Target l_fapi_endp2_target(
- (i ? TARGET_TYPE_ABUS_ENDPOINT : TARGET_TYPE_XBUS_ENDPOINT),
- (const_cast<TARGETING::Target*>(l_itr->second)));
-
- // call the HWP with each bus connection
- //FAPI_INVOKE_HWP( l_errl, p9_io_run_training,
- // l_fapi_endp1_target, l_fapi_endp2_target );
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "%s : %cbus connection io_run_training",
- (l_errl ? "ERROR" : "SUCCESS"),
- (i ? 'A' : 'X') );
-
- if ( l_errl )
- {
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_itr->first).addToLog( l_errl );
- ErrlUserDetailsTarget(l_itr->second).addToLog( l_errl );
-
- // Create IStep error log and cross ref error that occurred
- l_StepError.addErrorDetails( l_errl );
-
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
- }
- }
- }
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_fabric_io_run_training exit" );
-
- // end task, returning any errorlogs to IStepDisp
- return l_StepError.getErrorHandle();
-}
-
-
-//
-// Wrapper function to call fabric_post_trainadv
-//
-void* call_fabric_post_trainadv( void *io_pArgs )
-{
- errlHndl_t l_errl = NULL;
- IStepError l_StepError;
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_fabric_post_trainadv entry" );
-
- TargetPairs_t l_PbusConnections;
- TargetPairs_t::iterator l_itr;
- const uint32_t MaxBusSet = 2;
- TYPE busSet[MaxBusSet] = { TYPE_ABUS, TYPE_XBUS };
-
- // Note:
- // Due to lab tester board environment, HW procedure writer (Varkey) has
- // requested to send in one target of a time (we used to send in
- // both ends in one call). Even though they don't have to be
- // in order, we should keep the pair concept here in case we need to send
- // in a pair in the future again.
-
- for (uint32_t ii = 0; (!l_errl) && (ii < MaxBusSet); ii++)
- {
- l_errl = PbusLinkSvc::getTheInstance().getPbusConnections(
- l_PbusConnections, busSet[ii] );
-
- for (l_itr = l_PbusConnections.begin();
- l_itr != l_PbusConnections.end();
- ++l_itr)
- {
- const fapi::Target l_fapi_endp1_target(
- (ii ? TARGET_TYPE_XBUS_ENDPOINT : TARGET_TYPE_ABUS_ENDPOINT),
- (const_cast<TARGETING::Target*>(l_itr->first)));
- const fapi::Target l_fapi_endp2_target(
- (ii ? TARGET_TYPE_XBUS_ENDPOINT : TARGET_TYPE_ABUS_ENDPOINT),
- (const_cast<TARGETING::Target*>(l_itr->second)));
-
- // call the HWP with each bus connection
- //FAPI_INVOKE_HWP( l_errl, p9_io_post_trainadv,
- //l_fapi_endp1_target );
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "%s : %cbus connection fabric_post_trainadv. Target 0x%.8X",
- (l_errl ? "ERROR" : "SUCCESS"), (ii ? 'X' : 'A'),
- TARGETING::get_huid(l_itr->first) );
- if ( l_errl )
- {
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_itr->first).addToLog( l_errl );
-
- // Create IStep error log and cross ref error that occurred
- l_StepError.addErrorDetails( l_errl );
-
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
- // We want to continue the training despite the error, so
- // no break
- }
-
- // call the HWP with each bus connection
- FAPI_INVOKE_HWP( l_errl, io_post_trainadv, l_fapi_endp2_target );
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "%s : %cbus connection fabric_post_trainadv. Target 0x%.8X",
- (l_errl ? "ERROR" : "SUCCESS"), (ii ? 'X' : 'A'),
- TARGETING::get_huid(l_itr->second) );
- if ( l_errl )
- {
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_itr->second).addToLog( l_errl );
-
- // Create IStep error log and cross ref error that occurred
- l_StepError.addErrorDetails( l_errl );
-
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
- // We want to continue the training despite the error, so
- // no break
- }
- }
- }
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_fabric_post_trainadv exit" );
-
- // end task, returning any errorlogs to IStepDisp
- return l_StepError.getErrorHandle();
-}
-
-//
-// Wrapper function to call proc_smp_link_layer
-//
-void* call_proc_smp_link_layer( void *io_pArgs )
-{
- errlHndl_t l_errl = NULL;
- IStepError l_StepError;
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_proc_smp_link_layer entry" );
- //call HWP
- //FAPI_INVOKE_HWP(l_errl,p9_smp_link_layer);
- if(l_errl)
- {
- l_StepError.addErrorDetails(l_errl);
- errlCommit(l_errl, HWPF_COMP_ID);
- }
- return l_StepError.getErrorHandle();
-
-}
-
-//
-// Wrapper function to call host_startprd_pbus
-//
-void* call_host_startprd_pbus( void *io_pArgs )
-{
- errlHndl_t l_errl = NULL;
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_host_startprd_pbus entry" );
-
- do
- {
- l_errl = PRDF::initialize();
- if (l_errl)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "Error returned from call to PRDF::initialize");
- break;
- }
-
- // Perform calculated deconfiguration of procs based on
- // bus endpoint deconfigurations, and perform SMP node
- // balancing
- l_errl = HWAS::theDeconfigGard().deconfigureAssocProc();
- if (l_errl)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "Error returned from call to "
- "HWAS::theDeconfigGard().deconfigureAssocProc");
- break;
- }
-
-#ifdef CONFIG_IPLTIME_CHECKSTOP_ANALYSIS
- // update firdata inputs for OCC
- TARGETING::Target* masterproc = NULL;
- TARGETING::targetService().masterProcChipTargetHandle(masterproc);
- l_errl = HBOCC::loadHostDataToSRAM(masterproc,
- PRDF::ALL_PROC_MASTER_CORE);
- if (l_errl)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "Error returned from call to HBOCC::loadHostDataToSRAM");
- break;
- }
-#endif
-
- }while(0);
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_host_startprd_pbus exit" );
-
- // end task, returning any errorlogs to IStepDisp
- return l_errl;
-}
-
-
-
-//
-// Wrapper function to call host_attnlisten_proc
-//
-void* call_host_attnlisten_proc( void *io_pArgs )
-{
- errlHndl_t l_errl = NULL;
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_host_attnlisten_proc entry" );
-
-#if 0
- // @@@@@ CUSTOM BLOCK: @@@@@
- // figure out what targets we need
- // customize any other inputs
- // set up loops to go through all targets (if parallel, spin off a task)
-
- // write HUID of target
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "target HUID %.8X", TARGETING::get_huid(l));
-
- // cast OUR type of target to a FAPI type of target.
- const fapi::Target l_fapi_@targetN_target( TARGET_TYPE_MEMBUF_CHIP,
- (const_cast<TARGETING::Target*>(l_@targetN_target)) );
-
- // call the HWP with each fapi::Target
- FAPI_INVOKE_HWP( l_errl, host_attnlisten_proc, _args_...);
- if ( l_errl )
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR : .........." );
- errlCommit( l_errl, HWPF_COMP_ID );
- }
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : .........." );
- }
- // @@@@@ END CUSTOM BLOCK: @@@@@
-#endif
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_host_attnlisten_proc exit" );
-
- // end task, returning any errorlogs to IStepDisp
- return l_errl;
-}
-
-
-
-//
-// Wrapper function to call proc_fab_iovalid
-//
-void* call_proc_fab_iovalid( void *io_pArgs )
-{
- errlHndl_t l_errl = NULL;
-
- IStepError l_StepError;
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_proc_fab_iovalid entry" );
-
- // Get all chip/chiplet targets
- TARGETING::TargetHandleList l_cpuTargetList;
- getAllChips(l_cpuTargetList, TYPE_PROC);
-
- TargetPairs_t l_abusConnections;
- TargetPairs_t l_xbusConnections;
- l_errl = PbusLinkSvc::getTheInstance().getPbusConnections(
- l_abusConnections, TYPE_ABUS, false );
- if (!l_errl)
- {
- l_errl = PbusLinkSvc::getTheInstance().getPbusConnections(
- l_xbusConnections, TYPE_XBUS, false );
- }
-
- if ( l_errl )
- {
- // Create IStep error log and cross reference error that occurred
- l_StepError.addErrorDetails( l_errl );
-
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
- }
-
- std::vector<proc_fab_iovalid_proc_chip> l_smp;
-
- for (TargetHandleList::const_iterator l_cpu_iter = l_cpuTargetList.begin();
- l_StepError.isNull() && (l_cpu_iter != l_cpuTargetList.end());
- ++l_cpu_iter)
- {
- proc_fab_iovalid_proc_chip l_procEntry;
-
- TARGETING::TargetHandle_t l_pTarget = *l_cpu_iter;
- fapi::Target l_fapiproc_target( TARGET_TYPE_PROC_CHIP, l_pTarget);
-
- l_procEntry.this_chip = l_fapiproc_target;
- l_procEntry.a0 = false;
- l_procEntry.a1 = false;
- l_procEntry.a2 = false;
- l_procEntry.x0 = false;
- l_procEntry.x1 = false;
- l_procEntry.x2 = false;
- l_procEntry.x3 = false;
-
- TARGETING::TargetHandleList l_abuses;
- getChildChiplets( l_abuses, l_pTarget, TYPE_ABUS );
-
- for (TargetHandleList::const_iterator l_abus_iter = l_abuses.begin();
- l_abus_iter != l_abuses.end();
- ++l_abus_iter)
- {
- TARGETING::TargetHandle_t l_target = *l_abus_iter;
- uint8_t l_srcID = l_target->getAttr<ATTR_CHIP_UNIT>();
- TargetPairs_t::iterator l_itr = l_abusConnections.find(l_target);
- if ( l_itr == l_abusConnections.end() )
- {
- continue;
- }
- switch (l_srcID)
- {
- case 0: l_procEntry.a0 = true; break;
- case 1: l_procEntry.a1 = true; break;
- case 2: l_procEntry.a2 = true; break;
- default: break;
- }
- }
-
- TARGETING::TargetHandleList l_xbuses;
- getChildChiplets( l_xbuses, l_pTarget, TYPE_XBUS );
-
- for (TargetHandleList::const_iterator l_xbus_iter = l_xbuses.begin();
- l_xbus_iter != l_xbuses.end();
- ++l_xbus_iter)
- {
- TARGETING::TargetHandle_t l_target = *l_xbus_iter;
- uint8_t l_srcID = l_target->getAttr<ATTR_CHIP_UNIT>();
- TargetPairs_t::iterator l_itr = l_xbusConnections.find(l_target);
- if ( l_itr == l_xbusConnections.end() )
- {
- continue;
- }
- switch (l_srcID)
- {
- case 0: l_procEntry.x0 = true; break;
- case 1: l_procEntry.x1 = true; break;
- case 2: l_procEntry.x2 = true; break;
- case 3: l_procEntry.x3 = true; break;
- default: break;
- }
- }
-
- l_smp.push_back(l_procEntry);
- }
-
- if (!l_errl)
- {
- //FAPI_INVOKE_HWP( l_errl, p9_fab_iovalid, l_smp, true );
-
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "%s : proc_fab_iovalid HWP.",
- (l_errl ? "ERROR" : "SUCCESS"));
- }
-
- if (l_errl)
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR : call_proc_fab_iovalid encountered an error");
-
- // Create IStep error log and cross reference error that occurred
- l_StepError.addErrorDetails( l_errl );
-
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
- }
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_proc_fab_iovalid exit" );
-
- // end task, returning any errorlogs to IStepDisp
- return l_StepError.getErrorHandle();
-}
-
-/*
- *
- * brief function to check if peer target is present.
- *
- * returns true if peer is present, else false
- *
- */
-bool isPeerPresent(TARGETING::TargetHandle_t i_targetPtr)
-{
- bool l_flag = false;
-
- do
- {
- if( NULL == i_targetPtr)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "isPeerPresent:ERR: Null input target");
- break;
- }
-
- EntityPath l_peerPath;
- bool l_exists = i_targetPtr->tryGetAttr<ATTR_PEER_PATH>(l_peerPath);
-
- if( false == l_exists)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "isPeerPresent:ERR: Failed to get ATTR_PEER_PATH for "
- "target HUID:0x%08x", get_huid(i_targetPtr));
- break;
- }
-
- EntityPath::PathElement l_pa = l_peerPath.pathElementOfType(TYPE_NODE);
-
- if(l_pa.type == TYPE_NA)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "isPeerPresent:ERR: Cannot find Node into in peer path: "
- "[%s],target HUID:0x%08x", l_peerPath.toString(),
- get_huid(i_targetPtr));
- break;
- }
-
- TARGETING::Target * sys = NULL;
- TARGETING::targetService().getTopLevelTarget( sys );
- assert(sys != NULL);
-
- TARGETING::ATTR_HB_EXISTING_IMAGE_type hb_images =
- sys->getAttr<TARGETING::ATTR_HB_EXISTING_IMAGE>();
-
- // ATTR_HB_EXISTING_IMAGE only gets set on a multi-drawer system.
- // Currently set up in host_sys_fab_iovalid_processing() which only
- // gets called if there are multiple physical nodes. It eventually
- // needs to be setup by a hb routine that snoops for multiple nodes.
- if(hb_images == 0)
- {
- // Single node system
- break;
- }
-
- // continue - multi-node
- uint8_t node_map[8];
- l_exists =
- sys->tryGetAttr<TARGETING::ATTR_FABRIC_TO_PHYSICAL_NODE_MAP>(node_map);
-
- if( false == l_exists )
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "isPeerPresent:ERR: Failed to get "
- "ATTR_FABRIC_TO_PHYSICAL_NODE_MAP "
- "for system target. Input target HUID:0x%08x",
- get_huid(i_targetPtr));
- break;
- }
-
- if(l_pa.instance < (sizeof(TARGETING::ATTR_HB_EXISTING_IMAGE_type) * 8))
- {
- // set mask
- TARGETING::ATTR_HB_EXISTING_IMAGE_type mask = 0x1 <<
- ((sizeof(TARGETING::ATTR_HB_EXISTING_IMAGE_type) * 8) -1);
-
- if( 0 != ((mask >> l_pa.instance) & hb_images ) )
- {
- l_flag = true;
- }
- }
-
- }while(0);
-
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "isPeerPresent:[%d], HUID:0x%08x",l_flag,get_huid(i_targetPtr));
-
- return l_flag;
-}
-//
-// function to unfence inter-enclosure abus links
-//
-errlHndl_t smp_unfencing_inter_enclosure_abus_links()
-{
- errlHndl_t l_errl = NULL;
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "smp_unfencing_inter_enclosure_abus_links entry" );
-
- // Get all chip/chiplet targets
- TARGETING::TargetHandleList l_cpuTargetList;
- getAllChips(l_cpuTargetList, TYPE_PROC);
-
- std::vector<proc_fab_iovalid_proc_chip> l_smp;
-
- for (TargetHandleList::const_iterator l_cpu_iter = l_cpuTargetList.begin();
- l_cpu_iter != l_cpuTargetList.end();
- ++l_cpu_iter)
- {
- proc_fab_iovalid_proc_chip l_procEntry;
-
- TARGETING::TargetHandle_t l_pTarget = *l_cpu_iter;
- fapi::Target l_fapiproc_target(TARGET_TYPE_PROC_CHIP, l_pTarget);
-
- l_procEntry.this_chip = l_fapiproc_target;
- l_procEntry.a0 = false;
- l_procEntry.a1 = false;
- l_procEntry.a2 = false;
- l_procEntry.x0 = false;
- l_procEntry.x1 = false;
- l_procEntry.x2 = false;
- l_procEntry.x3 = false;
-
- TARGETING::TargetHandleList l_abuses;
- getChildChiplets( l_abuses, l_pTarget, TYPE_ABUS );
- bool l_flag = false;
- for (TargetHandleList::const_iterator l_abus_iter = l_abuses.begin();
- l_abus_iter != l_abuses.end();
- ++l_abus_iter)
- {
- TARGETING::TargetHandle_t l_pAbusTarget = *l_abus_iter;
- ATTR_CHIP_UNIT_type l_srcID;
- l_srcID = l_pAbusTarget->getAttr<ATTR_CHIP_UNIT>();
- l_flag = isPeerPresent(l_pAbusTarget);
- switch (l_srcID)
- {
- case 0: l_procEntry.a0 = l_flag; break;
- case 1: l_procEntry.a1 = l_flag; break;
- case 2: l_procEntry.a2 = l_flag; break;
- default: break;
- }
- }
-
- l_smp.push_back(l_procEntry);
- }
-
- FAPI_INVOKE_HWP( l_errl, proc_fab_iovalid, l_smp, true );
-
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "%s : proc_fab_iovalid HWP.",
- (l_errl ? "ERROR" : "SUCCESS"));
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "smp_unfencing_inter_enclosure_abus_links exit" );
-
- return l_errl;
-}
-
-}; // end namespace
diff --git a/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.H b/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.H
deleted file mode 100644
index 00985dbae..000000000
--- a/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.H
+++ /dev/null
@@ -1,233 +0,0 @@
-/* IBM_PROLOG_BEGIN_TAG */
-/* This is an automatically generated prolog. */
-/* */
-/* $Source: src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.H $ */
-/* */
-/* OpenPOWER HostBoot Project */
-/* */
-/* Contributors Listed Below - COPYRIGHT 2012,2015 */
-/* [+] International Business Machines Corp. */
-/* */
-/* */
-/* Licensed under the Apache License, Version 2.0 (the "License"); */
-/* you may not use this file except in compliance with the License. */
-/* You may obtain a copy of the License at */
-/* */
-/* http://www.apache.org/licenses/LICENSE-2.0 */
-/* */
-/* Unless required by applicable law or agreed to in writing, software */
-/* distributed under the License is distributed on an "AS IS" BASIS, */
-/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
-/* implied. See the License for the specific language governing */
-/* permissions and limitations under the License. */
-/* */
-/* IBM_PROLOG_END_TAG */
-#ifndef __EDI_EI_INITIALIZATION_EDI_EI_INITIALIZATION_H
-#define __EDI_EI_INITIALIZATION_EDI_EI_INITIALIZATION_H
-
-/**
- * @file edi_ei_initialization.H
- *
- * EDI, EI Initialization
- *
- * All of the following routines are "named isteps" - they are invoked as
- * tasks by the @ref IStepDispatcher.
- *
- * HWP_IGNORE_VERSION_CHECK
- *
- */
-
- /* @tag isteplist
- * @docversion v1.28 (12/03/12)
- * @istepname edi_ei_initialization
- * @istepnum 08
- * @istepdesc EDI, EI Initialization
- *
- * @{
- * @substepnum 1
- * @substepname fabric_erepair
- * @substepdesc : Restore Fabric/EDI Bus eRepair data
- * @target_sched serial
- * @}
- * @{
- * @substepnum 2
- * @substepname fabric_io_dccal
- * @substepdesc : Calibrate Fabric/EDI interfaces
- * @target_sched serial
- * @}
- * @{
- * @substepnum 3
- * @substepname fabric_pre_trainadv
- * @substepdesc : Advanced pre EI/EDI training
- * @target_sched serial
- * @}
- * @{
- * @substepnum 4
- * @substepname fabric_io_run_training
- * @substepdesc : Run training on internal buses
- * @target_sched serial
- * @}
- * @{
- * @substepnum 5
- * @substepname fabric_post_trainadv
- * @substepdesc : Advanced post EI/EDI training
- * @target_sched serial
- * @}
- * @{
- * @substepnum 6
- * @substepname host_startprd_pbus
- * @substepdesc : Load PRD for powerbus domain
- * @target_sched serial
- * @}
- * @{
- * @substepnum 7
- * @substepname host_attnlisten_proc
- * @substepdesc : Start listening for attentions
- * @target_sched serial
- * @}
- * @{
- * @substepnum 8
- * @substepname proc_fab_iovalid
- * @substepdesc : Lower functional fences on local SMP
- * @target_sched serial
- * @}
- *
- */
-
-/******************************************************************************/
-// Includes
-/******************************************************************************/
-#include <stdint.h>
-
-namespace EDI_EI_INITIALIZATION
-{
-
-
-
-/**
- * @brief fabric_erepair
- *
- * Restore Fabric/EDI Bus eRepair data
- *
- * param[in,out] - pointer to any arguments, usually NULL
- *
- * return any errlogs to istep
- *
- */
-void* call_fabric_erepair( void *io_pArgs );
-
-
-
-/**
- * @brief fabric_io_dccal
- *
- * Calibrate Fabric/EDI interfaces
- *
- * param[in,out] - pointer to any arguments, usually NULL
- *
- * return any errlogs to istep
- *
- */
-void* call_fabric_io_dccal( void *io_pArgs );
-
-
-
-/**
- * @brief fabric_pre_trainadv
- *
- * 08.3 : : Advanced pre EI/EDI training
- *
- * param[in,out] - pointer to any arguments, usually NULL
- *
- * return any errlogs to istep
- *
- */
-void* call_fabric_pre_trainadv( void *io_pArgs );
-
-
-
-/**
- * @brief fabric_io_run_training
- *
- * Run training on internal buses
- *
- * param[in,out] - pointer to any arguments, usually NULL
- *
- * return any errlogs to istep
- *
- */
-void* call_fabric_io_run_training( void *io_pArgs );
-
-
-
-/**
- * @brief fabric_post_trainadv
- *
- * Advanced post EI/EDI training
- *
- * param[in,out] - pointer to any arguments, usually NULL
- *
- * return any errlogs to istep
- *
- */
-void* call_fabric_post_trainadv( void *io_pArgs );
-
-
-
-/**
- * @brief proc_smp_link_layer
- *
- * param[in,out] - pointer to any arguments, usually NULL
- *
- * return any errlogs to istep
- *
- */
-void* call_proc_smp_link_layer( void *io_pArgs );
-
-
-
-/**
- * @brief host_startprd_pbus
- *
- * Load PRD for powerbus domain
- *
- * param[in,out] - pointer to any arguments, usually NULL
- *
- * return any errlogs to istep
- *
- */
-void* call_host_startprd_pbus( void *io_pArgs );
-
-
-
-/**
- * @brief host_attnlisten_proc
- *
- * Start listening for attentions
- *
- * param[in,out] - pointer to any arguments, usually NULL
- *
- * return any errlogs to istep
- *
- */
-void* call_host_attnlisten_proc( void *io_pArgs );
-
-
-
-/**
- * @brief proc_fab_iovalid
- *
- * Lower functional fences on local SMP
- *
- * param[in,out] - pointer to any arguments, usually NULL
- *
- * return any errlogs to istep
- *
- */
-void* call_proc_fab_iovalid( void *io_pArgs );
-
-
-}; // end namespace
-
-#endif
-
diff --git a/src/usr/hwpf/hwp/edi_ei_initialization/makefile b/src/usr/hwpf/hwp/edi_ei_initialization/makefile
index f38b2aaa9..10f732ea0 100644
--- a/src/usr/hwpf/hwp/edi_ei_initialization/makefile
+++ b/src/usr/hwpf/hwp/edi_ei_initialization/makefile
@@ -5,7 +5,9 @@
#
# OpenPOWER HostBoot Project
#
-# COPYRIGHT International Business Machines Corp. 2012,2014
+# Contributors Listed Below - COPYRIGHT 2012,2015
+# [+] International Business Machines Corp.
+#
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -49,7 +51,7 @@ EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/bus_training/io_pre_trainadv
EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/bus_training/io_post_trainadv
## NOTE: add new object files when you add a new HWP
-OBJS += edi_ei_initialization.o
+OBJS += smp_unfencing_inter_enclosure_abus_links.o
OBJS += proc_fab_iovalid.o
OBJS += fabric_io_run_training.o
OBJS += fabric_io_dccal.o
diff --git a/src/usr/hwpf/hwp/edi_ei_initialization/smp_unfencing_inter_enclosure_abus_links.C b/src/usr/hwpf/hwp/edi_ei_initialization/smp_unfencing_inter_enclosure_abus_links.C
new file mode 100644
index 000000000..1b10c0c7d
--- /dev/null
+++ b/src/usr/hwpf/hwp/edi_ei_initialization/smp_unfencing_inter_enclosure_abus_links.C
@@ -0,0 +1,236 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/hwpf/hwp/edi_ei_initialization/smp_unfencing_inter_enclosure_abus_links.C $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2015 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+#include <stdint.h>
+#include <map>
+
+#include <trace/interface.H>
+#include <initservice/taskargs.H>
+#include <errl/errlentry.H>
+
+#include <isteps/hwpisteperror.H>
+#include <errl/errludtarget.H>
+
+#include <initservice/isteps_trace.H>
+
+#include <hwas/common/deconfigGard.H>
+#include <hwas/common/hwasCommon.H>
+
+#include <sbe/sbeif.H>
+
+// targeting support
+#include <targeting/common/commontargeting.H>
+#include <targeting/common/utilFilter.H>
+#include <targeting/common/trace.H>
+
+// fapi support
+#include <fapi.H>
+#include <fapiPlatHwpInvoker.H>
+
+#include <pbusLinkSvc.H>
+
+// Uncomment these files as they become available:
+#include "io_restore_erepair.H"
+// #include "fabric_io_dccal/fabric_io_dccal.H"
+// #include "fabric_erepair/fabric_erepair.H"
+#include "fabric_io_run_training/fabric_io_run_training.H"
+#include "io_pre_trainadv.H"
+#include "io_post_trainadv.H"
+// #include "host_startprd_pbus/host_startprd_pbus.H"
+// #include "host_attnlisten_proc/host_attnlisten_proc.H"
+#include "proc_fab_iovalid/proc_fab_iovalid.H"
+#include <diag/prdf/prdfMain.H>
+#include "fabric_io_dccal/fabric_io_dccal.H"
+
+// eRepair Restore
+#include <erepairAccessorHwpFuncs.H>
+
+#ifdef CONFIG_IPLTIME_CHECKSTOP_ANALYSIS
+ #include <occ/occ_common.H>
+#endif
+
+namespace EDI_EI_INITIALIZATION
+{
+/*
+ *
+ * brief function to check if peer target is present.
+ *
+ * returns true if peer is present, else false
+ *
+ */
+bool isPeerPresent(TARGETING::TargetHandle_t i_targetPtr)
+{
+ bool l_flag = false;
+
+ do
+ {
+ if( NULL == i_targetPtr)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "isPeerPresent:ERR: Null input target");
+ break;
+ }
+
+ EntityPath l_peerPath;
+ bool l_exists = i_targetPtr->tryGetAttr<ATTR_PEER_PATH>(l_peerPath);
+
+ if( false == l_exists)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "isPeerPresent:ERR: Failed to get ATTR_PEER_PATH for "
+ "target HUID:0x%08x", get_huid(i_targetPtr));
+ break;
+ }
+
+ EntityPath::PathElement l_pa = l_peerPath.pathElementOfType(TYPE_NODE);
+
+ if(l_pa.type == TYPE_NA)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "isPeerPresent:ERR: Cannot find Node into in peer path: "
+ "[%s],target HUID:0x%08x", l_peerPath.toString(),
+ get_huid(i_targetPtr));
+ break;
+ }
+
+ TARGETING::Target * sys = NULL;
+ TARGETING::targetService().getTopLevelTarget( sys );
+ assert(sys != NULL);
+
+ TARGETING::ATTR_HB_EXISTING_IMAGE_type hb_images =
+ sys->getAttr<TARGETING::ATTR_HB_EXISTING_IMAGE>();
+
+ // ATTR_HB_EXISTING_IMAGE only gets set on a multi-drawer system.
+ // Currently set up in host_sys_fab_iovalid_processing() which only
+ // gets called if there are multiple physical nodes. It eventually
+ // needs to be setup by a hb routine that snoops for multiple nodes.
+ if(hb_images == 0)
+ {
+ // Single node system
+ break;
+ }
+
+ // continue - multi-node
+ uint8_t node_map[8];
+ l_exists =
+ sys->tryGetAttr<TARGETING::ATTR_FABRIC_TO_PHYSICAL_NODE_MAP>(node_map);
+
+ if( false == l_exists )
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "isPeerPresent:ERR: Failed to get "
+ "ATTR_FABRIC_TO_PHYSICAL_NODE_MAP "
+ "for system target. Input target HUID:0x%08x",
+ get_huid(i_targetPtr));
+ break;
+ }
+
+ if(l_pa.instance < (sizeof(TARGETING::ATTR_HB_EXISTING_IMAGE_type) * 8))
+ {
+ // set mask
+ TARGETING::ATTR_HB_EXISTING_IMAGE_type mask = 0x1 <<
+ ((sizeof(TARGETING::ATTR_HB_EXISTING_IMAGE_type) * 8) -1);
+
+ if( 0 != ((mask >> l_pa.instance) & hb_images ) )
+ {
+ l_flag = true;
+ }
+ }
+
+ }while(0);
+
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "isPeerPresent:[%d], HUID:0x%08x",l_flag,get_huid(i_targetPtr));
+
+ return l_flag;
+}
+//
+// function to unfence inter-enclosure abus links
+//
+errlHndl_t smp_unfencing_inter_enclosure_abus_links()
+{
+ errlHndl_t l_errl = NULL;
+/*
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "smp_unfencing_inter_enclosure_abus_links entry" );
+
+ // Get all chip/chiplet targets
+ TARGETING::TargetHandleList l_cpuTargetList;
+ getAllChips(l_cpuTargetList, TYPE_PROC);
+
+ std::vector<proc_fab_iovalid_proc_chip> l_smp;
+
+ for (TargetHandleList::const_iterator l_cpu_iter = l_cpuTargetList.begin();
+ l_cpu_iter != l_cpuTargetList.end();
+ ++l_cpu_iter)
+ {
+ proc_fab_iovalid_proc_chip l_procEntry;
+
+ TARGETING::TargetHandle_t l_pTarget = *l_cpu_iter;
+ fapi::Target l_fapiproc_target(TARGET_TYPE_PROC_CHIP, l_pTarget);
+
+ l_procEntry.this_chip = l_fapiproc_target;
+ l_procEntry.a0 = false;
+ l_procEntry.a1 = false;
+ l_procEntry.a2 = false;
+ l_procEntry.x0 = false;
+ l_procEntry.x1 = false;
+ l_procEntry.x2 = false;
+ l_procEntry.x3 = false;
+
+ TARGETING::TargetHandleList l_abuses;
+ getChildChiplets( l_abuses, l_pTarget, TYPE_ABUS );
+ bool l_flag = false;
+ for (TargetHandleList::const_iterator l_abus_iter = l_abuses.begin();
+ l_abus_iter != l_abuses.end();
+ ++l_abus_iter)
+ {
+ TARGETING::TargetHandle_t l_pAbusTarget = *l_abus_iter;
+ ATTR_CHIP_UNIT_type l_srcID;
+ l_srcID = l_pAbusTarget->getAttr<ATTR_CHIP_UNIT>();
+ l_flag = isPeerPresent(l_pAbusTarget);
+ switch (l_srcID)
+ {
+ case 0: l_procEntry.a0 = l_flag; break;
+ case 1: l_procEntry.a1 = l_flag; break;
+ case 2: l_procEntry.a2 = l_flag; break;
+ default: break;
+ }
+ }
+
+ l_smp.push_back(l_procEntry);
+ }
+
+ FAPI_INVOKE_HWP( l_errl, proc_fab_iovalid, l_smp, true );
+
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "%s : proc_fab_iovalid HWP.",
+ (l_errl ? "ERROR" : "SUCCESS"));
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "smp_unfencing_inter_enclosure_abus_links exit" );
+*/
+ return l_errl;
+}
+};
diff --git a/src/usr/isteps/istep09/call_fabric_erepair.C b/src/usr/isteps/istep09/call_fabric_erepair.C
new file mode 100644
index 000000000..005491860
--- /dev/null
+++ b/src/usr/isteps/istep09/call_fabric_erepair.C
@@ -0,0 +1,294 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/isteps/istep09/call_fabric_erepair.C $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2015 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+/**
+ * @file call_fabric_erepair.C
+ *
+ * Support file for IStep: edi_ei_initialization
+ * EDI, EI Initialization
+ *
+ * HWP_IGNORE_VERSION_CHECK
+ *
+ */
+
+/******************************************************************************/
+// Includes
+/******************************************************************************/
+#include <stdint.h>
+#include <map>
+
+#include <trace/interface.H>
+#include <initservice/taskargs.H>
+#include <errl/errlentry.H>
+
+#include <isteps/hwpisteperror.H>
+#include <errl/errludtarget.H>
+
+#include <initservice/isteps_trace.H>
+
+#include <hwas/common/deconfigGard.H>
+#include <hwas/common/hwasCommon.H>
+
+#include <sbe/sbeif.H>
+
+// targeting support
+#include <targeting/common/commontargeting.H>
+#include <targeting/common/utilFilter.H>
+#include <targeting/common/trace.H>
+
+
+namespace ISTEP_09
+{
+
+using namespace ISTEP;
+using namespace ISTEP_ERROR;
+using namespace ERRORLOG;
+using namespace TARGETING;
+using namespace HWAS;
+
+
+//
+// Wrapper function to call fabric_erepair
+//
+void* call_fabric_erepair( void *io_pArgs )
+{
+ errlHndl_t l_errl = NULL;
+ //@TODO RTC:134079
+ /*ISTEP_ERROR::IStepError l_StepError;
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_fabric_erepair entry" );
+
+ do {
+
+ // Check if the system can support multiple nest frequencies
+ // and if so, see if an SBE Update is required
+ TARGETING::Target* l_sys = NULL;
+ targetService().getTopLevelTarget(l_sys);
+ assert( l_sys != NULL, "call_fabric_erepair: sys target is NULL" );
+ MRW_NEST_CAPABLE_FREQUENCIES_SYS l_mrw_nest_capable;
+ l_mrw_nest_capable =
+ l_sys->getAttr<ATTR_MRW_NEST_CAPABLE_FREQUENCIES_SYS>();
+ if ( l_mrw_nest_capable ==
+ MRW_NEST_CAPABLE_FREQUENCIES_SYS_2000_MHZ_OR_2400_MHZ )
+ {
+ // Call to check Processor SBE SEEPROM Images against NEST_FREQ_MHZ
+ // attributes and make any necessary updates
+ l_errl = SBE::updateProcessorSbeSeeproms(
+ SBE::SBE_UPDATE_ONLY_CHECK_NEST_FREQ);
+
+ if (l_errl)
+ {
+ // Create IStep error log and cross reference error that occurred
+ l_StepError.addErrorDetails( l_errl );
+ // Commit error
+ errlCommit( l_errl, HWPF_COMP_ID );
+ break;
+ }
+
+ }
+
+ std::vector<uint8_t> l_endp1_txFaillanes;
+ std::vector<uint8_t> l_endp1_rxFaillanes;
+ std::vector<uint8_t> l_endp2_txFaillanes;
+ std::vector<uint8_t> l_endp2_rxFaillanes;
+
+ TargetPairs_t l_PbusConnections;
+ const uint32_t MaxBusSet = 2;
+ TYPE busSet[MaxBusSet] = { TYPE_ABUS, TYPE_XBUS };
+ uint32_t l_count = 0;
+ fapi::TargetType l_tgtType = fapi::TARGET_TYPE_NONE;
+
+ for (uint32_t i = 0; l_StepError.isNull() && (i < MaxBusSet); i++)
+ {
+ l_errl = PbusLinkSvc::getTheInstance().getPbusConnections(
+ l_PbusConnections, busSet[i] );
+ if ( l_errl )
+ {
+ // Create IStep error log and cross reference error that occurred
+ l_StepError.addErrorDetails( l_errl );
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+ }
+
+ for (TargetPairs_t::const_iterator l_itr = l_PbusConnections.begin();
+ (l_StepError.isNull()) && (l_itr != l_PbusConnections.end());
+ ++l_itr)
+ {
+ const fapi::Target l_fapi_endp1_target(
+ (i ? TARGET_TYPE_XBUS_ENDPOINT : TARGET_TYPE_ABUS_ENDPOINT),
+ (const_cast<TARGETING::Target*>(l_itr->first)));
+ const fapi::Target l_fapi_endp2_target(
+ (i ? TARGET_TYPE_XBUS_ENDPOINT : TARGET_TYPE_ABUS_ENDPOINT),
+ (const_cast<TARGETING::Target*>(l_itr->second)));
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "===== " );
+
+ // Get the repair lanes from the VPD
+ fapi::ReturnCode l_rc;
+ l_endp1_txFaillanes.clear();
+ l_endp1_rxFaillanes.clear();
+ l_endp2_txFaillanes.clear();
+ l_endp2_rxFaillanes.clear();
+ l_rc = erepairGetRestoreLanes(l_fapi_endp1_target,
+ l_endp1_txFaillanes,
+ l_endp1_rxFaillanes,
+ l_fapi_endp2_target,
+ l_endp2_txFaillanes,
+ l_endp2_rxFaillanes);
+
+ if(l_rc)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "Unable to"
+ " retrieve fabric eRepair data from the VPD");
+
+ // convert the FAPI return code to an err handle
+ l_errl = fapiRcToErrl(l_rc);
+
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_itr->first).addToLog( l_errl );
+ ErrlUserDetailsTarget(l_itr->second).addToLog( l_errl );
+
+ // Create IStep error log and cross ref error that occurred
+ l_StepError.addErrorDetails( l_errl);
+
+ // Commit Error
+ errlCommit(l_errl, HWPF_COMP_ID);
+ break;
+ }
+
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "===== Call io_restore_erepair HWP"
+ "%cbus connection ", (i ? 'X' : 'A') );
+
+ if(l_endp1_txFaillanes.size() || l_endp1_rxFaillanes.size())
+ {
+ // call the io_restore_erepair HWP to restore eRepair
+ // lanes of endp1
+ //@TODO RTC:133830
+ //FAPI_INVOKE_HWP(l_errl,
+ // p9_io_restore_erepair,
+ // l_fapi_endp1_target,
+ // l_endp1_txFaillanes,
+ // l_endp1_rxFaillanes);
+ }
+
+ if(l_errl)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR 0x%.8X : io_restore_erepair HWP"
+ "%cbus connection ",
+ l_errl->reasonCode(), (i ? 'X' : 'A') );
+
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_itr->first).addToLog( l_errl );
+ ErrlUserDetailsTarget(l_itr->second).addToLog( l_errl );
+
+ // Create IStep error log and cross ref error that occurred
+ l_StepError.addErrorDetails( l_errl);
+
+ // Commit Error
+ errlCommit(l_errl, HWPF_COMP_ID);
+ break;
+ }
+
+ l_tgtType = l_fapi_endp1_target.getType();
+ for(l_count = 0; l_count < l_endp1_txFaillanes.size(); l_count++)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,"Successfully"
+ " restored Tx lane %d, of %s, of endpoint %s",
+ l_endp1_txFaillanes[l_count],
+ l_tgtType == TARGET_TYPE_XBUS_ENDPOINT ? "X-Bus" :
+ "A-Bus", l_fapi_endp1_target.toEcmdString());
+ }
+
+ for(l_count = 0; l_count < l_endp1_rxFaillanes.size(); l_count++)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,"Successfully"
+ " restored Rx lane %d, of %s, of endpoint %s",
+ l_endp1_rxFaillanes[l_count],
+ l_tgtType == TARGET_TYPE_XBUS_ENDPOINT ? "X-Bus" :
+ "A-Bus", l_fapi_endp1_target.toEcmdString());
+ }
+
+ if(l_endp2_txFaillanes.size() || l_endp2_rxFaillanes.size())
+ {
+ // call the io_restore_erepair HWP to restore eRepair
+ // lanes of endp2
+ //@TODO RTC:133830
+ FAPI_INVOKE_HWP(l_errl,
+ io_restore_erepair,
+ l_fapi_endp2_target,
+ l_endp2_txFaillanes,
+ l_endp2_rxFaillanes);
+ }
+
+ if (l_errl)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR 0x%.8X : io_restore_erepair HWP"
+ "%cbus connection ",
+ l_errl->reasonCode(), (i ? 'X' : 'A') );
+
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_itr->first).addToLog( l_errl );
+ ErrlUserDetailsTarget(l_itr->second).addToLog( l_errl );
+
+ // Create IStep error log and cross ref error that occurred
+ l_StepError.addErrorDetails( l_errl);
+
+ // Commit Error
+ errlCommit(l_errl, HWPF_COMP_ID);
+ break;
+ }
+
+ l_tgtType = l_fapi_endp2_target.getType();
+ for(l_count = 0; l_count < l_endp2_txFaillanes.size(); l_count++)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,"Successfully"
+ " restored Tx lane %d, of %s, of endpoint %s",
+ l_endp2_txFaillanes[l_count],
+ l_tgtType == TARGET_TYPE_XBUS_ENDPOINT ? "X-Bus" :
+ "A-Bus", l_fapi_endp2_target.toEcmdString());
+ }
+
+ for(l_count = 0; l_count < l_endp2_rxFaillanes.size(); l_count++)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,"Successfully"
+ " restored Rx lane %d, of %s, of endpoint %s",
+ l_endp2_rxFaillanes[l_count],
+ l_tgtType == TARGET_TYPE_XBUS_ENDPOINT ? "X-Bus" :
+ "A-Bus", l_fapi_endp2_target.toEcmdString());
+ }
+ } // end for l_PbusConnections
+ } // end for MaxBusSet
+
+ } while (0);
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_fabric_erepair exit" );
+
+ return l_StepError.getErrorHandle();
+ */
+ return l_errl;
+}
+};
diff --git a/src/usr/isteps/istep09/call_fabric_io_dccal.C b/src/usr/isteps/istep09/call_fabric_io_dccal.C
new file mode 100644
index 000000000..0b49bed69
--- /dev/null
+++ b/src/usr/isteps/istep09/call_fabric_io_dccal.C
@@ -0,0 +1,166 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/isteps/istep09/call_fabric_io_dccal.C $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2015 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+/**
+ * @file call_fabric_io_dccal.C
+ *
+ * Support file for IStep: edi_ei_initialization
+ * EDI, EI Initialization
+ *
+ * HWP_IGNORE_VERSION_CHECK
+ *
+ */
+
+/******************************************************************************/
+// Includes
+/******************************************************************************/
+#include <stdint.h>
+#include <map>
+
+#include <trace/interface.H>
+#include <initservice/taskargs.H>
+#include <errl/errlentry.H>
+
+#include <isteps/hwpisteperror.H>
+#include <errl/errludtarget.H>
+
+#include <initservice/isteps_trace.H>
+
+#include <hwas/common/deconfigGard.H>
+#include <hwas/common/hwasCommon.H>
+
+#include <sbe/sbeif.H>
+
+// targeting support
+#include <targeting/common/commontargeting.H>
+#include <targeting/common/utilFilter.H>
+#include <targeting/common/trace.H>
+
+namespace ISTEP_09
+{
+using namespace ISTEP;
+using namespace ISTEP_ERROR;
+using namespace ERRORLOG;
+using namespace TARGETING;
+using namespace HWAS;
+//
+// Wrapper function to call fabric_io_dccal
+//
+void* call_fabric_io_dccal( void *io_pArgs )
+{
+ errlHndl_t l_errl = NULL;
+ //@TODO RTC:134079 Port to fapi2
+/* IStepError l_StepError;
+
+ // We are not running this analog procedure in VPO
+ if (TARGETING::is_vpo())
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "Skip call_fabric_io_dccal in VPO!");
+ return l_StepError.getErrorHandle();
+ }
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_fabric_io_dccal entry" );
+
+ TargetPairs_t l_PbusConnections;
+ TargetPairs_t::iterator l_itr;
+ const uint32_t MaxBusSet = 2;
+ TYPE busSet[MaxBusSet] = { TYPE_ABUS, TYPE_XBUS };
+
+ // Note:
+ // Due to lab tester board environment, HW procedure writer (Varkey) has
+ // requested to send in one target of a time (we used to send in
+ // both ends in one call). Even though they don't have to be
+ // in order, we should keep the pair concept here in case we need to send
+ // in a pair in the future again.
+ for (uint32_t ii = 0; (!l_errl) && (ii < MaxBusSet); ii++)
+ {
+ l_errl = PbusLinkSvc::getTheInstance().getPbusConnections(
+ l_PbusConnections, busSet[ii] );
+
+ for (l_itr = l_PbusConnections.begin();
+ l_itr != l_PbusConnections.end();
+ ++l_itr)
+ {
+ const fapi::Target l_fapi_endp1_target(
+ (ii ? TARGET_TYPE_XBUS_ENDPOINT : TARGET_TYPE_ABUS_ENDPOINT),
+ (const_cast<TARGETING::Target*>(l_itr->first)));
+ const fapi::Target l_fapi_endp2_target(
+ (ii ? TARGET_TYPE_XBUS_ENDPOINT : TARGET_TYPE_ABUS_ENDPOINT),
+ (const_cast<TARGETING::Target*>(l_itr->second)));
+
+ //@TODO RTC:133830 call the HWP with each bus connection
+ //FAPI_INVOKE_HWP( l_errl, io_dccal, l_fapi_endp1_target );
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "%s : %cbus connection fabric_io_dccal. Target 0x%.8X",
+ (l_errl ? "ERROR" : "SUCCESS"), (ii ? 'X' : 'A'),
+ TARGETING::get_huid(l_itr->first) );
+ if ( l_errl )
+ {
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_itr->first).addToLog( l_errl );
+
+ // Create IStep error log and cross ref error that occurred
+ l_StepError.addErrorDetails( l_errl );
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+ // We want to continue the training despite the error, so
+ // no break
+ }
+
+ //@TODO RTC:133830 call the HWP with each bus connection
+ FAPI_INVOKE_HWP( l_errl, fabric_io_dccal, l_fapi_endp2_target );
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "%s : %cbus connection fabric_io_dccal. Target 0x%.8X",
+ (l_errl ? "ERROR" : "SUCCESS"), (ii ? 'X' : 'A'),
+ TARGETING::get_huid(l_itr->second) );
+ if ( l_errl )
+ {
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_itr->second).addToLog( l_errl );
+
+ // Create IStep error log and cross ref error that occurred
+ l_StepError.addErrorDetails( l_errl );
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+ // We want to continue the training despite the error, so
+ // no break
+ }
+ }
+ }
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_fabric_io_dccal exit" );
+
+ // end task, returning any errorlogs to IStepDisp
+ return l_StepError.getErrorHandle();
+ */
+ return l_errl;
+}
+};
diff --git a/src/usr/isteps/istep09/call_fabric_io_run_training.C b/src/usr/isteps/istep09/call_fabric_io_run_training.C
new file mode 100644
index 000000000..a9a4a78cf
--- /dev/null
+++ b/src/usr/isteps/istep09/call_fabric_io_run_training.C
@@ -0,0 +1,143 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/isteps/istep09/call_fabric_io_run_training.C $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2015 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+/**
+ * @file call_fabric_io_run_training.C
+ *
+ * Support file for IStep: edi_ei_initialization
+ * EDI, EI Initialization
+ *
+ * HWP_IGNORE_VERSION_CHECK
+ *
+ */
+
+/******************************************************************************/
+// Includes
+/******************************************************************************/
+#include <stdint.h>
+#include <map>
+
+#include <trace/interface.H>
+#include <initservice/taskargs.H>
+#include <errl/errlentry.H>
+
+#include <isteps/hwpisteperror.H>
+#include <errl/errludtarget.H>
+
+#include <initservice/isteps_trace.H>
+
+#include <hwas/common/deconfigGard.H>
+#include <hwas/common/hwasCommon.H>
+
+#include <sbe/sbeif.H>
+
+// targeting support
+#include <targeting/common/commontargeting.H>
+#include <targeting/common/utilFilter.H>
+#include <targeting/common/trace.H>
+
+namespace ISTEP_09
+{
+
+
+using namespace ISTEP;
+using namespace ISTEP_ERROR;
+using namespace ERRORLOG;
+using namespace TARGETING;
+using namespace HWAS;
+//
+// Wrapper function to call fabric_io_run_training
+//
+void* call_fabric_io_run_training( void *io_pArgs )
+{
+
+ IStepError l_StepError;
+ //@TODO RTC:134079
+/* errlHndl_t l_errl = NULL;
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_fabric_io_run_training entry" );
+
+ TargetPairs_t l_PbusConnections;
+ const uint32_t MaxBusSet = 2;
+
+ // Note: Run XBUS first to match with Cronus
+ TYPE busSet[MaxBusSet] = { TYPE_XBUS, TYPE_ABUS };
+
+ for (uint32_t i = 0; l_StepError.isNull() && (i < MaxBusSet); i++)
+ {
+ l_errl = PbusLinkSvc::getTheInstance().getPbusConnections(
+ l_PbusConnections, busSet[i] );
+
+ if ( l_errl )
+ {
+ // Create IStep error log and cross reference error that occurred
+ l_StepError.addErrorDetails( l_errl );
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+ }
+
+ for (TargetPairs_t::const_iterator l_itr = l_PbusConnections.begin();
+ (l_StepError.isNull()) && (l_itr != l_PbusConnections.end());
+ ++l_itr)
+ {
+ const fapi::Target l_fapi_endp1_target(
+ (i ? TARGET_TYPE_ABUS_ENDPOINT : TARGET_TYPE_XBUS_ENDPOINT),
+ (const_cast<TARGETING::Target*>(l_itr->first)));
+ const fapi::Target l_fapi_endp2_target(
+ (i ? TARGET_TYPE_ABUS_ENDPOINT : TARGET_TYPE_XBUS_ENDPOINT),
+ (const_cast<TARGETING::Target*>(l_itr->second)));
+
+ //@TODO RTC:133830 call the HWP with each bus connection
+ //FAPI_INVOKE_HWP( l_errl, p9_io_run_training,
+ // l_fapi_endp1_target, l_fapi_endp2_target );
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "%s : %cbus connection io_run_training",
+ (l_errl ? "ERROR" : "SUCCESS"),
+ (i ? 'A' : 'X') );
+
+ if ( l_errl )
+ {
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_itr->first).addToLog( l_errl );
+ ErrlUserDetailsTarget(l_itr->second).addToLog( l_errl );
+
+ // Create IStep error log and cross ref error that occurred
+ l_StepError.addErrorDetails( l_errl );
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+ }
+ }
+ }
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_fabric_io_run_training exit" );
+*/
+ // end task, returning any errorlogs to IStepDisp
+ return l_StepError.getErrorHandle();
+}
+};
diff --git a/src/usr/isteps/istep09/call_fabric_post_trainadv.C b/src/usr/isteps/istep09/call_fabric_post_trainadv.C
new file mode 100644
index 000000000..9fdfffa45
--- /dev/null
+++ b/src/usr/isteps/istep09/call_fabric_post_trainadv.C
@@ -0,0 +1,160 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/isteps/istep09/call_fabric_post_trainadv.C $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2015 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+/**
+ * @file call_fabric_post_trainadv.C
+ *
+ * Support file for IStep: edi_ei_initialization
+ * EDI, EI Initialization
+ *
+ * HWP_IGNORE_VERSION_CHECK
+ *
+ */
+
+/******************************************************************************/
+// Includes
+/******************************************************************************/
+#include <stdint.h>
+#include <map>
+
+#include <trace/interface.H>
+#include <initservice/taskargs.H>
+#include <errl/errlentry.H>
+
+#include <isteps/hwpisteperror.H>
+#include <errl/errludtarget.H>
+
+#include <initservice/isteps_trace.H>
+
+#include <hwas/common/deconfigGard.H>
+#include <hwas/common/hwasCommon.H>
+
+#include <sbe/sbeif.H>
+
+// targeting support
+#include <targeting/common/commontargeting.H>
+#include <targeting/common/utilFilter.H>
+#include <targeting/common/trace.H>
+
+namespace ISTEP_09
+{
+
+
+using namespace ISTEP;
+using namespace ISTEP_ERROR;
+using namespace ERRORLOG;
+using namespace TARGETING;
+using namespace HWAS;
+//
+// Wrapper function to call fabric_post_trainadv
+//
+void* call_fabric_post_trainadv( void *io_pArgs )
+{
+ IStepError l_StepError;
+ //@TODO RTC:134079
+/* errlHndl_t l_errl = NULL;
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_fabric_post_trainadv entry" );
+
+ TargetPairs_t l_PbusConnections;
+ TargetPairs_t::iterator l_itr;
+ const uint32_t MaxBusSet = 2;
+ TYPE busSet[MaxBusSet] = { TYPE_ABUS, TYPE_XBUS };
+
+ // Note:
+ // Due to lab tester board environment, HW procedure writer (Varkey) has
+ // requested to send in one target of a time (we used to send in
+ // both ends in one call). Even though they don't have to be
+ // in order, we should keep the pair concept here in case we need to send
+ // in a pair in the future again.
+
+ for (uint32_t ii = 0; (!l_errl) && (ii < MaxBusSet); ii++)
+ {
+ l_errl = PbusLinkSvc::getTheInstance().getPbusConnections(
+ l_PbusConnections, busSet[ii] );
+
+ for (l_itr = l_PbusConnections.begin();
+ l_itr != l_PbusConnections.end();
+ ++l_itr)
+ {
+ const fapi::Target l_fapi_endp1_target(
+ (ii ? TARGET_TYPE_XBUS_ENDPOINT : TARGET_TYPE_ABUS_ENDPOINT),
+ (const_cast<TARGETING::Target*>(l_itr->first)));
+ const fapi::Target l_fapi_endp2_target(
+ (ii ? TARGET_TYPE_XBUS_ENDPOINT : TARGET_TYPE_ABUS_ENDPOINT),
+ (const_cast<TARGETING::Target*>(l_itr->second)));
+
+ //@TODO RTC:133830 call the HWP with each bus connection
+ //FAPI_INVOKE_HWP( l_errl, p9_io_post_trainadv,
+ //l_fapi_endp1_target );
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "%s : %cbus connection fabric_post_trainadv. Target 0x%.8X",
+ (l_errl ? "ERROR" : "SUCCESS"), (ii ? 'X' : 'A'),
+ TARGETING::get_huid(l_itr->first) );
+ if ( l_errl )
+ {
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_itr->first).addToLog( l_errl );
+
+ // Create IStep error log and cross ref error that occurred
+ l_StepError.addErrorDetails( l_errl );
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+ // We want to continue the training despite the error, so
+ // no break
+ }
+
+ //@TODO RTC:133830 call the HWP with each bus connection
+ FAPI_INVOKE_HWP( l_errl, io_post_trainadv, l_fapi_endp2_target );
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "%s : %cbus connection fabric_post_trainadv. Target 0x%.8X",
+ (l_errl ? "ERROR" : "SUCCESS"), (ii ? 'X' : 'A'),
+ TARGETING::get_huid(l_itr->second) );
+ if ( l_errl )
+ {
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_itr->second).addToLog( l_errl );
+
+ // Create IStep error log and cross ref error that occurred
+ l_StepError.addErrorDetails( l_errl );
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+ // We want to continue the training despite the error, so
+ // no break
+ }
+ }
+ }
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_fabric_post_trainadv exit" );
+*/
+ // end task, returning any errorlogs to IStepDisp
+ return l_StepError.getErrorHandle();
+}
+};
diff --git a/src/usr/isteps/istep09/call_fabric_pre_trainadv.C b/src/usr/isteps/istep09/call_fabric_pre_trainadv.C
new file mode 100644
index 000000000..39ad83b14
--- /dev/null
+++ b/src/usr/isteps/istep09/call_fabric_pre_trainadv.C
@@ -0,0 +1,161 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/isteps/istep09/call_fabric_pre_trainadv.C $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2015 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+/**
+ * @file call_fabric_pre_trainadv.C
+ *
+ * Support file for IStep: edi_ei_initialization
+ * EDI, EI Initialization
+ *
+ * HWP_IGNORE_VERSION_CHECK
+ *
+ */
+
+/******************************************************************************/
+// Includes
+/******************************************************************************/
+#include <stdint.h>
+#include <map>
+
+#include <trace/interface.H>
+#include <initservice/taskargs.H>
+#include <errl/errlentry.H>
+
+#include <isteps/hwpisteperror.H>
+#include <errl/errludtarget.H>
+
+#include <initservice/isteps_trace.H>
+
+#include <hwas/common/deconfigGard.H>
+#include <hwas/common/hwasCommon.H>
+
+#include <sbe/sbeif.H>
+
+// targeting support
+#include <targeting/common/commontargeting.H>
+#include <targeting/common/utilFilter.H>
+#include <targeting/common/trace.H>
+
+namespace ISTEP_09
+{
+
+
+using namespace ISTEP;
+using namespace ISTEP_ERROR;
+using namespace ERRORLOG;
+using namespace TARGETING;
+using namespace HWAS;
+
+//
+// Wrapper function to call fabric_pre_trainadv
+//
+void* call_fabric_pre_trainadv( void *io_pArgs )
+{
+ IStepError l_StepError;
+ //@TODO RTC:134079
+/*
+ errlHndl_t l_errl = NULL;
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_fabric_pre_trainadv entry" );
+
+ TargetPairs_t l_PbusConnections;
+ TargetPairs_t::iterator l_itr;
+ const uint32_t MaxBusSet = 2;
+ TYPE busSet[MaxBusSet] = { TYPE_ABUS, TYPE_XBUS };
+
+ // Note:
+ // Due to lab tester board environment, HW procedure writer (Varkey) has
+ // requested to send in one target of a time (we used to send in
+ // both ends in one call). Even though they don't have to be
+ // in order, we should keep the pair concept here in case we need to send
+ // in a pair in the future again.
+
+ for (uint32_t ii = 0; (!l_errl) && (ii < MaxBusSet); ii++)
+ {
+ l_errl = PbusLinkSvc::getTheInstance().getPbusConnections(
+ l_PbusConnections, busSet[ii] );
+
+ for (l_itr = l_PbusConnections.begin();
+ l_itr != l_PbusConnections.end();
+ ++l_itr)
+ {
+ const fapi::Target l_fapi_endp1_target(
+ (ii ? TARGET_TYPE_XBUS_ENDPOINT : TARGET_TYPE_ABUS_ENDPOINT),
+ (const_cast<TARGETING::Target*>(l_itr->first)));
+ const fapi::Target l_fapi_endp2_target(
+ (ii ? TARGET_TYPE_XBUS_ENDPOINT : TARGET_TYPE_ABUS_ENDPOINT),
+ (const_cast<TARGETING::Target*>(l_itr->second)));
+
+ //@TODO RTC:133830 call the HWP with each bus connection
+ //FAPI_INVOKE_HWP( l_errl, p9_io_pre_trainadv,
+ //l_fapi_endp1_target );
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "%s : %cbus connection fabric_pre_trainadv. Target 0x%.8X",
+ (l_errl ? "ERROR" : "SUCCESS"), (ii ? 'X' : 'A'),
+ TARGETING::get_huid(l_itr->first) );
+ if ( l_errl )
+ {
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_itr->first).addToLog( l_errl );
+
+ // Create IStep error log and cross ref error that occurred
+ l_StepError.addErrorDetails( l_errl );
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+ // We want to continue the training despite the error, so
+ // no break
+ }
+
+ //@TODO RTC:133830 call the HWP with each bus connection
+ FAPI_INVOKE_HWP( l_errl, io_pre_trainadv, l_fapi_endp2_target );
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "%s : %cbus connection fabric_pre_trainadv. Target 0x%.8X",
+ (l_errl ? "ERROR" : "SUCCESS"), (ii ? 'X' : 'A'),
+ TARGETING::get_huid(l_itr->second) );
+ if ( l_errl )
+ {
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_itr->second).addToLog( l_errl );
+
+ // Create IStep error log and cross ref error that occurred
+ l_StepError.addErrorDetails( l_errl );
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+ // We want to continue the training despite the error, so
+ // no break
+ }
+ }
+ }
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_fabric_pre_trainadv exit" );
+*/
+ // end task, returning any errorlogs to IStepDisp
+ return l_StepError.getErrorHandle();
+}
+};
diff --git a/src/usr/isteps/istep09/call_host_attnlisten_proc.C b/src/usr/isteps/istep09/call_host_attnlisten_proc.C
new file mode 100644
index 000000000..0f9bbbf09
--- /dev/null
+++ b/src/usr/isteps/istep09/call_host_attnlisten_proc.C
@@ -0,0 +1,117 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/isteps/istep09/call_host_attnlisten_proc.C $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2015 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+/**
+ * @file call_host_attnlisten_proc.C
+ *
+ * Support file for IStep: edi_ei_initialization
+ * EDI, EI Initialization
+ *
+ * HWP_IGNORE_VERSION_CHECK
+ *
+ */
+
+/******************************************************************************/
+// Includes
+/******************************************************************************/
+#include <stdint.h>
+#include <map>
+
+#include <trace/interface.H>
+#include <initservice/taskargs.H>
+#include <errl/errlentry.H>
+
+#include <isteps/hwpisteperror.H>
+#include <errl/errludtarget.H>
+
+#include <initservice/isteps_trace.H>
+
+#include <hwas/common/deconfigGard.H>
+#include <hwas/common/hwasCommon.H>
+
+#include <sbe/sbeif.H>
+
+// targeting support
+#include <targeting/common/commontargeting.H>
+#include <targeting/common/utilFilter.H>
+#include <targeting/common/trace.H>
+
+namespace ISTEP_09
+{
+
+
+using namespace ISTEP;
+using namespace ISTEP_ERROR;
+using namespace ERRORLOG;
+using namespace TARGETING;
+using namespace HWAS;
+
+
+//
+// Wrapper function to call host_attnlisten_proc
+//
+void* call_host_attnlisten_proc( void *io_pArgs )
+{
+ errlHndl_t l_errl = NULL;
+
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_host_attnlisten_proc entry" );
+
+#if 0
+ // @@@@@ CUSTOM BLOCK: @@@@@
+ // figure out what targets we need
+ // customize any other inputs
+ // set up loops to go through all targets (if parallel, spin off a task)
+
+ // write HUID of target
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "target HUID %.8X", TARGETING::get_huid(l));
+
+ // cast OUR type of target to a FAPI type of target.
+ const fapi::Target l_fapi_@targetN_target( TARGET_TYPE_MEMBUF_CHIP,
+ (const_cast<TARGETING::Target*>(l_@targetN_target)) );
+
+ //@TODO RTC:133830 call the HWP with each fapi::Target
+ FAPI_INVOKE_HWP( l_errl, host_attnlisten_proc, _args_...);
+ if ( l_errl )
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR : .........." );
+ errlCommit( l_errl, HWPF_COMP_ID );
+ }
+ else
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS : .........." );
+ }
+ // @@@@@ END CUSTOM BLOCK: @@@@@
+#endif
+
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_host_attnlisten_proc exit" );
+
+ // end task, returning any errorlogs to IStepDisp
+ return l_errl;
+}
+};
diff --git a/src/usr/isteps/istep09/call_host_startprd_pbus.C b/src/usr/isteps/istep09/call_host_startprd_pbus.C
new file mode 100644
index 000000000..a3d0b6b18
--- /dev/null
+++ b/src/usr/isteps/istep09/call_host_startprd_pbus.C
@@ -0,0 +1,132 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/isteps/istep09/call_host_startprd_pbus.C $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2012,2015 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+
+/**
+ * @file edi_ei_initialization.C
+ *
+ * Support file for IStep: edi_ei_initialization
+ * EDI, EI Initialization
+ *
+ * HWP_IGNORE_VERSION_CHECK
+ *
+ */
+
+/******************************************************************************/
+// Includes
+/******************************************************************************/
+#include <stdint.h>
+#include <map>
+
+#include <trace/interface.H>
+#include <initservice/taskargs.H>
+#include <errl/errlentry.H>
+
+#include <isteps/hwpisteperror.H>
+#include <errl/errludtarget.H>
+
+#include <initservice/isteps_trace.H>
+
+#include <hwas/common/deconfigGard.H>
+#include <hwas/common/hwasCommon.H>
+
+#include <sbe/sbeif.H>
+
+// targeting support
+#include <targeting/common/commontargeting.H>
+#include <targeting/common/utilFilter.H>
+#include <targeting/common/trace.H>
+
+#include <diag/prdf/prdfMain.H>
+
+#ifdef CONFIG_ENABLE_CHECKSTOP_ANALYSIS
+ #include <occ/occ_common.H>
+#endif
+
+namespace ISTEP_09
+{
+
+
+using namespace ISTEP;
+using namespace ISTEP_ERROR;
+using namespace ERRORLOG;
+using namespace TARGETING;
+using namespace HWAS;
+
+
+//
+// Wrapper function to call host_startprd_pbus
+//
+void* call_host_startprd_pbus( void *io_pArgs )
+{
+ errlHndl_t l_errl = NULL;
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_host_startprd_pbus entry" );
+
+ do
+ {
+ l_errl = PRDF::initialize();
+ if (l_errl)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "Error returned from call to PRDF::initialize");
+ break;
+ }
+
+ // Perform calculated deconfiguration of procs based on
+ // bus endpoint deconfigurations, and perform SMP node
+ // balancing
+ l_errl = HWAS::theDeconfigGard().deconfigureAssocProc();
+ if (l_errl)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "Error returned from call to "
+ "HWAS::theDeconfigGard().deconfigureAssocProc");
+ break;
+ }
+
+#ifdef CONFIG_ENABLE_CHECKSTOP_ANALYSIS
+ // update firdata inputs for OCC
+ TARGETING::Target* masterproc = NULL;
+ TARGETING::targetService().masterProcChipTargetHandle(masterproc);
+ l_errl = HBOCC::loadHostDataToSRAM(masterproc,
+ PRDF::ALL_PROC_MASTER_CORE);
+ if (l_errl)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "Error returned from call to HBOCC::loadHostDataToSRAM");
+ break;
+ }
+#endif
+
+ }while(0);
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_host_startprd_pbus exit" );
+
+ // end task, returning any errorlogs to IStepDisp
+ return l_errl;
+}
+};
diff --git a/src/usr/isteps/istep09/call_proc_fab_iovalid.C b/src/usr/isteps/istep09/call_proc_fab_iovalid.C
new file mode 100644
index 000000000..1b79ea55b
--- /dev/null
+++ b/src/usr/isteps/istep09/call_proc_fab_iovalid.C
@@ -0,0 +1,201 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/isteps/istep09/call_proc_fab_iovalid.C $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2015 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+/**
+ * @file call_proc_fab_iovalid.C
+ *
+ * Support file for IStep: edi_ei_initialization
+ * EDI, EI Initialization
+ *
+ * HWP_IGNORE_VERSION_CHECK
+ *
+ */
+
+/******************************************************************************/
+// Includes
+/******************************************************************************/
+#include <stdint.h>
+#include <map>
+
+#include <trace/interface.H>
+#include <initservice/taskargs.H>
+#include <errl/errlentry.H>
+
+#include <isteps/hwpisteperror.H>
+#include <errl/errludtarget.H>
+
+#include <initservice/isteps_trace.H>
+
+#include <hwas/common/deconfigGard.H>
+#include <hwas/common/hwasCommon.H>
+
+#include <sbe/sbeif.H>
+
+// targeting support
+#include <targeting/common/commontargeting.H>
+#include <targeting/common/utilFilter.H>
+#include <targeting/common/trace.H>
+
+namespace ISTEP_09
+{
+
+using namespace ISTEP;
+using namespace ISTEP_ERROR;
+using namespace ERRORLOG;
+using namespace TARGETING;
+using namespace HWAS;
+//
+// Wrapper function to call proc_fab_iovalid
+//
+void* call_proc_fab_iovalid( void *io_pArgs )
+{
+ IStepError l_StepError;
+ //@TODO RTC:134079 port to fapi2
+/* errlHndl_t l_errl = NULL;
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_proc_fab_iovalid entry" );
+
+ // Get all chip/chiplet targets
+ TARGETING::TargetHandleList l_cpuTargetList;
+ getAllChips(l_cpuTargetList, TYPE_PROC);
+
+ TargetPairs_t l_abusConnections;
+ TargetPairs_t l_xbusConnections;
+ l_errl = PbusLinkSvc::getTheInstance().getPbusConnections(
+ l_abusConnections, TYPE_ABUS, false );
+ if (!l_errl)
+ {
+ l_errl = PbusLinkSvc::getTheInstance().getPbusConnections(
+ l_xbusConnections, TYPE_XBUS, false );
+ }
+
+ if ( l_errl )
+ {
+ // Create IStep error log and cross reference error that occurred
+ l_StepError.addErrorDetails( l_errl );
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+ }
+
+ std::vector<proc_fab_iovalid_proc_chip> l_smp;
+
+ for (TargetHandleList::const_iterator l_cpu_iter = l_cpuTargetList.begin();
+ l_StepError.isNull() && (l_cpu_iter != l_cpuTargetList.end());
+ ++l_cpu_iter)
+ {
+ proc_fab_iovalid_proc_chip l_procEntry;
+
+ TARGETING::TargetHandle_t l_pTarget = *l_cpu_iter;
+ fapi::Target l_fapiproc_target( TARGET_TYPE_PROC_CHIP, l_pTarget);
+
+ l_procEntry.this_chip = l_fapiproc_target;
+ l_procEntry.a0 = false;
+ l_procEntry.a1 = false;
+ l_procEntry.a2 = false;
+ l_procEntry.x0 = false;
+ l_procEntry.x1 = false;
+ l_procEntry.x2 = false;
+ l_procEntry.x3 = false;
+
+ TARGETING::TargetHandleList l_abuses;
+ getChildChiplets( l_abuses, l_pTarget, TYPE_ABUS );
+
+ for (TargetHandleList::const_iterator l_abus_iter = l_abuses.begin();
+ l_abus_iter != l_abuses.end();
+ ++l_abus_iter)
+ {
+ TARGETING::TargetHandle_t l_target = *l_abus_iter;
+ uint8_t l_srcID = l_target->getAttr<ATTR_CHIP_UNIT>();
+ TargetPairs_t::iterator l_itr = l_abusConnections.find(l_target);
+ if ( l_itr == l_abusConnections.end() )
+ {
+ continue;
+ }
+ switch (l_srcID)
+ {
+ case 0: l_procEntry.a0 = true; break;
+ case 1: l_procEntry.a1 = true; break;
+ case 2: l_procEntry.a2 = true; break;
+ default: break;
+ }
+ }
+
+ TARGETING::TargetHandleList l_xbuses;
+ getChildChiplets( l_xbuses, l_pTarget, TYPE_XBUS );
+
+ for (TargetHandleList::const_iterator l_xbus_iter = l_xbuses.begin();
+ l_xbus_iter != l_xbuses.end();
+ ++l_xbus_iter)
+ {
+ TARGETING::TargetHandle_t l_target = *l_xbus_iter;
+ uint8_t l_srcID = l_target->getAttr<ATTR_CHIP_UNIT>();
+ TargetPairs_t::iterator l_itr = l_xbusConnections.find(l_target);
+ if ( l_itr == l_xbusConnections.end() )
+ {
+ continue;
+ }
+ switch (l_srcID)
+ {
+ case 0: l_procEntry.x0 = true; break;
+ case 1: l_procEntry.x1 = true; break;
+ case 2: l_procEntry.x2 = true; break;
+ case 3: l_procEntry.x3 = true; break;
+ default: break;
+ }
+ }
+
+ l_smp.push_back(l_procEntry);
+ }
+
+ if (!l_errl)
+ {
+ //@TODO RTC:133830
+ //FAPI_INVOKE_HWP( l_errl, p9_fab_iovalid, l_smp, true );
+
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "%s : proc_fab_iovalid HWP.",
+ (l_errl ? "ERROR" : "SUCCESS"));
+ }
+
+ if (l_errl)
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR : call_proc_fab_iovalid encountered an error");
+
+ // Create IStep error log and cross reference error that occurred
+ l_StepError.addErrorDetails( l_errl );
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+ }
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_proc_fab_iovalid exit" );
+*/
+ // end task, returning any errorlogs to IStepDisp
+ return l_StepError.getErrorHandle();
+}
+}; // end namespace
diff --git a/src/usr/isteps/istep09/call_proc_smp_link_layer.C b/src/usr/isteps/istep09/call_proc_smp_link_layer.C
new file mode 100644
index 000000000..106d59be9
--- /dev/null
+++ b/src/usr/isteps/istep09/call_proc_smp_link_layer.C
@@ -0,0 +1,90 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/isteps/istep09/call_proc_smp_link_layer.C $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2015 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+/**
+ * @file call_proc_smp_link_layer.C
+ *
+ * Support file for IStep: edi_ei_initialization
+ * EDI, EI Initialization
+ *
+ * HWP_IGNORE_VERSION_CHECK
+ *
+ */
+
+/******************************************************************************/
+// Includes
+/******************************************************************************/
+#include <stdint.h>
+#include <map>
+
+#include <trace/interface.H>
+#include <initservice/taskargs.H>
+#include <errl/errlentry.H>
+
+#include <isteps/hwpisteperror.H>
+#include <errl/errludtarget.H>
+
+#include <initservice/isteps_trace.H>
+
+#include <hwas/common/deconfigGard.H>
+#include <hwas/common/hwasCommon.H>
+
+#include <sbe/sbeif.H>
+
+// targeting support
+#include <targeting/common/commontargeting.H>
+#include <targeting/common/utilFilter.H>
+#include <targeting/common/trace.H>
+
+namespace ISTEP_09
+{
+
+using namespace ISTEP;
+using namespace ISTEP_ERROR;
+using namespace ERRORLOG;
+using namespace TARGETING;
+using namespace HWAS;
+
+
+//
+// Wrapper function to call proc_smp_link_layer
+//
+void* call_proc_smp_link_layer( void *io_pArgs )
+{
+ errlHndl_t l_errl = NULL;
+ IStepError l_StepError;
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_proc_smp_link_layer entry" );
+ //@TODO RTC:133830 call HWP
+ //FAPI_INVOKE_HWP(l_errl,p9_smp_link_layer);
+ if(l_errl)
+ {
+ l_StepError.addErrorDetails(l_errl);
+ errlCommit(l_errl, HWPF_COMP_ID);
+ }
+ return l_StepError.getErrorHandle();
+
+}
+};
diff --git a/src/usr/isteps/istep09/makefile b/src/usr/isteps/istep09/makefile
new file mode 100644
index 000000000..f24a5a317
--- /dev/null
+++ b/src/usr/isteps/istep09/makefile
@@ -0,0 +1,40 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/isteps/istep09/makefile $
+#
+# OpenPOWER HostBoot Project
+#
+# Contributors Listed Below - COPYRIGHT 2015
+# [+] International Business Machines Corp.
+#
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# permissions and limitations under the License.
+#
+# IBM_PROLOG_END_TAG
+ROOTPATH = ../../../..
+MODULE = istep09
+
+OBJS += call_fabric_erepair.o
+OBJS += call_fabric_io_dccal.o
+OBJS += call_fabric_pre_trainadv.o
+OBJS += call_fabric_io_run_training.o
+OBJS += call_fabric_post_trainadv.o
+OBJS += call_proc_smp_link_layer.o
+OBJS += call_host_startprd_pbus.o
+OBJS += call_host_attnlisten_proc.o
+OBJS += call_proc_fab_iovalid.o
+
+EXTRAINCDIR += ${ROOTPATH}/src/include/usr/ecmddatabuffer/
+
+include ${ROOTPATH}/config.mk
diff --git a/src/usr/isteps/makefile b/src/usr/isteps/makefile
index 35403a1a2..6344af107 100644
--- a/src/usr/isteps/makefile
+++ b/src/usr/isteps/makefile
@@ -28,6 +28,7 @@ MODULE = isteps
SUBDIRS+=istep06.d
SUBDIRS+=istep07.d
SUBDIRS+=istep08.d
+SUBDIRS+=istep09.d
OBJS += hwpisteperror.o
OBJS += hwpistepud.o
OpenPOWER on IntegriCloud