summaryrefslogtreecommitdiffstats
path: root/src/usr
diff options
context:
space:
mode:
authorPrachi Gupta <pragupta@us.ibm.com>2015-10-26 10:22:47 -0500
committerPatrick Williams <iawillia@us.ibm.com>2015-12-11 15:30:27 -0600
commitbf4cb3342fe0aa8a51d11bb85bddab61a0a7398c (patch)
treea82a40996692bb3d12db4e951ca3cd0c267b1d8d /src/usr
parent3f38d7bb2084ab959fd407e4b864e995d2b003a7 (diff)
downloadtalos-hostboot-bf4cb3342fe0aa8a51d11bb85bddab61a0a7398c.tar.gz
talos-hostboot-bf4cb3342fe0aa8a51d11bb85bddab61a0a7398c.zip
P9 Isteps: Created directory structure for istep 14 wrappers
Change-Id: Idad8c430afef013a91e0c206d4fff80fc45053c0 RTC:137652 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/21501 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr')
-rw-r--r--src/usr/hwpf/hwp/bus_training/pbusLinkSvc.C2
-rw-r--r--src/usr/hwpf/hwp/dram_initialization/dram_initialization.C1071
-rw-r--r--src/usr/hwpf/hwp/establish_system_smp/establish_system_smp.C2
-rw-r--r--src/usr/hwpf/hwp/occ/occ.C2
-rw-r--r--src/usr/hwpf/hwp/occ/occAccess.C4
-rw-r--r--src/usr/hwpf/hwp/occ/occ_common.C2
-rw-r--r--src/usr/hwpf/hwp/occ/runtime/rt_occ.C2
-rw-r--r--src/usr/hwpf/hwp/pstates/pstates/freqVoltageSvc.C2
-rw-r--r--src/usr/hwpf/hwp/thread_activate/thread_activate.C6
-rw-r--r--src/usr/hwpf/plat/fapiPlatAttrOverrideSync.C6
-rw-r--r--src/usr/hwpf/plat/fapiPlatAttributeService.C2
-rw-r--r--src/usr/hwpf/plat/fapiPlatHwAccess.C6
-rw-r--r--src/usr/hwpf/plat/fapiPlatHwpInvoker.C2
-rw-r--r--src/usr/hwpf/plat/fapiPlatMBvpdAccess.C2
-rw-r--r--src/usr/hwpf/plat/fapiPlatMvpdAccess.C2
-rw-r--r--src/usr/hwpf/plat/fapiPlatSystemConfig.C4
-rw-r--r--src/usr/hwpf/plat/fapiPlatUtil.C2
-rw-r--r--src/usr/hwpf/test/occAccessTest.H4
-rw-r--r--src/usr/isteps/hwpistepud.C2
-rw-r--r--src/usr/isteps/istep13/hbVddrMsg.H2
-rw-r--r--src/usr/isteps/istep13/palmetto_vddr.C2
-rw-r--r--src/usr/isteps/istep14/call_host_mpipl_service.C270
-rw-r--r--src/usr/isteps/istep14/call_host_startprd_dram.C88
-rw-r--r--src/usr/isteps/istep14/call_mss_memdiag.C73
-rw-r--r--src/usr/isteps/istep14/call_mss_power_cleanup.C143
-rw-r--r--src/usr/isteps/istep14/call_mss_thermal_init.C174
-rw-r--r--src/usr/isteps/istep14/call_proc_exit_cache_contained.C282
-rw-r--r--src/usr/isteps/istep14/call_proc_htm_setup.C40
-rw-r--r--src/usr/isteps/istep14/call_proc_pcie_config.C106
-rw-r--r--src/usr/isteps/istep14/call_proc_setup_bars.C225
-rw-r--r--src/usr/isteps/istep14/makefile38
-rw-r--r--src/usr/isteps/makefile1
32 files changed, 1473 insertions, 1096 deletions
diff --git a/src/usr/hwpf/hwp/bus_training/pbusLinkSvc.C b/src/usr/hwpf/hwp/bus_training/pbusLinkSvc.C
index c085a22f5..5c40c091a 100644
--- a/src/usr/hwpf/hwp/bus_training/pbusLinkSvc.C
+++ b/src/usr/hwpf/hwp/bus_training/pbusLinkSvc.C
@@ -23,7 +23,7 @@
/* */
/* IBM_PROLOG_END_TAG */
#include "pbusLinkSvc.H"
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
namespace EDI_EI_INITIALIZATION
{
diff --git a/src/usr/hwpf/hwp/dram_initialization/dram_initialization.C b/src/usr/hwpf/hwp/dram_initialization/dram_initialization.C
index edf2732e1..d7fbcd0af 100644
--- a/src/usr/hwpf/hwp/dram_initialization/dram_initialization.C
+++ b/src/usr/hwpf/hwp/dram_initialization/dram_initialization.C
@@ -55,7 +55,7 @@
// fapi support
#include <fapi.H>
#include <fapiPlatHwpInvoker.H>
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
#include "dram_initialization.H"
#include <pbusLinkSvc.H>
@@ -98,66 +98,6 @@ using namespace fapi;
using namespace ERRORLOG;
//
-// Wrapper function to call host_startprd_dram
-//
-void* call_host_startprd_dram( void *io_pArgs )
-{
- errlHndl_t l_errl = NULL;
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_host_startPRD_dram 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_@targetN_target));
-
- // 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_startPRD_dram, _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
-
-#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_MEM_MASTER_CORE);
- if (l_errl)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "Error returned from call to HBOCC::loadHostDataToSRAM");
- }
-#endif
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_host_startPRD_dram exit" );
-
- // end task, returning any errorlogs to IStepDisp
- return l_errl;
-}
-
-//
// Wrapper function to call mss_extent_setup
//
void* call_mss_extent_setup( void *io_pArgs )
@@ -197,1013 +137,4 @@ void* call_mss_extent_setup( void *io_pArgs )
return l_stepError.getErrorHandle();
}
-
-//
-// Wrapper function to call mss_memdiag
-//
-void* call_mss_memdiag( void *io_pArgs )
-{
- using namespace MDIA;
-
- errlHndl_t l_errl = NULL;
-
- IStepError l_stepError;
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_mss_memdiag entry" );
-
- TargetHandleList l_mbaList;
- getAllChiplets(l_mbaList, TYPE_MBA);
-
- do {
-
- l_errl = ATTN::startService();
-
- if(l_errl)
- {
- break;
- }
-
- l_errl = runStep(l_mbaList);
- if(NULL != l_errl)
- {
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,"MDIA subStep failed");
- break;
- }
-
- l_errl = ATTN::stopService();
-
- if(l_errl)
- {
- break;
- }
-
-
- } while (0);
-
- if( l_errl )
- {
- // Create IStep error log and cross reference to error that occurred
- l_stepError.addErrorDetails( l_errl );
-
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
- }
-
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_mss_memdiag exit" );
-
- // end task, returning any errorlogs to IStepDisp
- return l_stepError.getErrorHandle();
-}
-
-//
-// Wrapper function to call mss_thermal_init
-//
-void* call_mss_thermal_init( void *io_pArgs )
-{
- errlHndl_t l_errl = NULL;
- IStepError l_StepError;
-
- do
- {
- // Get all Centaur targets
- TARGETING::TargetHandleList l_memBufTargetList;
- getAllChips(l_memBufTargetList, TYPE_MEMBUF );
-
- // --------------------------------------------------------------------
- // run mss_thermal_init on all Centaurs
- // --------------------------------------------------------------------
- for (TargetHandleList::const_iterator
- l_iter = l_memBufTargetList.begin();
- l_iter != l_memBufTargetList.end();
- ++l_iter)
- {
- // make a local copy of the target for ease of use
- const TARGETING::Target* l_pCentaur = *l_iter;
-
- // write HUID of target
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "target HUID %.8X", TARGETING::get_huid(l_pCentaur));
-
- // cast OUR type of target to a FAPI type of target.
- const fapi::Target l_fapi_pCentaur( TARGET_TYPE_MEMBUF_CHIP,
- (const_cast<TARGETING::Target*>(l_pCentaur)) );
-
- // Current run on target
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "Running call_mss_thermal_init HWP on "
- "target HUID %.8X", TARGETING::get_huid(l_pCentaur));
-
-
- // call the HWP with each fapi::Target
- FAPI_INVOKE_HWP( l_errl, mss_thermal_init, l_fapi_pCentaur );
-
- if ( l_errl )
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X: mss_thermal_init HWP returns error",
- l_errl->reasonCode());
-
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_pCentaur).addToLog( l_errl );
-
- // Create IStep error log and cross reference to error that occurred
- l_StepError.addErrorDetails( l_errl );
-
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
-
- break;
- }
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : mss_thermal_init HWP( )" );
- }
- }
- if (l_errl)
- {
- break;
- }
-
- // Run proc throttle sync
- // Get all functional proc chip targets
- TARGETING::TargetHandleList l_cpuTargetList;
- getAllChips(l_cpuTargetList, TYPE_PROC);
-
- for (TARGETING::TargetHandleList::const_iterator
- l_cpuIter = l_cpuTargetList.begin();
- l_cpuIter != l_cpuTargetList.end();
- ++l_cpuIter)
- {
- const TARGETING::Target* l_pTarget = *l_cpuIter;
- fapi::Target l_fapiproc_target( TARGET_TYPE_PROC_CHIP,
- (const_cast<TARGETING::Target*>(l_pTarget)));
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "Running proc_throttle_sync HWP on "
- "target HUID %.8X", TARGETING::get_huid(l_pTarget));
-
- // Call proc_throttle_sync
- FAPI_INVOKE_HWP( l_errl, proc_throttle_sync, l_fapiproc_target );
-
- if (l_errl)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X: proc_throttle_sync HWP returns error",
- l_errl->reasonCode());
-
- // Capture the target data in the elog
- ErrlUserDetailsTarget(l_pTarget).addToLog(l_errl);
-
- // Create IStep error log and cross reference to error that occurred
- l_StepError.addErrorDetails( l_errl );
-
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
-
- break;
- }
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : proc_throttle_sync HWP( )" );
- }
- }
-
- } while (0);
-
-
- if(l_StepError.isNull())
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : call_mss_thermal_init" );
- }
-
- // end task, returning any errorlogs to IStepDisp
- return l_StepError.getErrorHandle();
-}
-
-//
-// Wrapper function to call proc_pcie_config
-//
-void* call_proc_pcie_config( void *io_pArgs )
-{
- errlHndl_t l_errl = NULL;
-
- IStepError l_stepError;
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_proc_pcie_config entry" );
-
- TARGETING::TargetHandleList l_procTargetList;
- getAllChips(l_procTargetList, TYPE_PROC );
-
- for ( TargetHandleList::const_iterator
- l_iter = l_procTargetList.begin();
- l_iter != l_procTargetList.end();
- ++l_iter )
- {
- const TARGETING::Target* l_pTarget = *l_iter;
-
- // write HUID of target
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "target HUID %.8X", TARGETING::get_huid(l_pTarget));
-
- // build a FAPI type of target.
- const fapi::Target l_fapi_pTarget( TARGET_TYPE_PROC_CHIP,
- (const_cast<TARGETING::Target*>(l_pTarget)) );
-
- // call the HWP with each fapi::Target
- FAPI_INVOKE_HWP( l_errl, proc_pcie_config, l_fapi_pTarget );
-
- if ( l_errl )
- {
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_pTarget).addToLog( l_errl );
-
- // Create IStep error log and cross reference to error that occurred
- l_stepError.addErrorDetails( l_errl );
-
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
-
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR : proc_pcie_config" );
-
- break;
- }
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : proc_pcie_config" );
- }
- }
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_proc_pcie_config exit" );
-
- // end task, returning any errorlogs to IStepDisp
- return l_stepError.getErrorHandle();
-}
-
-
-//
-// Wrapper function to call mss_power_cleanup
-//
-void* call_mss_power_cleanup( void *io_pArgs )
-{
- errlHndl_t l_err = NULL;
- IStepError l_stepError;
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_mss_power_cleanup entry" );
-
- // Get a list of all present Centaurs
- TargetHandleList l_presCentaurs;
- getChipResources(l_presCentaurs, TYPE_MEMBUF, UTIL_FILTER_PRESENT);
-
- // For each present Centaur
- for (TargetHandleList::const_iterator
- l_cenIter = l_presCentaurs.begin();
- l_cenIter != l_presCentaurs.end();
- ++l_cenIter)
- {
- // Make a local copy of the target for ease of use
- TARGETING::Target * l_pCentaur = *l_cenIter;
- // Retrieve HUID of current Centaur
- TARGETING::ATTR_HUID_type l_currCentaurHuid =
- TARGETING::get_huid(l_pCentaur);
-
- // Find all present MBAs associated with this Centaur
- TARGETING::TargetHandleList l_presMbas;
- getChildAffinityTargetsByState(l_presMbas,
- l_pCentaur,
- CLASS_UNIT,
- TYPE_MBA,
- UTIL_FILTER_PRESENT);
-
- // If not at least two MBAs found
- if (l_presMbas.size() < 2)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "Not enough MBAs found for Centaur target HUID %.8X, "
- "skipping this Centaur.",
- l_currCentaurHuid);
- continue;
- }
-
- // Cache current MBA HUIDs for tracing
- TARGETING::ATTR_HUID_type l_currMBA0Huid =
- TARGETING::get_huid(l_presMbas[0]);
- TARGETING::ATTR_HUID_type l_currMBA1Huid =
- TARGETING::get_huid(l_presMbas[1]);
-
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "Running mss_power_cleanup HWP on "
- "Centaur HUID %.8X, MBA0 HUID %.8X, "
- "MBA1 HUID %.8X, ", l_currCentaurHuid,
- l_currMBA0Huid, l_currMBA1Huid);
-
- // Create FAPI Targets.
- const fapi::Target l_fapiCentaurTarget(TARGET_TYPE_MEMBUF_CHIP,
- (const_cast<TARGETING::Target*>(l_pCentaur)));
- const fapi::Target l_fapiMba0Target(TARGET_TYPE_MBA_CHIPLET,
- (const_cast<TARGETING::Target*>(l_presMbas[0])));
- const fapi::Target l_fapiMba1Target(TARGET_TYPE_MBA_CHIPLET,
- (const_cast<TARGETING::Target*>(l_presMbas[1])));
-
- // Call the HWP with each fapi::Target
- FAPI_INVOKE_HWP(l_err, mss_power_cleanup, l_fapiCentaurTarget,
- l_fapiMba0Target, l_fapiMba1Target);
-
- if (l_err)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "mss_power_cleanup HWP failed to perform"
- " cleanup on centaur: 0x%.8X HWP_ERROR: 0x%.8X",
- l_currCentaurHuid,l_err->reasonCode());
- // Capture the target data in the error log
- ErrlUserDetailsTarget(l_pCentaur).addToLog(l_err);
- // Create IStep error log and cross reference error that occurred
- l_stepError.addErrorDetails(l_err);
- // Commit error
- errlCommit(l_err, HWPF_COMP_ID);
- }
- else
- {
- // Success
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "Successfully ran mss_power_cleanup HWP on "
- "Centaur HUID %.8X, MBA0 HUID %.8X, "
- "MBA1 HUID %.8X, ", l_currCentaurHuid,
- l_currMBA0Huid, l_currMBA1Huid);
- }
- }
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_mss_power_cleanup exit" );
-
- // end task, returning any errorlogs to IStepDisp
- return l_stepError.getErrorHandle();
-}
-
-
-//
-// Wrapper function to call proc_setup_bars
-//
-void* call_proc_setup_bars( void *io_pArgs )
-{
- errlHndl_t l_errl = NULL;
-
- IStepError l_stepError;
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_proc_setup_bars entry" );
-
-
- // @@@@@ CUSTOM BLOCK: @@@@@
- // Get all Centaur targets
- TARGETING::TargetHandleList l_cpuTargetList;
- getAllChips(l_cpuTargetList, TYPE_PROC );
-
- // --------------------------------------------------------------------
- // run mss_setup_bars on all CPUs.
- // --------------------------------------------------------------------
- for (TargetHandleList::const_iterator
- l_cpu_iter = l_cpuTargetList.begin();
- l_cpu_iter != l_cpuTargetList.end();
- ++l_cpu_iter)
- {
- // make a local copy of the target for ease of use
- const TARGETING::Target* l_pCpuTarget = *l_cpu_iter;
-
- // write HUID of target
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "mss_setup_bars: proc "
- "target HUID %.8X", TARGETING::get_huid(l_pCpuTarget));
-
- // cast OUR type of target to a FAPI type of target.
- const fapi::Target l_fapi_pCpuTarget( TARGET_TYPE_PROC_CHIP,
- (const_cast<TARGETING::Target*> (l_pCpuTarget)) );
-
- TARGETING::TargetHandleList l_membufsList;
- getChildAffinityTargets(l_membufsList, l_pCpuTarget,
- CLASS_CHIP, TYPE_MEMBUF);
- std::vector<fapi::Target> l_associated_centaurs;
-
- for (TargetHandleList::const_iterator
- l_membuf_iter = l_membufsList.begin();
- l_membuf_iter != l_membufsList.end();
- ++l_membuf_iter)
- {
- // make a local copy of the target for ease of use
- const TARGETING::Target* l_pTarget = *l_membuf_iter;
-
- // cast OUR type of target to a FAPI type of target.
- const fapi::Target l_fapi_centaur_target(fapi::TARGET_TYPE_MEMBUF_CHIP,
- (const_cast<TARGETING::Target*>(l_pTarget)) );
-
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "target HUID %.8X", TARGETING::get_huid(l_pTarget));
-
- l_associated_centaurs.push_back(l_fapi_centaur_target);
- }
-
- // call the HWP with each fapi::Target
- FAPI_INVOKE_HWP(l_errl,
- mss_setup_bars,
- l_fapi_pCpuTarget, l_associated_centaurs );
-
- if ( l_errl )
- {
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_pCpuTarget).addToLog( l_errl );
-
- // Create IStep error log and cross reference to error that occurred
- l_stepError.addErrorDetails( l_errl );
-
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
-
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR : mss_setup_bars" );
- // break and return with error
- break;
- }
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : mss_setup-bars" );
- }
- } // endfor
-
-
- if ( l_stepError.isNull() )
- {
- //----------------------------------------------------------------------
- // run proc_setup_bars on all CPUs
- //----------------------------------------------------------------------
- std::vector<proc_setup_bars_proc_chip> l_proc_chips;
-
- TargetPairs_t l_abusLinks;
- l_errl = PbusLinkSvc::getTheInstance().getPbusConnections(
- l_abusLinks, TYPE_ABUS, false );
-
- for (TargetHandleList::const_iterator
- l_cpu_iter = l_cpuTargetList.begin();
- l_cpu_iter != l_cpuTargetList.end() && !l_errl;
- ++l_cpu_iter)
- {
- // make a local copy of the target for ease of use
- const TARGETING::Target* l_pCpuTarget = *l_cpu_iter;
-
- // cast OUR type of target to a FAPI type of target.
- const fapi::Target l_fapi_pCpuTarget( TARGET_TYPE_PROC_CHIP,
- (const_cast<TARGETING::Target*> (l_pCpuTarget)) );
-
- proc_setup_bars_proc_chip l_proc_chip ;
- l_proc_chip.this_chip = l_fapi_pCpuTarget;
- l_proc_chip.process_f0 = true;
- l_proc_chip.process_f1 = true;
-
- TARGETING::TargetHandleList l_abuses;
- getChildChiplets( l_abuses, l_pCpuTarget, TYPE_ABUS );
-
- for (TargetHandleList::const_iterator
- l_abus_iter = l_abuses.begin();
- l_abus_iter != l_abuses.end();
- ++l_abus_iter)
- {
- const TARGETING::Target* l_target = *l_abus_iter;
- uint8_t l_srcID = l_target->getAttr<ATTR_CHIP_UNIT>();
- TargetPairs_t::iterator l_itr = l_abusLinks.find(l_target);
- if ( l_itr == l_abusLinks.end() )
- {
- continue;
- }
-
- const TARGETING::Target *l_pParent = NULL;
- l_pParent = getParentChip(
- (const_cast<TARGETING::Target*>(l_itr->second)));
- fapi::Target l_fapiproc_parent( TARGET_TYPE_PROC_CHIP,
- (void *)l_pParent );
-
- switch (l_srcID)
- {
- case 0: l_proc_chip.a0_chip = l_fapiproc_parent; break;
- case 1: l_proc_chip.a1_chip = l_fapiproc_parent; break;
- case 2: l_proc_chip.a2_chip = l_fapiproc_parent; break;
- default: break;
- }
- }
-
- l_proc_chips.push_back( l_proc_chip );
-
- } // endfor
-
- if (!l_errl)
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call proc_setup_bars");
-
- // call the HWP with each fapi::Target
- FAPI_INVOKE_HWP( l_errl, proc_setup_bars, l_proc_chips, true );
-
- if ( l_errl )
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR : proc_setup_bars" );
- }
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : proc_setup_bars" );
- }
- }
- } // end if !l_errl
-
- // @@@@@ END CUSTOM BLOCK: @@@@@
-
- if ( l_errl )
- {
-
- // Create IStep error log and cross reference to error that occurred
- l_stepError.addErrorDetails( l_errl);
-
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
- }
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_proc_setup_bars exit" );
-
- // end task, returning any errorlogs to IStepDisp
- return l_stepError.getErrorHandle();
-}
-
-
-//
-// Wrapper function to call proc_exit_cache_contained
-//
-void* call_proc_exit_cache_contained( void *io_pArgs )
-{
- errlHndl_t l_errl = NULL;
-
- IStepError l_stepError;
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_proc_exit_cache_contained entry" );
-
- // @@@@@ 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)
- // extend the memory space from 8MEG to 32Meg
-
- //if mirrored then check that there is going to be memory at that location.
- //For sapphire with mirrored location flipped and at zero,
- //this also insures there is memory available to 'exit_cache' to.
- //Also set ATTR_PAYLOAD_BASE here.
- TARGETING::Target* l_sys = NULL;
- targetService().getTopLevelTarget(l_sys);
- assert( l_sys != NULL );
-
- uint8_t l_mpipl = l_sys->getAttr<ATTR_IS_MPIPL_HB>();
- ATTR_PAYLOAD_BASE_type payloadBase = 0;
-
- if(!l_mpipl)
- {
- ATTR_PAYLOAD_IN_MIRROR_MEM_type l_mirrored = false;
-
- // In Sapphire mode disable mirroring for now - @todo-RTC:108314
- // and force payload to zero
- if(!is_sapphire_load())
- {
- payloadBase = l_sys->getAttr<ATTR_PAYLOAD_BASE>();
- l_mirrored = l_sys->getAttr<ATTR_PAYLOAD_IN_MIRROR_MEM>();
- }
-
- if(l_mirrored)
- {
- ATTR_MIRROR_BASE_ADDRESS_type l_mirrorBaseAddr = 0;
- if(!is_sapphire_load())
- {
- uint64_t hrmor_base =
- l_sys->getAttr<TARGETING::ATTR_HB_HRMOR_NODAL_BASE>();
-
- l_mirrorBaseAddr =
- l_sys->getAttr<TARGETING::ATTR_MIRROR_BASE_ADDRESS>();
-
- // For single-node systems, the non-master processors can be
- // in a different logical (powerbus) node.
- // Need to migrate task to master.
- task_affinity_pin();
- task_affinity_migrate_to_master();
- uint64_t this_node = INTR::PIR_t(task_getcpuid()).nodeId;
- task_affinity_unpin();
-
- l_mirrorBaseAddr += (this_node * hrmor_base)/2;
-
- }
-
- // Verify there is memory at the mirrored location
- bool mirroredMemExists = false;
- TARGETING::TargetHandleList l_procList;
- getAllChips(l_procList, TYPE_PROC);
-
- for (TargetHandleList::const_iterator proc = l_procList.begin();
- proc != l_procList.end() && !mirroredMemExists;
- ++proc)
- {
- uint64_t mirrorBase[4];
- uint64_t mirrorSize[4];
- bool rc = (*proc)->
- tryGetAttr<TARGETING::ATTR_PROC_MIRROR_BASES>(mirrorBase);
- if(false == rc)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "Failed to get ATTR_PROC_MIRROR_BASES");
- assert(0);
- }
-
- rc = (*proc)->
- tryGetAttr<TARGETING::ATTR_PROC_MIRROR_SIZES>(mirrorSize);
- if(false == rc)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "Failed to get ATTR_PROC_MIRROR_SIZES");
- assert(0);
- }
-
- for(uint64_t i = 0; i < 4 && !mirroredMemExists; ++i)
- {
- if(mirrorSize[i] != 0 &&
- l_mirrorBaseAddr >= mirrorBase[i] &&
- l_mirrorBaseAddr < (mirrorBase[i] + mirrorSize[i]))
- {
- mirroredMemExists = true;
- }
- }
- }
-
- if (mirroredMemExists)
- {
- // ATTR_PAYLOAD_BASE is in MB
- payloadBase += l_mirrorBaseAddr/MEGABYTE;
- }
- else
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, ERR_MRK
- "Request to load payload into mirrored memory,"
- " but no memory exists at address 0x%016lx",
- l_mirrorBaseAddr);
-
- /*@
- * @errortype ERRL_SEV_CRITICAL_SYS_TERM
- * @moduleid fapi::MOD_EXIT_CACHE_CONTAINED,
- * @reasoncode fapi::RC_NO_MIRRORED_MEMORY,
- * @userdata1 Mirrored Memory Address
- * @userdata2 0
- *
- * @devdesc Request given to load payload into mirrored
- * memory, but no mirrored memory exists at
- * that location.
- */
- l_errl = new ERRORLOG::ErrlEntry
- (
- ERRORLOG::ERRL_SEV_CRITICAL_SYS_TERM,
- fapi::MOD_EXIT_CACHE_CONTAINED,
- fapi::RC_NO_MIRRORED_MEMORY,
- l_mirrorBaseAddr,
- 0,
- true); // callout firmware
- }
- }
- // If we're not mirrored, payloadBase is the lowest mem_base.
- // Note that if we are mirrored, finding the correct mirror
- // base yields the proper payloadBase. This should also work
- // for sapphire as a single (working) node will return 0 for
- // bottom_mem_addr.
- else {
- payloadBase += get_bottom_mem_addr()/MEGABYTE;
- }
- }
-
- if(!l_errl)
- {
- if(!l_mpipl)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "Payload base address is 0x%016lx",
- payloadBase * MEGABYTE);
-
- l_sys->setAttr<ATTR_PAYLOAD_BASE>(payloadBase);
- }
-
- // call the HWP with each fapi::Target
- FAPI_INVOKE_HWP( l_errl,
- proc_exit_cache_contained
- );
-
-
-
- if ( l_errl )
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR : call_proc_exit_cache_contained, "
- "errorlog PLID=0x%x",
- l_errl->plid() );
- }
- // no errors so extend VMM.
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : call_proc_exit_cache_contained" );
-
-
-
- // Call the function to extend VMM to 32MEG
- int rc = mm_extend();
-
- if (rc!=0)
- {
- /*@
- * @errortype
- * @moduleid fapi::MOD_EXIT_CACHE_CONTAINED
- * @reasoncode fapi::RC_MM_EXTEND_FAILED
- * @userdata1 rc from mm_extend
- * @userdata2 <UNUSED>
- *
- * @devdesc Failure extending memory to 32MEG after
- * exiting cache contained mode.
- */
- l_errl = new ERRORLOG::ErrlEntry
- (ERRORLOG::ERRL_SEV_UNRECOVERABLE,
- fapi::MOD_EXIT_CACHE_CONTAINED,
- fapi::RC_MM_EXTEND_FAILED,
- rc,
- 0);
-
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR : call_proc_exit_cache_contained"
- " - extendVMM, rc=0x%x",
- rc );
- }
- else
- {
- // trace out the extend VMM was successful
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : call_proc_exit_cache_contained"
- " - extendVMM");
- }
- }
- }
- if ( l_errl )
- {
- // Create IStep error log and cross reference to error that occurred
- l_stepError.addErrorDetails( l_errl );
-
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
- }
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_proc_exit_cache_contained exit" );
-
- // @@@@@ END CUSTOM BLOCK: @@@@@
-
- // end task, returning any errorlogs to IStepDisp
- return l_stepError.getErrorHandle();
-}
-
-
-//
-// Wrapper function to call call_host_mpipl_service
-//
-void* call_host_mpipl_service( void *io_pArgs )
-{
-
- IStepError l_StepError;
-
- errlHndl_t l_err = NULL;
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_host_mpipl_service entry" );
-
- // call proc_mpipl_chip_cleanup.C
- TARGETING::TargetHandleList l_procTargetList;
- getAllChips(l_procTargetList, TYPE_PROC );
-
- // ---------------------------------------------------------------
- // run proc_mpipl_chip_cleanup.C on all proc chips
- // ---------------------------------------------------------------
- for (TargetHandleList::const_iterator
- l_iter = l_procTargetList.begin();
- l_iter != l_procTargetList.end();
- ++l_iter)
- {
- // make a local copy of the target for ease of use
- const TARGETING::Target* l_pProcTarget = *l_iter;
-
- // write HUID of target
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "target HUID %.8X", TARGETING::get_huid(l_pProcTarget));
-
- // cast OUR type of target to a FAPI type of target.
- const fapi::Target l_fapi_pProcTarget( TARGET_TYPE_PROC_CHIP,
- (const_cast<TARGETING::Target*> (l_pProcTarget)) );
-
- // call the HWP with each fapi::Target
- FAPI_INVOKE_HWP(l_err, proc_mpipl_chip_cleanup,
- l_fapi_pProcTarget );
-
- if ( l_err )
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR : returned from proc_mpipl_chip_cleanup" );
-
- // capture the target data in the elog
- ERRORLOG::ErrlUserDetailsTarget(l_pProcTarget).addToLog( l_err );
-
- // since we are doing an mpipl break out, the mpipl has failed
- break;
- }
-
- // ---------------------------------------------------------------
- // run proc_mpipl_ex_cleanup.C on all proc chips
- // ---------------------------------------------------------------
- // call the HWP with each fapi::Target
- FAPI_INVOKE_HWP(l_err,
- proc_mpipl_ex_cleanup,
- l_fapi_pProcTarget );
-
- if ( l_err )
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR : returned from proc_mpipl_ex_cleanup" );
-
- // capture the target data in the elog
- ERRORLOG::ErrlUserDetailsTarget(l_pProcTarget).addToLog( l_err );
-
- // since we are doing an mpipl break out, the mpipl has failed
- break;
- }
- }
-
- //Determine if we should perform dump ops
- //Note that this is only called in MPIPL context, so don't
- //have to check MPIPL
- bool collect_dump = false;
- TARGETING::Target * sys = NULL;
- TARGETING::targetService().getTopLevelTarget( sys );
- TARGETING::CecIplType type;
- if(sys &&
- sys->tryGetAttr<TARGETING::ATTR_CEC_IPL_TYPE>(type) &&
- type.PostDump)
- {
- collect_dump = true;
- }
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "Ready to collect dump -- yes/no [%d]", collect_dump);
-
- // No error on the procedure.. proceed to collect the dump.
- if (!l_err && collect_dump)
- {
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : proc_mpipl_ex_cleanup" );
-
- // currently according to Adriana, the dump calls should only cause an
- // istep failure when the dump collect portion of this step fails.. We
- // will not fail the istep on any mbox message failures. instead we will
- // simply commit the errorlog and continue.
-
- errlHndl_t l_errMsg = NULL;
-
- // Dump relies upon the runtime module
- // Not declaring in istep DEP list cause if we load it
- // we want it to stay loaded
- if ( !VFS::module_is_loaded( "libruntime.so" ) )
- {
- l_err = VFS::module_load( "libruntime.so" );
-
- if ( l_err )
- {
- // load module returned with errl set
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "Could not load runtime module" );
- }
- }
-
- // If dump module successfull loaded then continue with DumpCollect and
- // messaging
- if (!l_err)
- {
- do
- {
- // send the start message
- l_errMsg = DUMP::sendMboxMsg(DUMP::DUMP_MSG_START_MSG_TYPE);
-
- // If error, commit and send error message.
- if (l_errMsg)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR : returned from DUMP::sendMboxMsg - dump start" );
-
- errlCommit( l_errMsg, HWPF_COMP_ID );
-
- // don't break in this case because we not want to fail the
- // istep on the dump collect so we will continue after we
- // log the errhandle that we can't send a message.
- }
-
- // Call the dump collect
- l_err = DUMP::doDumpCollect();
-
- // Got a Dump Collect error.. Commit the dumpCollect
- // errorlog and then send an dump Error mbox message
- // and FSP will decide what to do.
- // We do not want dump Collect failures to terminate the istep.
- if (l_err)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR : returned from DUMP::HbDumpCopySrcToDest" );
-
- break;
- }
-
- } while(0);
-
- DUMP::DUMP_MSG_TYPE msgType = DUMP::DUMP_MSG_END_MSG_TYPE;
-
- // Send dumpCollect success trace
- if (!l_err)
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : doDumpCollect" );
- }
- // got an error that we need to send a ERROR message to FSP
- // and commit the errorlog from dumpCollect.
- else
- {
- msgType = DUMP::DUMP_MSG_ERROR_MSG_TYPE;
-
- // Commit the dumpCollect errorlog from above as
- // we dont want dump collect to kill the istep
- errlCommit( l_err, HWPF_COMP_ID );
-
- }
-
- // Send an Error mbox msg to FSP (either end or error)
- l_errMsg = DUMP::sendMboxMsg(msgType);
-
- if (l_errMsg)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR : returned from DUMP::sendMboxMsg" );
-
- errlCommit( l_errMsg, HWPF_COMP_ID );
- }
-
-
- // Need to unload the runtime module regardless of whether we have
- // an error or not.
- errlHndl_t l_errUnLoad = VFS::module_unload( "libruntime.so" );
-
- if (l_errUnLoad)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR : returned from VFS::module_unload (libruntime.so)" );
-
- errlCommit( l_errUnLoad, HWPF_COMP_ID );
- }
-
- }
- else
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR : returned from VFS::module_load (libruntime.so)" );
- }
- }
-
- // If got an error in the procedure or collection of the dump kill the istep
- if( l_err )
- {
- // Create IStep error log and cross reference to error that occurred
- l_StepError.addErrorDetails( l_err );
-
- // Commit Error
- errlCommit( l_err, HWPF_COMP_ID );
- }
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_host_mpipl_service exit" );
-
- return l_StepError.getErrorHandle();
-}
-
}; // end namespace
diff --git a/src/usr/hwpf/hwp/establish_system_smp/establish_system_smp.C b/src/usr/hwpf/hwp/establish_system_smp/establish_system_smp.C
index 17960bc3e..633bc4a62 100644
--- a/src/usr/hwpf/hwp/establish_system_smp/establish_system_smp.C
+++ b/src/usr/hwpf/hwp/establish_system_smp/establish_system_smp.C
@@ -63,7 +63,7 @@
// fapi support
#include <fapi.H>
#include <fapiPlatHwpInvoker.H>
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
#include "establish_system_smp.H"
#include <mbox/ipc_msg_types.H>
diff --git a/src/usr/hwpf/hwp/occ/occ.C b/src/usr/hwpf/hwp/occ/occ.C
index 3b2db4596..8c7e67e9d 100644
--- a/src/usr/hwpf/hwp/occ/occ.C
+++ b/src/usr/hwpf/hwp/occ/occ.C
@@ -49,7 +49,7 @@
#include <fapi.H>
#include <fapiPlatHwpInvoker.H>
#include <hwpf/plat/fapiPlatTrace.H>
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
#include <vfs/vfs.H>
#include <util/utillidmgr.H>
diff --git a/src/usr/hwpf/hwp/occ/occAccess.C b/src/usr/hwpf/hwp/occ/occAccess.C
index abbc00ebf..01d555cad 100644
--- a/src/usr/hwpf/hwp/occ/occAccess.C
+++ b/src/usr/hwpf/hwp/occ/occAccess.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2014 */
+/* Contributors Listed Below - COPYRIGHT 2014,2015 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -32,7 +32,7 @@
// Fapi
#include <fapi.H>
#include <fapiPlatHwpInvoker.H>
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
// Procedures
#include <p8_ocb_init.H>
diff --git a/src/usr/hwpf/hwp/occ/occ_common.C b/src/usr/hwpf/hwp/occ/occ_common.C
index 1a88532ca..33ab95e0d 100644
--- a/src/usr/hwpf/hwp/occ/occ_common.C
+++ b/src/usr/hwpf/hwp/occ/occ_common.C
@@ -48,7 +48,7 @@
#include <fapi.H>
#include <fapiPlatHwpInvoker.H>
#include <hwpf/plat/fapiPlatTrace.H>
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
#include <vfs/vfs.H>
#include <util/utillidmgr.H>
diff --git a/src/usr/hwpf/hwp/occ/runtime/rt_occ.C b/src/usr/hwpf/hwp/occ/runtime/rt_occ.C
index cb68f46f6..cb7a1b45a 100644
--- a/src/usr/hwpf/hwp/occ/runtime/rt_occ.C
+++ b/src/usr/hwpf/hwp/occ/runtime/rt_occ.C
@@ -47,7 +47,7 @@
#include <fapi.H>
#include <fapiPlatHwpInvoker.H>
#include <hwpf/plat/fapiPlatTrace.H>
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
// Procedures
#include <p8_occ_control.H>
diff --git a/src/usr/hwpf/hwp/pstates/pstates/freqVoltageSvc.C b/src/usr/hwpf/hwp/pstates/pstates/freqVoltageSvc.C
index 8b27f89ce..f3fcaa94b 100644
--- a/src/usr/hwpf/hwp/pstates/pstates/freqVoltageSvc.C
+++ b/src/usr/hwpf/hwp/pstates/pstates/freqVoltageSvc.C
@@ -42,7 +42,7 @@
#include <errl/errlmanager.H>
#include <fapiPlatHwpInvoker.H>
#include <hwpf/fapi/fapiMvpdAccess.H>
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
#include <p8_build_pstate_datablock.H>
#include <proc_get_voltage.H>
#include <pstates.h>
diff --git a/src/usr/hwpf/hwp/thread_activate/thread_activate.C b/src/usr/hwpf/hwp/thread_activate/thread_activate.C
index 5c8bc4639..efb3ab186 100644
--- a/src/usr/hwpf/hwp/thread_activate/thread_activate.C
+++ b/src/usr/hwpf/hwp/thread_activate/thread_activate.C
@@ -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. */
@@ -50,7 +52,7 @@
#include <fapi.H>
#include <fapiPlatHwpInvoker.H>
#include <hwpf/plat/fapiPlatTrace.H>
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
#include "p8_cpu_special_wakeup.H"
#include <pnor/pnorif.H>
diff --git a/src/usr/hwpf/plat/fapiPlatAttrOverrideSync.C b/src/usr/hwpf/plat/fapiPlatAttrOverrideSync.C
index 0833b0699..66bbbda1f 100644
--- a/src/usr/hwpf/plat/fapiPlatAttrOverrideSync.C
+++ b/src/usr/hwpf/plat/fapiPlatAttrOverrideSync.C
@@ -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. */
@@ -40,7 +42,7 @@
#include <mbox/mboxif.H>
#include <hwpf/plat/fapiPlatAttrOverrideSync.H>
#include <hwpf/plat/fapiPlatTrace.H>
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
#include <targeting/common/utilFilter.H>
#include <targeting/common/attributeTank.H>
diff --git a/src/usr/hwpf/plat/fapiPlatAttributeService.C b/src/usr/hwpf/plat/fapiPlatAttributeService.C
index 790428008..1d693e896 100644
--- a/src/usr/hwpf/plat/fapiPlatAttributeService.C
+++ b/src/usr/hwpf/plat/fapiPlatAttributeService.C
@@ -40,7 +40,7 @@
#include <targeting/common/utilFilter.H>
#include <errl/errlentry.H>
#include <hwpf/plat/fapiPlatAttributeService.H>
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
#include <vpd/spdenums.H>
#include <devicefw/driverif.H>
#include <hwpf/hwp/mvpd_accessors/getMvpdExL2SingleMemberEnable.H>
diff --git a/src/usr/hwpf/plat/fapiPlatHwAccess.C b/src/usr/hwpf/plat/fapiPlatHwAccess.C
index d4501aef5..28e313697 100644
--- a/src/usr/hwpf/plat/fapiPlatHwAccess.C
+++ b/src/usr/hwpf/plat/fapiPlatHwAccess.C
@@ -5,7 +5,9 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* COPYRIGHT International Business Machines Corp. 2011,2014 */
+/* Contributors Listed Below - COPYRIGHT 2011,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. */
@@ -31,7 +33,7 @@
#include <fapiHwAccess.H>
#include <fapiPlatTrace.H>
#include <fapiPlatHwAccess.H>
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
#include <errl/errlentry.H>
#include <devicefw/userif.H>
#include <ecmdDataBufferBase.H>
diff --git a/src/usr/hwpf/plat/fapiPlatHwpInvoker.C b/src/usr/hwpf/plat/fapiPlatHwpInvoker.C
index 27c8e54ff..09a2815df 100644
--- a/src/usr/hwpf/plat/fapiPlatHwpInvoker.C
+++ b/src/usr/hwpf/plat/fapiPlatHwpInvoker.C
@@ -33,7 +33,7 @@
#include <fapiSystemConfig.H>
#include <fapiPlatTrace.H>
#include <fapiErrorInfo.H>
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
#include <errl/errlentry.H>
#include <targeting/common/utilFilter.H>
diff --git a/src/usr/hwpf/plat/fapiPlatMBvpdAccess.C b/src/usr/hwpf/plat/fapiPlatMBvpdAccess.C
index 7d5eee7aa..184093b4b 100644
--- a/src/usr/hwpf/plat/fapiPlatMBvpdAccess.C
+++ b/src/usr/hwpf/plat/fapiPlatMBvpdAccess.C
@@ -32,7 +32,7 @@
#include <errl/errlentry.H>
// fapi support
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
#include <fapiMBvpdAccess.H>
// MBVPD
diff --git a/src/usr/hwpf/plat/fapiPlatMvpdAccess.C b/src/usr/hwpf/plat/fapiPlatMvpdAccess.C
index 274a63d47..ce2b5b6fc 100644
--- a/src/usr/hwpf/plat/fapiPlatMvpdAccess.C
+++ b/src/usr/hwpf/plat/fapiPlatMvpdAccess.C
@@ -36,7 +36,7 @@
#include <fapiAttributeService.H>
#include <fapiMvpdAccess.H>
#include <fapiSystemConfig.H>
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
// MVPD
#include <devicefw/userif.H>
diff --git a/src/usr/hwpf/plat/fapiPlatSystemConfig.C b/src/usr/hwpf/plat/fapiPlatSystemConfig.C
index 0ba70b916..55820824c 100644
--- a/src/usr/hwpf/plat/fapiPlatSystemConfig.C
+++ b/src/usr/hwpf/plat/fapiPlatSystemConfig.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2011,2014 */
+/* Contributors Listed Below - COPYRIGHT 2011,2015 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -32,7 +32,7 @@
#include <fapiPlatTrace.H>
#include <fapiSystemConfig.H>
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
#include <errl/errlentry.H>
#include <targeting/common/commontargeting.H>
#include <targeting/common/utilFilter.H>
diff --git a/src/usr/hwpf/plat/fapiPlatUtil.C b/src/usr/hwpf/plat/fapiPlatUtil.C
index 269c36fe0..a61cd012a 100644
--- a/src/usr/hwpf/plat/fapiPlatUtil.C
+++ b/src/usr/hwpf/plat/fapiPlatUtil.C
@@ -47,7 +47,7 @@
#include <runtime/interface.h>
#include <targeting/common/targetservice.H>
#include <runtime/rt_targeting.H>
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
#include "handleSpecialWakeup.H"
#endif
diff --git a/src/usr/hwpf/test/occAccessTest.H b/src/usr/hwpf/test/occAccessTest.H
index 143c0439c..6c037ec61 100644
--- a/src/usr/hwpf/test/occAccessTest.H
+++ b/src/usr/hwpf/test/occAccessTest.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2014 */
+/* Contributors Listed Below - COPYRIGHT 2014,2015 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -31,7 +31,7 @@
#include <occ/occAccess.H>
#include <errl/errlentry.H>
#include <vfs/vfs.H>
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
// fapi support
#include <fapi.H>
diff --git a/src/usr/isteps/hwpistepud.C b/src/usr/isteps/hwpistepud.C
index 8bed5a84f..63e168c16 100644
--- a/src/usr/isteps/hwpistepud.C
+++ b/src/usr/isteps/hwpistepud.C
@@ -29,7 +29,7 @@
*/
#include <hbotcompid.H>
#include <isteps/hwpistepud.H>
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
using namespace ISTEP_ERROR;
diff --git a/src/usr/isteps/istep13/hbVddrMsg.H b/src/usr/isteps/istep13/hbVddrMsg.H
index 2b14c0c00..22c3557c2 100644
--- a/src/usr/isteps/istep13/hbVddrMsg.H
+++ b/src/usr/isteps/istep13/hbVddrMsg.H
@@ -46,7 +46,7 @@
#include <mbox/mboxif.H>
#include <targeting/common/targetservice.H>
#include <targeting/common/utilFilter.H>
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
#include <attributeenums.H>
/*****************************************************************************/
diff --git a/src/usr/isteps/istep13/palmetto_vddr.C b/src/usr/isteps/istep13/palmetto_vddr.C
index d67d753a8..b3307a63f 100644
--- a/src/usr/isteps/istep13/palmetto_vddr.C
+++ b/src/usr/isteps/istep13/palmetto_vddr.C
@@ -30,7 +30,7 @@
#include <string.h>
-#include <hwpf/hwpf_reasoncodes.H>
+#include <isteps/hwpf_reasoncodes.H>
#include <errl/errlentry.H>
#include <errl/errlmanager.H>
diff --git a/src/usr/isteps/istep14/call_host_mpipl_service.C b/src/usr/isteps/istep14/call_host_mpipl_service.C
new file mode 100644
index 000000000..cce2910f6
--- /dev/null
+++ b/src/usr/isteps/istep14/call_host_mpipl_service.C
@@ -0,0 +1,270 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/isteps/istep14/call_host_mpipl_service.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 <errl/errlentry.H>
+#include <errl/errlmanager.H>
+#include <errl/errludtarget.H>
+
+#include <isteps/hwpisteperror.H>
+#include <initservice/isteps_trace.H>
+
+// targeting support
+#include <targeting/common/commontargeting.H>
+#include <targeting/common/util.H>
+#include <targeting/common/utilFilter.H>
+
+#include <vfs/vfs.H>
+#include <dump/dumpif.H>
+
+using namespace ISTEP;
+using namespace ISTEP_ERROR;
+using namespace ERRORLOG;
+using namespace TARGETING;
+
+namespace ISTEP_14
+{
+void* call_host_mpipl_service (void *io_pArgs)
+{
+
+ IStepError l_StepError;
+
+ errlHndl_t l_err = NULL;
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_host_mpipl_service entry" );
+
+ // call proc_mpipl_chip_cleanup.C
+ TARGETING::TargetHandleList l_procTargetList;
+ getAllChips(l_procTargetList, TYPE_PROC );
+
+ // ---------------------------------------------------------------
+ // run proc_mpipl_chip_cleanup.C on all proc chips
+ // ---------------------------------------------------------------
+ for (TargetHandleList::const_iterator
+ l_iter = l_procTargetList.begin();
+ l_iter != l_procTargetList.end();
+ ++l_iter)
+ {
+ // make a local copy of the target for ease of use
+ const TARGETING::Target* l_pProcTarget = *l_iter;
+
+ // write HUID of target
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "target HUID %.8X", TARGETING::get_huid(l_pProcTarget));
+
+ //@TODO RTC:133831 cast OUR type of target to a FAPI type of target.
+ //const fapi::Target l_fapi_pProcTarget( TARGET_TYPE_PROC_CHIP,
+ // (const_cast<TARGETING::Target*> (l_pProcTarget)) );
+
+ // call the HWP with each fapi::Target
+ //FAPI_INVOKE_HWP(l_err, proc_mpipl_chip_cleanup,
+ // l_fapi_pProcTarget );
+
+ if ( l_err )
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR : returned from proc_mpipl_chip_cleanup" );
+
+ // capture the target data in the elog
+ ERRORLOG::ErrlUserDetailsTarget(l_pProcTarget).addToLog( l_err );
+
+ // since we are doing an mpipl break out, the mpipl has failed
+ break;
+ }
+
+ // ---------------------------------------------------------------
+ // run proc_mpipl_ex_cleanup.C on all proc chips
+ // ---------------------------------------------------------------
+ //@TODO RTC:133831 call the HWP with each fapi::Target
+ //FAPI_INVOKE_HWP(l_err,
+ // proc_mpipl_ex_cleanup,
+ // l_fapi_pProcTarget );
+
+ if ( l_err )
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR : returned from proc_mpipl_ex_cleanup" );
+
+ // capture the target data in the elog
+ ERRORLOG::ErrlUserDetailsTarget(l_pProcTarget).addToLog( l_err );
+
+ // since we are doing an mpipl break out, the mpipl has failed
+ break;
+ }
+ }
+
+ //Determine if we should perform dump ops
+ //Note that this is only called in MPIPL context, so don't
+ //have to check MPIPL
+ bool collect_dump = false;
+ TARGETING::Target * sys = NULL;
+ TARGETING::targetService().getTopLevelTarget( sys );
+ TARGETING::CecIplType type;
+ if(sys &&
+ sys->tryGetAttr<TARGETING::ATTR_CEC_IPL_TYPE>(type) &&
+ type.PostDump)
+ {
+ collect_dump = true;
+ }
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "Ready to collect dump -- yes/no [%d]", collect_dump);
+
+ // No error on the procedure.. proceed to collect the dump.
+ if (!l_err && collect_dump)
+ {
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS : proc_mpipl_ex_cleanup" );
+
+ // currently according to Adriana, the dump calls should only cause an
+ // istep failure when the dump collect portion of this step fails.. We
+ // will not fail the istep on any mbox message failures. instead we will
+ // simply commit the errorlog and continue.
+
+ errlHndl_t l_errMsg = NULL;
+
+ // Dump relies upon the runtime module
+ // Not declaring in istep DEP list cause if we load it
+ // we want it to stay loaded
+ if ( !VFS::module_is_loaded( "libruntime.so" ) )
+ {
+ l_err = VFS::module_load( "libruntime.so" );
+
+ if ( l_err )
+ {
+ // load module returned with errl set
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "Could not load runtime module" );
+ }
+ }
+
+ // If dump module successfull loaded then continue with DumpCollect and
+ // messaging
+ if (!l_err)
+ {
+ do
+ {
+ // send the start message
+ l_errMsg = DUMP::sendMboxMsg(DUMP::DUMP_MSG_START_MSG_TYPE);
+
+ // If error, commit and send error message.
+ if (l_errMsg)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR : returned from DUMP::sendMboxMsg - dump start" );
+
+ errlCommit( l_errMsg, HWPF_COMP_ID );
+
+ // don't break in this case because we not want to fail the
+ // istep on the dump collect so we will continue after we
+ // log the errhandle that we can't send a message.
+ }
+
+ // Call the dump collect
+ l_err = DUMP::doDumpCollect();
+
+ // Got a Dump Collect error.. Commit the dumpCollect
+ // errorlog and then send an dump Error mbox message
+ // and FSP will decide what to do.
+ // We do not want dump Collect failures to terminate the istep.
+ if (l_err)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR : returned from DUMP::HbDumpCopySrcToDest" );
+
+ break;
+ }
+
+ } while(0);
+
+ DUMP::DUMP_MSG_TYPE msgType = DUMP::DUMP_MSG_END_MSG_TYPE;
+
+ // Send dumpCollect success trace
+ if (!l_err)
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS : doDumpCollect" );
+ }
+ // got an error that we need to send a ERROR message to FSP
+ // and commit the errorlog from dumpCollect.
+ else
+ {
+ msgType = DUMP::DUMP_MSG_ERROR_MSG_TYPE;
+
+ // Commit the dumpCollect errorlog from above as
+ // we dont want dump collect to kill the istep
+ errlCommit( l_err, HWPF_COMP_ID );
+
+ }
+
+ // Send an Error mbox msg to FSP (either end or error)
+ l_errMsg = DUMP::sendMboxMsg(msgType);
+
+ if (l_errMsg)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR : returned from DUMP::sendMboxMsg" );
+
+ errlCommit( l_errMsg, HWPF_COMP_ID );
+ }
+
+
+ // Need to unload the runtime module regardless of whether we have
+ // an error or not.
+ errlHndl_t l_errUnLoad = VFS::module_unload( "libruntime.so" );
+
+ if (l_errUnLoad)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR : returned from VFS::module_unload (libruntime.so)" );
+
+ errlCommit( l_errUnLoad, HWPF_COMP_ID );
+ }
+
+ }
+ else
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR : returned from VFS::module_load (libruntime.so)" );
+ }
+ }
+
+ // If got an error in the procedure or collection of the dump kill the istep
+ if( l_err )
+ {
+ // Create IStep error log and cross reference to error that occurred
+ l_StepError.addErrorDetails( l_err );
+
+ // Commit Error
+ errlCommit( l_err, HWPF_COMP_ID );
+ }
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_host_mpipl_service exit" );
+
+ return l_StepError.getErrorHandle();
+}
+
+};
diff --git a/src/usr/isteps/istep14/call_host_startprd_dram.C b/src/usr/isteps/istep14/call_host_startprd_dram.C
new file mode 100644
index 000000000..094293111
--- /dev/null
+++ b/src/usr/isteps/istep14/call_host_startprd_dram.C
@@ -0,0 +1,88 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/isteps/istep14/call_host_startprd_dram.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 <errl/errlentry.H>
+
+using namespace ERRORLOG;
+
+namespace ISTEP_14
+{
+void* call_host_startprd_dram (void *io_pArgs)
+{
+ errlHndl_t l_errl = NULL;
+
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_host_startPRD_dram 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_@targetN_target));
+
+ // 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_startPRD_dram, _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
+
+#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_MEM_MASTER_CORE);
+ if (l_errl)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "Error returned from call to HBOCC::loadHostDataToSRAM");
+ }
+#endif
+
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_host_startPRD_dram exit" );
+
+ // end task, returning any errorlogs to IStepDisp
+ return l_errl;
+}
+
+};
diff --git a/src/usr/isteps/istep14/call_mss_memdiag.C b/src/usr/isteps/istep14/call_mss_memdiag.C
new file mode 100644
index 000000000..c03550463
--- /dev/null
+++ b/src/usr/isteps/istep14/call_mss_memdiag.C
@@ -0,0 +1,73 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/isteps/istep14/call_mss_memdiag.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 <errl/errlentry.H>
+#include <errl/errlmanager.H>
+#include <isteps/hwpisteperror.H>
+#include <initservice/isteps_trace.H>
+
+using namespace ISTEP;
+using namespace ISTEP_ERROR;
+using namespace ERRORLOG;
+
+namespace ISTEP_14
+{
+void* call_mss_memdiag (void *io_pArgs)
+{
+ errlHndl_t l_errl = NULL;
+
+ IStepError l_stepError;
+
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_mss_extent_setup entry" );
+
+ //@TODO RTC:133831 call the HWP
+ //FAPI_INVOKE_HWP( l_errl, mss_extent_setup );
+
+ if ( l_errl )
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR : failed executing mss_extent_setup returning error" );
+
+ // Create IStep error log and cross reference to error that occurred
+ l_stepError.addErrorDetails( l_errl );
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+ }
+ else
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS : mss_extent_setup completed ok" );
+ }
+
+
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_mss_extent_setup exit" );
+
+ // end task, returning any errorlogs to IStepDisp
+ return l_stepError.getErrorHandle();
+}
+
+};
diff --git a/src/usr/isteps/istep14/call_mss_power_cleanup.C b/src/usr/isteps/istep14/call_mss_power_cleanup.C
new file mode 100644
index 000000000..c0e517983
--- /dev/null
+++ b/src/usr/isteps/istep14/call_mss_power_cleanup.C
@@ -0,0 +1,143 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/isteps/istep14/call_mss_power_cleanup.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 <errl/errlentry.H>
+#include <errl/errlmanager.H>
+#include <errl/errludtarget.H>
+
+#include <isteps/hwpisteperror.H>
+#include <initservice/isteps_trace.H>
+
+// targeting support
+#include <targeting/common/commontargeting.H>
+#include <targeting/common/util.H>
+#include <targeting/common/utilFilter.H>
+
+
+using namespace ISTEP;
+using namespace ISTEP_ERROR;
+using namespace ERRORLOG;
+using namespace TARGETING;
+
+namespace ISTEP_14
+{
+void* call_mss_power_cleanup (void *io_pArgs)
+{
+ errlHndl_t l_err = NULL;
+ IStepError l_stepError;
+
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_mss_power_cleanup entry" );
+
+ // Get a list of all present Centaurs
+ TargetHandleList l_presCentaurs;
+ getChipResources(l_presCentaurs, TYPE_MEMBUF, UTIL_FILTER_PRESENT);
+
+ // For each present Centaur
+ for (TargetHandleList::const_iterator
+ l_cenIter = l_presCentaurs.begin();
+ l_cenIter != l_presCentaurs.end();
+ ++l_cenIter)
+ {
+ // Make a local copy of the target for ease of use
+ TARGETING::Target * l_pCentaur = *l_cenIter;
+ // Retrieve HUID of current Centaur
+ TARGETING::ATTR_HUID_type l_currCentaurHuid =
+ TARGETING::get_huid(l_pCentaur);
+
+ // Find all present MBAs associated with this Centaur
+ TARGETING::TargetHandleList l_presMbas;
+ getChildAffinityTargetsByState(l_presMbas,
+ l_pCentaur,
+ CLASS_UNIT,
+ TYPE_MBA,
+ UTIL_FILTER_PRESENT);
+
+ // If not at least two MBAs found
+ if (l_presMbas.size() < 2)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "Not enough MBAs found for Centaur target HUID %.8X, "
+ "skipping this Centaur.",
+ l_currCentaurHuid);
+ continue;
+ }
+
+ // Cache current MBA HUIDs for tracing
+ TARGETING::ATTR_HUID_type l_currMBA0Huid =
+ TARGETING::get_huid(l_presMbas[0]);
+ TARGETING::ATTR_HUID_type l_currMBA1Huid =
+ TARGETING::get_huid(l_presMbas[1]);
+
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "Running mss_power_cleanup HWP on "
+ "Centaur HUID %.8X, MBA0 HUID %.8X, "
+ "MBA1 HUID %.8X, ", l_currCentaurHuid,
+ l_currMBA0Huid, l_currMBA1Huid);
+
+ // Create FAPI Targets.
+ // @TODO RTC:133831
+ /*const fapi::Target l_fapiCentaurTarget(TARGET_TYPE_MEMBUF_CHIP,
+ (const_cast<TARGETING::Target*>(l_pCentaur)));
+ const fapi::Target l_fapiMba0Target(TARGET_TYPE_MBA_CHIPLET,
+ (const_cast<TARGETING::Target*>(l_presMbas[0])));
+ const fapi::Target l_fapiMba1Target(TARGET_TYPE_MBA_CHIPLET,
+ (const_cast<TARGETING::Target*>(l_presMbas[1])));
+
+ // Call the HWP with each fapi::Target
+ FAPI_INVOKE_HWP(l_err, mss_power_cleanup, l_fapiCentaurTarget,
+ l_fapiMba0Target, l_fapiMba1Target);
+ */
+ if (l_err)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "mss_power_cleanup HWP failed to perform"
+ " cleanup on centaur: 0x%.8X HWP_ERROR: 0x%.8X",
+ l_currCentaurHuid,l_err->reasonCode());
+ // Capture the target data in the error log
+ ErrlUserDetailsTarget(l_pCentaur).addToLog(l_err);
+ // Create IStep error log and cross reference error that occurred
+ l_stepError.addErrorDetails(l_err);
+ // Commit error
+ errlCommit(l_err, HWPF_COMP_ID);
+ }
+ else
+ {
+ // Success
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "Successfully ran mss_power_cleanup HWP on "
+ "Centaur HUID %.8X, MBA0 HUID %.8X, "
+ "MBA1 HUID %.8X, ", l_currCentaurHuid,
+ l_currMBA0Huid, l_currMBA1Huid);
+ }
+ }
+
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_mss_power_cleanup exit" );
+
+ // end task, returning any errorlogs to IStepDisp
+ return l_stepError.getErrorHandle();
+}
+
+};
diff --git a/src/usr/isteps/istep14/call_mss_thermal_init.C b/src/usr/isteps/istep14/call_mss_thermal_init.C
new file mode 100644
index 000000000..51633ba84
--- /dev/null
+++ b/src/usr/isteps/istep14/call_mss_thermal_init.C
@@ -0,0 +1,174 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/isteps/istep14/call_mss_thermal_init.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 <errl/errlentry.H>
+#include <errl/errlmanager.H>
+#include <errl/errludtarget.H>
+
+#include <isteps/hwpisteperror.H>
+#include <initservice/isteps_trace.H>
+
+// targeting support
+#include <targeting/common/commontargeting.H>
+#include <targeting/common/util.H>
+#include <targeting/common/utilFilter.H>
+
+
+using namespace ISTEP;
+using namespace ISTEP_ERROR;
+using namespace ERRORLOG;
+using namespace TARGETING;
+
+namespace ISTEP_14
+{
+void* call_mss_thermal_init (void *io_pArgs)
+{
+ errlHndl_t l_errl = NULL;
+ IStepError l_StepError;
+
+ do
+ {
+ // Get all Centaur targets
+ TARGETING::TargetHandleList l_memBufTargetList;
+ getAllChips(l_memBufTargetList, TYPE_MEMBUF );
+
+ // --------------------------------------------------------------------
+ // run mss_thermal_init on all Centaurs
+ // --------------------------------------------------------------------
+ for (TargetHandleList::const_iterator
+ l_iter = l_memBufTargetList.begin();
+ l_iter != l_memBufTargetList.end();
+ ++l_iter)
+ {
+ // make a local copy of the target for ease of use
+ const TARGETING::Target* l_pCentaur = *l_iter;
+
+ // write HUID of target
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "target HUID %.8X", TARGETING::get_huid(l_pCentaur));
+
+ //@TODO RTC:133831 cast OUR type of target to a FAPI type of target.
+ //const fapi::Target l_fapi_pCentaur( TARGET_TYPE_MEMBUF_CHIP,
+ // (const_cast<TARGETING::Target*>(l_pCentaur)) );
+
+ // Current run on target
+ //TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ // "Running call_mss_thermal_init HWP on "
+ // "target HUID %.8X", TARGETING::get_huid(l_pCentaur));
+
+
+ // call the HWP with each fapi::Target
+ //FAPI_INVOKE_HWP( l_errl, mss_thermal_init, l_fapi_pCentaur );
+
+ if ( l_errl )
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR 0x%.8X: mss_thermal_init HWP returns error",
+ l_errl->reasonCode());
+
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_pCentaur).addToLog( l_errl );
+
+ // Create IStep error log and cross reference
+ // to error that occurred
+ l_StepError.addErrorDetails( l_errl );
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+
+ break;
+ }
+ else
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS : mss_thermal_init HWP( )" );
+ }
+ }
+ if (l_errl)
+ {
+ break;
+ }
+
+ // Run proc throttle sync
+ // Get all functional proc chip targets
+ TARGETING::TargetHandleList l_cpuTargetList;
+ getAllChips(l_cpuTargetList, TYPE_PROC);
+
+ for (TARGETING::TargetHandleList::const_iterator
+ l_cpuIter = l_cpuTargetList.begin();
+ l_cpuIter != l_cpuTargetList.end();
+ ++l_cpuIter)
+ {
+ const TARGETING::Target* l_pTarget = *l_cpuIter;
+
+ //@TODO RTC:133831
+ //fapi::Target l_fapiproc_target( TARGET_TYPE_PROC_CHIP,
+ // (const_cast<TARGETING::Target*>(l_pTarget)));
+
+ //TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ // "Running proc_throttle_sync HWP on "
+ // "target HUID %.8X", TARGETING::get_huid(l_pTarget));
+
+ // Call proc_throttle_sync
+ //FAPI_INVOKE_HWP( l_errl, proc_throttle_sync, l_fapiproc_target );
+
+ if (l_errl)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR 0x%.8X: proc_throttle_sync HWP returns error",
+ l_errl->reasonCode());
+
+ // Capture the target data in the elog
+ ErrlUserDetailsTarget(l_pTarget).addToLog(l_errl);
+
+ // Create IStep error log and cross reference
+ // to error that occurred
+ l_StepError.addErrorDetails( l_errl );
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+
+ break;
+ }
+ else
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS : proc_throttle_sync HWP( )" );
+ }
+ }
+
+ } while (0);
+
+
+ if(l_StepError.isNull())
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS : call_mss_thermal_init" );
+ }
+
+ // end task, returning any errorlogs to IStepDisp
+ return l_StepError.getErrorHandle();
+}
+
+};
diff --git a/src/usr/isteps/istep14/call_proc_exit_cache_contained.C b/src/usr/isteps/istep14/call_proc_exit_cache_contained.C
new file mode 100644
index 000000000..0703ae0bf
--- /dev/null
+++ b/src/usr/isteps/istep14/call_proc_exit_cache_contained.C
@@ -0,0 +1,282 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/isteps/istep14/call_proc_exit_cache_contained.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 <errl/errlentry.H>
+#include <errl/errlmanager.H>
+#include <errl/errludtarget.H>
+
+#include <isteps/hwpisteperror.H>
+#include <initservice/isteps_trace.H>
+#include <initservice/taskargs.H>
+
+// targeting support
+#include <targeting/common/commontargeting.H>
+#include <targeting/common/util.H>
+#include <targeting/common/utilFilter.H>
+
+#include <sys/mm.h>
+#include <intr/interrupt.H>
+#include <isteps/hwpf_reasoncodes.H>
+
+using namespace ISTEP;
+using namespace ISTEP_ERROR;
+using namespace ERRORLOG;
+using namespace TARGETING;
+
+namespace ISTEP_14
+{
+void* call_proc_exit_cache_contained (void *io_pArgs)
+{
+
+ IStepError l_stepError;
+
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_proc_exit_cache_contained entry" );
+
+ // @@@@@ 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)
+ // extend the memory space from 8MEG to 32Meg
+
+ //if mirrored then check that there is going to be memory at that location.
+ //For sapphire with mirrored location flipped and at zero,
+ //this also insures there is memory available to 'exit_cache' to.
+ //Also set ATTR_PAYLOAD_BASE here.
+ TARGETING::Target* l_sys = NULL;
+ targetService().getTopLevelTarget(l_sys);
+ assert( l_sys != NULL );
+
+ //@TODO RTC:133831 Commenting out due to missing attributes
+#if 0
+ errlHndl_t l_errl = NULL;
+ uint8_t l_mpipl = l_sys->getAttr<ATTR_IS_MPIPL_HB>();
+ ATTR_PAYLOAD_BASE_type payloadBase = 0;
+
+ if(!l_mpipl)
+ {
+ ATTR_PAYLOAD_IN_MIRROR_MEM_type l_mirrored = false;
+
+ // In Sapphire mode disable mirroring for now - @todo-RTC:108314
+ // and force payload to zero
+ if(!is_sapphire_load())
+ {
+ payloadBase = l_sys->getAttr<ATTR_PAYLOAD_BASE>();
+ l_mirrored = l_sys->getAttr<ATTR_PAYLOAD_IN_MIRROR_MEM>();
+ }
+
+ if(l_mirrored)
+ {
+ ATTR_MIRROR_BASE_ADDRESS_type l_mirrorBaseAddr = 0;
+ if(!is_sapphire_load())
+ {
+ uint64_t hrmor_base =
+ l_sys->getAttr<TARGETING::ATTR_HB_HRMOR_NODAL_BASE>();
+
+ l_mirrorBaseAddr =
+ l_sys->getAttr<TARGETING::ATTR_MIRROR_BASE_ADDRESS>();
+
+ // For single-node systems, the non-master processors can be
+ // in a different logical (powerbus) node.
+ // Need to migrate task to master.
+ task_affinity_pin();
+ task_affinity_migrate_to_master();
+ uint64_t this_node = INTR::PIR_t(task_getcpuid()).nodeId;
+ task_affinity_unpin();
+
+ l_mirrorBaseAddr += (this_node * hrmor_base)/2;
+
+ }
+
+ // Verify there is memory at the mirrored location
+ bool mirroredMemExists = false;
+ TARGETING::TargetHandleList l_procList;
+ getAllChips(l_procList, TYPE_PROC);
+
+ for (TargetHandleList::const_iterator proc = l_procList.begin();
+ proc != l_procList.end() && !mirroredMemExists;
+ ++proc)
+ {
+ uint64_t mirrorBase[4];
+ uint64_t mirrorSize[4];
+ bool rc = (*proc)->
+ tryGetAttr<TARGETING::ATTR_PROC_MIRROR_BASES>(mirrorBase);
+ if(false == rc)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "Failed to get ATTR_PROC_MIRROR_BASES");
+ assert(0);
+ }
+
+ rc = (*proc)->
+ tryGetAttr<TARGETING::ATTR_PROC_MIRROR_SIZES>(mirrorSize);
+ if(false == rc)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "Failed to get ATTR_PROC_MIRROR_SIZES");
+ assert(0);
+ }
+
+ for(uint64_t i = 0; i < 4 && !mirroredMemExists; ++i)
+ {
+ if(mirrorSize[i] != 0 &&
+ l_mirrorBaseAddr >= mirrorBase[i] &&
+ l_mirrorBaseAddr < (mirrorBase[i] + mirrorSize[i]))
+ {
+ mirroredMemExists = true;
+ }
+ }
+ }
+
+ if (mirroredMemExists)
+ {
+ // ATTR_PAYLOAD_BASE is in MB
+ payloadBase += l_mirrorBaseAddr/MEGABYTE;
+ }
+ else
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, ERR_MRK
+ "Request to load payload into mirrored memory,"
+ " but no memory exists at address 0x%016lx",
+ l_mirrorBaseAddr);
+
+ /*@
+ * @errortype ERRL_SEV_CRITICAL_SYS_TERM
+ * @moduleid fapi::MOD_EXIT_CACHE_CONTAINED,
+ * @reasoncode fapi::RC_NO_MIRRORED_MEMORY,
+ * @userdata1 Mirrored Memory Address
+ * @userdata2 0
+ *
+ * @devdesc Request given to load payload into mirrored
+ * memory, but no mirrored memory exists at
+ * that location.
+ */
+ l_errl = new ERRORLOG::ErrlEntry
+ (
+ ERRORLOG::ERRL_SEV_CRITICAL_SYS_TERM,
+ fapi::MOD_EXIT_CACHE_CONTAINED,
+ fapi::RC_NO_MIRRORED_MEMORY,
+ l_mirrorBaseAddr,
+ 0,
+ true); // callout firmware
+ }
+ }
+ // If we're not mirrored, payloadBase is the lowest mem_base.
+ // Note that if we are mirrored, finding the correct mirror
+ // base yields the proper payloadBase. This should also work
+ // for sapphire as a single (working) node will return 0 for
+ // bottom_mem_addr.
+ else {
+ payloadBase += get_bottom_mem_addr()/MEGABYTE;
+ }
+ }
+
+ if(!l_errl)
+ {
+ if(!l_mpipl)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "Payload base address is 0x%016lx",
+ payloadBase * MEGABYTE);
+
+ l_sys->setAttr<ATTR_PAYLOAD_BASE>(payloadBase);
+ }
+
+ //@TODO RTC:133831 call the HWP with each fapi::Target
+ //FAPI_INVOKE_HWP( l_errl,
+ // proc_exit_cache_contained
+ // );
+
+
+
+ if ( l_errl )
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR : call_proc_exit_cache_contained, "
+ "errorlog PLID=0x%x",
+ l_errl->plid() );
+ }
+ // no errors so extend VMM.
+ else
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS : call_proc_exit_cache_contained" );
+
+
+
+ // Call the function to extend VMM to 32MEG
+ int rc = mm_extend();
+
+ if (rc!=0)
+ {
+ /*@
+ * @errortype
+ * @moduleid fapi::MOD_EXIT_CACHE_CONTAINED
+ * @reasoncode fapi::RC_MM_EXTEND_FAILED
+ * @userdata1 rc from mm_extend
+ * @userdata2 <UNUSED>
+ *
+ * @devdesc Failure extending memory to 32MEG after
+ * exiting cache contained mode.
+ */
+ l_errl = new ERRORLOG::ErrlEntry
+ (ERRORLOG::ERRL_SEV_UNRECOVERABLE,
+ fapi::MOD_EXIT_CACHE_CONTAINED,
+ fapi::RC_MM_EXTEND_FAILED,
+ rc,
+ 0);
+
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR : call_proc_exit_cache_contained"
+ " - extendVMM, rc=0x%x",
+ rc );
+ }
+ else
+ {
+ // trace out the extend VMM was successful
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS : call_proc_exit_cache_contained"
+ " - extendVMM");
+ }
+ }
+ }
+ if ( l_errl )
+ {
+ // Create IStep error log and cross reference to error that occurred
+ l_stepError.addErrorDetails( l_errl );
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+ }
+
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_proc_exit_cache_contained exit" );
+#endif
+ // @@@@@ END CUSTOM BLOCK: @@@@@
+
+ // end task, returning any errorlogs to IStepDisp
+ return l_stepError.getErrorHandle();
+}
+
+};
diff --git a/src/usr/isteps/istep14/call_proc_htm_setup.C b/src/usr/isteps/istep14/call_proc_htm_setup.C
new file mode 100644
index 000000000..5979f0c83
--- /dev/null
+++ b/src/usr/isteps/istep14/call_proc_htm_setup.C
@@ -0,0 +1,40 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/isteps/istep14/call_proc_htm_setup.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 <errl/errlentry.H>
+
+using namespace ERRORLOG;
+
+namespace ISTEP_14
+{
+void* call_proc_htm_setup (void *io_pArgs)
+{
+ errlHndl_t l_err = NULL;
+
+ //@TODO RTC:33831 call p9_htm_setup.C HWP
+
+ return l_err;
+}
+
+};
diff --git a/src/usr/isteps/istep14/call_proc_pcie_config.C b/src/usr/isteps/istep14/call_proc_pcie_config.C
new file mode 100644
index 000000000..7eb44fb6c
--- /dev/null
+++ b/src/usr/isteps/istep14/call_proc_pcie_config.C
@@ -0,0 +1,106 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/isteps/istep14/call_proc_pcie_config.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 <errl/errlentry.H>
+#include <errl/errlmanager.H>
+#include <errl/errludtarget.H>
+
+#include <isteps/hwpisteperror.H>
+#include <initservice/isteps_trace.H>
+
+// targeting support
+#include <targeting/common/commontargeting.H>
+#include <targeting/common/util.H>
+#include <targeting/common/utilFilter.H>
+
+
+using namespace ISTEP;
+using namespace ISTEP_ERROR;
+using namespace ERRORLOG;
+using namespace TARGETING;
+
+namespace ISTEP_14
+{
+void* call_proc_pcie_config (void *io_pArgs)
+{
+ errlHndl_t l_errl = NULL;
+
+ IStepError l_stepError;
+
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_proc_pcie_config entry" );
+
+ TARGETING::TargetHandleList l_procTargetList;
+ getAllChips(l_procTargetList, TYPE_PROC );
+
+ for ( TargetHandleList::const_iterator
+ l_iter = l_procTargetList.begin();
+ l_iter != l_procTargetList.end();
+ ++l_iter )
+ {
+ const TARGETING::Target* l_pTarget = *l_iter;
+
+ // write HUID of target
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "target HUID %.8X", TARGETING::get_huid(l_pTarget));
+
+ //@TODO RTC:133831
+ // build a FAPI type of target.
+ //const fapi::Target l_fapi_pTarget( TARGET_TYPE_PROC_CHIP,
+ // (const_cast<TARGETING::Target*>(l_pTarget)) );
+
+ // call the HWP with each fapi::Target
+ //FAPI_INVOKE_HWP( l_errl, proc_pcie_config, l_fapi_pTarget );
+
+ if ( l_errl )
+ {
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_pTarget).addToLog( l_errl );
+
+ // Create IStep error log and cross reference to error that occurred
+ l_stepError.addErrorDetails( l_errl );
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR : proc_pcie_config" );
+
+ break;
+ }
+ else
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS : proc_pcie_config" );
+ }
+ }
+
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_proc_pcie_config exit" );
+
+ // end task, returning any errorlogs to IStepDisp
+ return l_stepError.getErrorHandle();
+}
+
+};
diff --git a/src/usr/isteps/istep14/call_proc_setup_bars.C b/src/usr/isteps/istep14/call_proc_setup_bars.C
new file mode 100644
index 000000000..536cd5da4
--- /dev/null
+++ b/src/usr/isteps/istep14/call_proc_setup_bars.C
@@ -0,0 +1,225 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/isteps/istep14/call_proc_setup_bars.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 <errl/errlentry.H>
+#include <isteps/hwpisteperror.H>
+#include <initservice/isteps_trace.H>
+
+using namespace ISTEP_ERROR;
+using namespace ERRORLOG;
+
+namespace ISTEP_14
+{
+void* call_proc_setup_bars (void *io_pArgs)
+{
+ IStepError l_stepError;
+/*
+ @TODO RTC:133831
+ errlHndl_t l_errl = NULL;
+
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_proc_setup_bars entry" );
+
+
+ // @@@@@ CUSTOM BLOCK: @@@@@
+ // Get all Centaur targets
+ TARGETING::TargetHandleList l_cpuTargetList;
+ getAllChips(l_cpuTargetList, TYPE_PROC );
+
+ // --------------------------------------------------------------------
+ // run mss_setup_bars on all CPUs.
+ // --------------------------------------------------------------------
+ for (TargetHandleList::const_iterator
+ l_cpu_iter = l_cpuTargetList.begin();
+ l_cpu_iter != l_cpuTargetList.end();
+ ++l_cpu_iter)
+ {
+ // make a local copy of the target for ease of use
+ const TARGETING::Target* l_pCpuTarget = *l_cpu_iter;
+
+ // write HUID of target
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "mss_setup_bars: proc "
+ "target HUID %.8X", TARGETING::get_huid(l_pCpuTarget));
+
+ // cast OUR type of target to a FAPI type of target.
+ const fapi::Target l_fapi_pCpuTarget( TARGET_TYPE_PROC_CHIP,
+ (const_cast<TARGETING::Target*> (l_pCpuTarget)) );
+
+ TARGETING::TargetHandleList l_membufsList;
+ getChildAffinityTargets(l_membufsList, l_pCpuTarget,
+ CLASS_CHIP, TYPE_MEMBUF);
+ std::vector<fapi::Target> l_associated_centaurs;
+
+ for (TargetHandleList::const_iterator
+ l_membuf_iter = l_membufsList.begin();
+ l_membuf_iter != l_membufsList.end();
+ ++l_membuf_iter)
+ {
+ // make a local copy of the target for ease of use
+ const TARGETING::Target* l_pTarget = *l_membuf_iter;
+
+ // cast OUR type of target to a FAPI type of target.
+ const fapi::Target l_fapi_centaur_target
+ (fapi::TARGET_TYPE_MEMBUF_CHIP,
+ (const_cast<TARGETING::Target*>(l_pTarget)) );
+
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "target HUID %.8X", TARGETING::get_huid(l_pTarget));
+
+ l_associated_centaurs.push_back(l_fapi_centaur_target);
+ }
+
+ // call the HWP with each fapi::Target
+ FAPI_INVOKE_HWP(l_errl,
+ mss_setup_bars,
+ l_fapi_pCpuTarget, l_associated_centaurs );
+ if ( l_errl )
+ {
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_pCpuTarget).addToLog( l_errl );
+
+ // Create IStep error log and cross reference to error that occurred
+ l_stepError.addErrorDetails( l_errl );
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR : mss_setup_bars" );
+ // break and return with error
+ break;
+ }
+ else
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS : mss_setup-bars" );
+ }
+ } // endfor
+
+
+ if ( l_stepError.isNull() )
+ {
+ //----------------------------------------------------------------------
+ // run proc_setup_bars on all CPUs
+ //----------------------------------------------------------------------
+ std::vector<proc_setup_bars_proc_chip> l_proc_chips;
+
+ TargetPairs_t l_abusLinks;
+ l_errl = PbusLinkSvc::getTheInstance().getPbusConnections(
+ l_abusLinks, TYPE_ABUS, false );
+
+ for (TargetHandleList::const_iterator
+ l_cpu_iter = l_cpuTargetList.begin();
+ l_cpu_iter != l_cpuTargetList.end() && !l_errl;
+ ++l_cpu_iter)
+ {
+ // make a local copy of the target for ease of use
+ const TARGETING::Target* l_pCpuTarget = *l_cpu_iter;
+
+ // cast OUR type of target to a FAPI type of target.
+ const fapi::Target l_fapi_pCpuTarget( TARGET_TYPE_PROC_CHIP,
+ (const_cast<TARGETING::Target*> (l_pCpuTarget)) );
+
+ proc_setup_bars_proc_chip l_proc_chip ;
+ l_proc_chip.this_chip = l_fapi_pCpuTarget;
+ l_proc_chip.process_f0 = true;
+ l_proc_chip.process_f1 = true;
+
+ TARGETING::TargetHandleList l_abuses;
+ getChildChiplets( l_abuses, l_pCpuTarget, TYPE_ABUS );
+
+ for (TargetHandleList::const_iterator
+ l_abus_iter = l_abuses.begin();
+ l_abus_iter != l_abuses.end();
+ ++l_abus_iter)
+ {
+ const TARGETING::Target* l_target = *l_abus_iter;
+ uint8_t l_srcID = l_target->getAttr<ATTR_CHIP_UNIT>();
+ TargetPairs_t::iterator l_itr = l_abusLinks.find(l_target);
+ if ( l_itr == l_abusLinks.end() )
+ {
+ continue;
+ }
+
+ const TARGETING::Target *l_pParent = NULL;
+ l_pParent = getParentChip(
+ (const_cast<TARGETING::Target*>(l_itr->second)));
+ fapi::Target l_fapiproc_parent( TARGET_TYPE_PROC_CHIP,
+ (void *)l_pParent );
+
+ switch (l_srcID)
+ {
+ case 0: l_proc_chip.a0_chip = l_fapiproc_parent; break;
+ case 1: l_proc_chip.a1_chip = l_fapiproc_parent; break;
+ case 2: l_proc_chip.a2_chip = l_fapiproc_parent; break;
+ default: break;
+ }
+ }
+
+ l_proc_chips.push_back( l_proc_chip );
+
+ } // endfor
+
+ if (!l_errl)
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call proc_setup_bars");
+
+ // call the HWP with each fapi::Target
+ FAPI_INVOKE_HWP( l_errl, proc_setup_bars, l_proc_chips, true );
+
+ if ( l_errl )
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR : proc_setup_bars" );
+ }
+ else
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS : proc_setup_bars" );
+ }
+ }
+ } // end if !l_errl
+
+ // @@@@@ END CUSTOM BLOCK: @@@@@
+
+ if ( l_errl )
+ {
+
+ // Create IStep error log and cross reference to error that occurred
+ l_stepError.addErrorDetails( l_errl);
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+ }
+
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_proc_setup_bars exit" );
+*/
+ // end task, returning any errorlogs to IStepDisp
+ return l_stepError.getErrorHandle();
+}
+
+};
diff --git a/src/usr/isteps/istep14/makefile b/src/usr/isteps/istep14/makefile
new file mode 100644
index 000000000..bfeae4023
--- /dev/null
+++ b/src/usr/isteps/istep14/makefile
@@ -0,0 +1,38 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/isteps/istep14/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 = istep14
+
+OBJS += call_host_startprd_dram.o
+OBJS += call_mss_memdiag.o
+OBJS += call_mss_thermal_init.o
+OBJS += call_proc_pcie_config.o
+OBJS += call_mss_power_cleanup.o
+OBJS += call_proc_setup_bars.o
+OBJS += call_proc_htm_setup.o
+OBJS += call_proc_exit_cache_contained.o
+OBJS += call_host_mpipl_service.o
+
+include ${ROOTPATH}/config.mk
diff --git a/src/usr/isteps/makefile b/src/usr/isteps/makefile
index c52bda4a0..66705fd8b 100644
--- a/src/usr/isteps/makefile
+++ b/src/usr/isteps/makefile
@@ -33,6 +33,7 @@ SUBDIRS+=istep10.d
SUBDIRS+=istep11.d
SUBDIRS+=istep12.d
SUBDIRS+=istep13.d
+SUBDIRS+=istep14.d
OBJS += hwpisteperror.o
OBJS += hwpistepud.o
OpenPOWER on IntegriCloud