summaryrefslogtreecommitdiffstats
path: root/src/usr
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr')
-rw-r--r--src/usr/hwpf/hwp/occ/occ.C495
-rw-r--r--src/usr/hwpf/hwp/occ/occ.mk6
-rw-r--r--src/usr/hwpf/hwp/occ/occ_common.C468
-rw-r--r--src/usr/hwpf/hwp/occ/runtime/rt_occ.C299
-rw-r--r--src/usr/hwpf/hwp/start_payload/start_payload.C1
-rw-r--r--src/usr/hwpf/test/runtime/rt_occtest.H2
-rw-r--r--src/usr/util/runtime/utillidmgr_rt.C2
7 files changed, 585 insertions, 688 deletions
diff --git a/src/usr/hwpf/hwp/occ/occ.C b/src/usr/hwpf/hwp/occ/occ.C
index a154893dd..25d6e3656 100644
--- a/src/usr/hwpf/hwp/occ/occ.C
+++ b/src/usr/hwpf/hwp/occ/occ.C
@@ -26,7 +26,9 @@
#include <stdint.h>
#include <config.h>
-#include <occ/occ.H>
+#include <hwpf/hwp/occ/occ.H>
+#include <hwpf/hwp/occ/occ_common.H>
+
#include <initservice/taskargs.H>
#include <errl/errlentry.H>
@@ -58,6 +60,7 @@
#include <p8_pm_init.H>
#include <p8_pm_firinit.H>
+#include <config.h>
// Easy macro replace for unit testing
//#define TRACUCOMP(args...) TRACFCOMP(args)
#define TRACUCOMP(args...)
@@ -68,429 +71,81 @@ using namespace TARGETING;
namespace HBOCC
{
-
- /**
- * @brief Fetches OCC image from FSP and writes to
- * specified offset.
- *
- * @param[in] i_occVirtAddr Virtual
- * address where OCC image
- * should be loaded.
- *
- * @return errlHndl_t Error log image load failed
- */
- errlHndl_t loadOCCImageToHomer(void* i_occVirtAddr)
- {
- TRACUCOMP( g_fapiTd,
- ENTER_MRK"loadOCCImageToHomer(%p)",
- i_occVirtAddr);
-
- errlHndl_t l_errl = NULL;
- size_t lidSize = 0;
- do {
- UtilLidMgr lidMgr(Util::OCC_LIDID);
-
- l_errl = lidMgr.getLidSize(lidSize);
- if(l_errl)
- {
- TRACFCOMP( g_fapiImpTd,
- ERR_MRK"loadOCCImageToHomer: Error getting lid size. lidId=0x%.8x",
- Util::OCC_LIDID);
- break;
- }
-
- l_errl = lidMgr.getLid(i_occVirtAddr, lidSize);
- if(l_errl)
- {
- TRACFCOMP( g_fapiImpTd,
- ERR_MRK"loadOCCImageToHomer: Error getting lid.. lidId=0x%.8x",
- Util::OCC_LIDID);
- break;
- }
-
- }while(0);
-
- TRACUCOMP( g_fapiTd,
- ENTER_MRK"loadOCCImageToHomer");
-
- return l_errl;
- }
-
- /**
- * @brief Sets up OCC Host data
- *
- * @param[in] i_occHostDataVirtAddr Virtual
- * address of current
- * proc's Host data area.
+ /**
+ * @brief Setup homer addresses and load OCC for a specified processor
*
- * @return errlHndl_t Error log Host data setup failed
- */
- errlHndl_t loadHostDataToHomer(void* i_occHostDataVirtAddr)
- {
- TRACUCOMP( g_fapiTd,
- ENTER_MRK"loadHostDataToHomer(%p)",
- i_occHostDataVirtAddr);
-
- errlHndl_t l_errl = NULL;
-
- //Treat virtual address as starting pointer
- //for config struct
- HBOCC::occHostConfigDataArea_t * config_data =
- reinterpret_cast<HBOCC::occHostConfigDataArea_t *>
- (i_occHostDataVirtAddr);
-
- // Get top level system target
- TARGETING::TargetService & tS = TARGETING::targetService();
- TARGETING::Target * sysTarget = NULL;
- tS.getTopLevelTarget( sysTarget );
- assert( sysTarget != NULL );
-
- uint32_t nestFreq = sysTarget->getAttr<ATTR_FREQ_PB>();
-
- config_data->version = HBOCC::OccHostDataVersion;
- config_data->nestFrequency = nestFreq;
-
- TRACUCOMP( g_fapiTd,
- EXIT_MRK"loadHostDataToHomer");
-
- return l_errl;
- }
-
- /**
- * @brief Execute procedures and steps necessary
- * to load OCC data in specified processor
- *
- * @param[in] i_target Target proc to load
- * @param[in] i_homerVirtAddrBase Virtual
- * address of current
- * proc's HOMER
- * @param[in] i_homerPhysAddrBase Physical
- * address of current
- * proc's HOMER
+ * @param[in] i_target0 Target proc to load
+ * @param[in] i_homerVirtAddrBase Base Virtual
+ * address of all HOMER
+ * images
+ * @param[in] i_homerPhysAddrBase Base Physical
+ * address of all HOMER
+ * images
*
- * @return errlHndl_t Error log image load failed
+ * @return errlHndl_t Error log
*/
- errlHndl_t load(Target* i_target,
- void* i_homerVirtAddrBase,
- uint64_t i_homerPhysAddrBase)
- {
- errlHndl_t l_errl = NULL;
- uint64_t targHomer = 0;
- uint64_t tmpOffset = 0;
- void* occVirt = 0;
- void* occHostVirt = 0;
-
- TRACFCOMP( g_fapiTd,
- ENTER_MRK"HBOCC:load()" );
-
- do{
- //Figure out OCC image offset for Target
- //OCC image offset = HOMER_SIZE*ProcPosition +
- // OCC offset within HOMER (happens to be zero)
- uint8_t tmpPos = i_target->getAttr<ATTR_POSITION>();
- tmpOffset = tmpPos*VMM_HOMER_INSTANCE_SIZE +
- HOMER_OFFSET_TO_OCC_IMG;
- targHomer = i_homerPhysAddrBase + tmpOffset;
- uint64_t occVirt64 =
- reinterpret_cast<uint64_t>(i_homerVirtAddrBase)
- + tmpOffset;
- occVirt = reinterpret_cast<void *>(occVirt64);
-
- // Remember where we put things
- if( i_target )
- {
- i_target->setAttr<ATTR_HOMER_PHYS_ADDR>(targHomer);
- i_target->setAttr<ATTR_HOMER_VIRT_ADDR>(occVirt64);
- }
- //Figure out OCC Host Data offset for Target
- //OCC host data offset = HOMER_SIZE*ProcPosition +
- // OCC data within HOMR
- tmpOffset = tmpPos*VMM_HOMER_INSTANCE_SIZE +
- HOMER_OFFSET_TO_OCC_HOST_DATA;
- occHostVirt =
- reinterpret_cast<void *>
- (reinterpret_cast<uint64_t>(i_homerVirtAddrBase)
- + tmpOffset) ;
+ errlHndl_t Setupnload (Target* i_target,
+ void* i_homerVirtAddrBase,
+ uint64_t i_homerPhysAddrBase)
+ {
+ errlHndl_t l_errl = NULL;
+ TRACUCOMP( g_fapiTd,
+ ENTER_MRK"Setupnload" );
- // cast OUR type of target to a FAPI type of target.
- const fapi::Target
- l_fapiTarg(fapi::TARGET_TYPE_PROC_CHIP,
- (const_cast<Target*>(i_target)));
+ do {
//==============================
- //Setup for OCC Load
+ //Setup Addresses
//==============================
+ uint8_t tmpPos = i_target->getAttr<ATTR_POSITION>();
+ uint64_t tmpOffset = (tmpPos * VMM_HOMER_INSTANCE_SIZE) +
+ HOMER_OFFSET_TO_OCC_IMG;
- // BAR0 is the Entire HOMER (start of HOMER contains OCC base Image)
- // Bar size is in MB, obtained value of 4MB from Greg Still
- const uint64_t bar0_size_MB = VMM_HOMER_INSTANCE_SIZE_IN_MB;
- TRACUCOMP( g_fapiImpTd,
- INFO_MRK"OCC Address: 0x%.8X, size=0x%.8X",
- targHomer, bar0_size_MB );
-
- FAPI_INVOKE_HWP( l_errl,
- p8_pba_bar_config,
- l_fapiTarg,
- 0, targHomer, bar0_size_MB,
- PBA_CMD_SCOPE_NODAL );
-
- if ( l_errl != NULL )
- {
- TRACFCOMP( g_fapiImpTd,
- ERR_MRK"Bar0 config failed!" );
- l_errl->collectTrace(FAPI_TRACE_NAME,256);
- l_errl->collectTrace(FAPI_IMP_TRACE_NAME,256);
-
- break;
- }
-
- // BAR1 is what OCC uses to talk to the Centaur
- // Bar size is in MB
- uint64_t centaur_addr =
- i_target->getAttr<ATTR_IBSCOM_PROC_BASE_ADDR>();
- FAPI_INVOKE_HWP( l_errl,
- p8_pba_bar_config,
- l_fapiTarg,
- 1, //i_index
- centaur_addr, //i_pba_bar_addr
- (uint64_t)OCC_IBSCOM_RANGE_IN_MB, //i_pba_bar_size
- PBA_CMD_SCOPE_NODAL ); //i_pba_cmd_scope
-
- if ( l_errl != NULL )
- {
- TRACFCOMP( g_fapiImpTd,
- ERR_MRK"Bar1 config failed!" );
- l_errl->collectTrace(FAPI_TRACE_NAME,256);
- l_errl->collectTrace(FAPI_IMP_TRACE_NAME,256);
-
- break;
- }
-
- // BAR3 is the OCC Common Area
- // Bar size is in MB, obtained value of 8MB from Tim Hallett
- const uint64_t bar3_size_MB = VMM_OCC_COMMON_SIZE_IN_MB;
- const uint64_t occ_common_addr = i_homerPhysAddrBase
- + VMM_HOMER_REGION_SIZE;
-
- TRACUCOMP( g_fapiImpTd,
- INFO_MRK"OCC Common Address: 0x%.8X, size=0x%.8X",
- occ_common_addr, bar3_size_MB );
+ uint64_t i_homerPhysAddr = i_homerPhysAddrBase + tmpOffset;
+ uint64_t i_homerVirtAddr = reinterpret_cast<uint64_t>
+ (i_homerVirtAddrBase) + tmpOffset;
- FAPI_INVOKE_HWP( l_errl,
- p8_pba_bar_config,
- l_fapiTarg,
- 3, occ_common_addr,
- bar3_size_MB,
- PBA_CMD_SCOPE_NODAL );
-
- if ( l_errl != NULL )
- {
- TRACFCOMP( g_fapiImpTd,
- ERR_MRK"Bar3 config failed!" );
- l_errl->collectTrace(FAPI_TRACE_NAME,256);
- l_errl->collectTrace(FAPI_IMP_TRACE_NAME,256);
-
- break;
- }
+ uint64_t i_commonPhysAddr = i_homerPhysAddrBase +
+ VMM_HOMER_REGION_SIZE;
//==============================
- //Load the OCC HOMER image
+ // Load OCC
//==============================
- l_errl = loadOCCImageToHomer( occVirt );
- if( l_errl != NULL )
+ l_errl= HBOCC::loadOCC(i_target,
+ i_homerPhysAddr,
+ i_homerVirtAddr,
+ i_commonPhysAddr);
+ if(l_errl != NULL)
{
- TRACFCOMP( g_fapiImpTd, ERR_MRK"loading image failed!" );
+ TRACFCOMP( g_fapiImpTd, ERR_MRK"Setupnload: loadOCC failed" );
break;
}
//==============================
//Setup host data area of HOMER;
//==============================
- l_errl = loadHostDataToHomer(occHostVirt);
+ void* occHostVirt = reinterpret_cast<void *>(i_homerVirtAddr);
+ l_errl = HBOCC::loadHostDataToHomer(occHostVirt);
if( l_errl != NULL )
{
TRACFCOMP( g_fapiImpTd, ERR_MRK"loading Host Data Area failed!" );
break;
}
-
- }while(0);
-
- TRACFCOMP( g_fapiTd,
- EXIT_MRK"HBOCC:load()" );
+ } while (0);
return l_errl;
-
- }
+ }
/**
- * @brief Load and Start OCC for specified DCM
- * pair of processors. If 2nd input target
- * is NULL, OCC will be setup on just the
- * one target.
+ * @brief Starts OCCs on all Processors in the node
+ * This is intended to be used for AVP testing.
*
- * @param[in] i_target0 Target of first proc in
- * DCM pair
- * @param[in] i_target1 Target of second proc in
- * DCM pair
- * @param[in] i_homerVirtAddrBase Base Virtual
- * address of all HOMER
- * images
- * @param[in] i_homerPhysAddrBase Base Physical
- * address of all HOMER
- * images
- *
- * @return errlHndl_t Error log image load failed
+ * @param[out] o_failedOccTarget: Pointer to the target failing
+ * loadnStartAllOccs
+ * @return errlHndl_t Error log if OCC load failed
*/
- errlHndl_t loadnStartOcc(Target* i_target0,
- Target* i_target1,
- void* i_homerVirtAddrBase,
- uint64_t i_homerPhysAddrBase)
- {
- errlHndl_t l_errl = NULL;
-
- TRACUCOMP( g_fapiTd,
- ENTER_MRK"loadnStartOcc" );
-
-
- do {
- // cast OUR type of target to a FAPI type of target.
- // figure out homer offsets
- const fapi::Target
- l_fapiTarg0(fapi::TARGET_TYPE_PROC_CHIP,
- (const_cast<Target*>(i_target0)));
-
- fapi::Target l_fapiTarg1;
- if(i_target1)
- {
- l_fapiTarg1.setType(fapi::TARGET_TYPE_PROC_CHIP);
- l_fapiTarg1.set(const_cast<Target*>(i_target1));
-
- }
- else
- {
- l_fapiTarg1.setType(fapi::TARGET_TYPE_NONE);
- }
-
- //==============================
- //Setup and load oCC
- //==============================
-
- l_errl = load(i_target0,
- i_homerVirtAddrBase,
- i_homerPhysAddrBase);
- if(l_errl != NULL)
- {
- TRACFCOMP( g_fapiImpTd, ERR_MRK"loadnStartOcc: load failed for target 0" );
- break;
- }
-
- if(i_target1 != NULL)
- {
- l_errl = load(i_target1,
- i_homerVirtAddrBase,
- i_homerPhysAddrBase);
- if(l_errl != NULL)
- {
- TRACFCOMP( g_fapiImpTd, ERR_MRK"loadnStartOcc: load failed for target 1" );
- break;
- }
- }
- //==============================
- // Initialize the logic
- //==============================
-
- // Config path
- // p8_pm_init.C enum: PM_CONFIG
- FAPI_INVOKE_HWP( l_errl,
- p8_pm_init,
- l_fapiTarg0,
- l_fapiTarg1,
- PM_CONFIG );
-
- if ( l_errl != NULL )
- {
- TRACFCOMP( g_fapiImpTd,
- ERR_MRK"p8_pm_init, config failed!" );
- l_errl->collectTrace(FAPI_TRACE_NAME,256);
- l_errl->collectTrace(FAPI_IMP_TRACE_NAME,256);
-
- break;
- }
-
- // Init path
- // p8_pm_init.C enum: PM_INIT
- FAPI_INVOKE_HWP( l_errl,
- p8_pm_init,
- l_fapiTarg0,
- l_fapiTarg1,
- PM_INIT );
-
- if ( l_errl != NULL )
- {
- TRACFCOMP( g_fapiImpTd,
- ERR_MRK"p8_pm_init, init failed!" );
- l_errl->collectTrace(FAPI_TRACE_NAME,256);
- l_errl->collectTrace(FAPI_IMP_TRACE_NAME,256);
-
- break;
- }
- TRACFCOMP( g_fapiImpTd,
- INFO_MRK"OCC Finished: p8_pm_init.C enum: PM_INIT" );
-
-
- //==============================
- //Start the OCC on primary chip of DCM
- //==============================
- FAPI_INVOKE_HWP( l_errl,
- p8_occ_control,
- l_fapiTarg0,
- PPC405_RESET_OFF,
- PPC405_BOOT_MEM );
-
- if ( l_errl != NULL )
- {
- TRACFCOMP( g_fapiImpTd,
- ERR_MRK"occ_control failed!" );
- l_errl->collectTrace(FAPI_TRACE_NAME,256);
- l_errl->collectTrace(FAPI_IMP_TRACE_NAME,256);
-
- break;
- }
-
- //==============================
- // Start the OCC on slave chip of DCM
- //==============================
- if ( l_fapiTarg1.getType() != fapi::TARGET_TYPE_NONE )
- {
- FAPI_INVOKE_HWP( l_errl,
- p8_occ_control,
- l_fapiTarg1,
- PPC405_RESET_OFF,
- PPC405_BOOT_MEM );
-
- if ( l_errl != NULL )
- {
- TRACFCOMP( g_fapiImpTd,
- ERR_MRK"occ_control failed!" );
- l_errl->collectTrace(FAPI_TRACE_NAME,256);
- l_errl->collectTrace(FAPI_IMP_TRACE_NAME,256);
-
- break;
- }
- }
-
- } while(0);
-
- TRACUCOMP( g_fapiTd,
- EXIT_MRK"loadnStartOcc" );
-
- return l_errl;
- }
-
-
- ////////////////////////////////////////////////
errlHndl_t loadnStartAllOccs(TARGETING::Target *& o_failedOccTarget)
{
errlHndl_t l_errl = NULL;
@@ -564,12 +219,15 @@ namespace HBOCC
if(0 ==
(*itr1)->getAttr<ATTR_PROC_DCM_INSTALLED>())
{
+ TRACUCOMP( g_fapiTd,
+ INFO_MRK"loadnStartAllOccs: non-dcm path entered");
+
for (TargetHandleList::iterator itr = procChips.begin();
itr != procChips.end();
++itr)
{
- l_errl = loadnStartOcc(*itr,
- NULL,
+ /******* SETUP AND LOAD **************/
+ l_errl = Setupnload (*itr,
homerVirtAddrBase,
homerPhysAddrBase);
if(l_errl)
@@ -579,6 +237,14 @@ namespace HBOCC
"loadnStartAllOccs:loadnStartOcc failed");
break;
}
+
+ /********* START OCC *************/
+ l_errl = HBOCC::startOCC (*itr, NULL, o_failedOccTarget);
+ if (l_errl)
+ {
+ TRACFCOMP( g_fapiImpTd, ERR_MRK"loadnStartAllOcc: start failed");
+ break;
+ }
}
if (l_errl)
{
@@ -624,16 +290,36 @@ namespace HBOCC
targ1 = *itr;
}
}
- TRACUCOMP( g_fapiImpTd, INFO_MRK"loadnStartAllOccs: calling loadnStartOcc." );
- l_errl = loadnStartOcc(targ0,
- targ1,
+
+ /********** Setup and load targ0 ***********/
+ l_errl = Setupnload (targ0,
homerVirtAddrBase,
homerPhysAddrBase);
if(l_errl)
{
- o_failedOccTarget = *itr;
+ o_failedOccTarget = targ0;
+ TRACFCOMP( g_fapiImpTd, ERR_MRK
+ "loadnStartAllOccs: Setupnload failed on targ0");
+ break;
+ }
+
+ /*********** Setup and load targ1 **********/
+ l_errl = Setupnload (targ1,
+ homerVirtAddrBase,
+ homerPhysAddrBase);
+ if(l_errl)
+ {
+ o_failedOccTarget = targ1;
TRACFCOMP( g_fapiImpTd, ERR_MRK
- "loadnStartAllOccs:loadnStartOcc failed");
+ "loadnStartAllOccs:Setupnload failed on targ1");
+ break;
+ }
+
+ /*********** Start OCC *******************/
+ l_errl = HBOCC::startOCC (targ0, targ1, o_failedOccTarget);
+ if (l_errl)
+ {
+ TRACFCOMP( g_fapiImpTd, ERR_MRK"loadnStartAllOccs: start failed");
break;
}
}
@@ -711,8 +397,15 @@ namespace HBOCC
return l_errl;
}
+ /**
+ * @brief Starts OCCs on all Processors in the node
+ * This is intended to be used for Open Power.
+ *
+ * @return errlHndl_t Error log if OCC load failed
+ */
errlHndl_t activateOCC ()
{
+ TRACUCOMP( g_fapiTd,ENTER_MRK"activateOCC" );
errlHndl_t l_errl = NULL;
TARGETING::Target* l_failedOccTarget = NULL;
//uint8_t l_errStatus = 0;
@@ -738,9 +431,7 @@ namespace HBOCC
errlCommit (l_errl, HWPF_COMP_ID);
}
#endif
+ TRACUCOMP( g_fapiTd,EXIT_MRK"activateOCC" );
return l_errl;
}
-
-
-
} //end OCC namespace
diff --git a/src/usr/hwpf/hwp/occ/occ.mk b/src/usr/hwpf/hwp/occ/occ.mk
index 12b5d7743..1a513002d 100644
--- a/src/usr/hwpf/hwp/occ/occ.mk
+++ b/src/usr/hwpf/hwp/occ/occ.mk
@@ -5,7 +5,9 @@
#
# OpenPOWER HostBoot Project
#
-# COPYRIGHT International Business Machines Corp. 2014
+# Contributors Listed Below - COPYRIGHT 2014
+# [+] 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.
@@ -69,6 +71,8 @@ OBJS += p8_pmc_force_vsafe.o
OBJS += p8_ocb_indir_access.o
OBJS += p8_ocb_indir_setup_linear.o
+#common occ functions between ipl and runtime
+OBJS += occ_common.o
## NOTE: add a new directory onto the vpaths when you add a new HWP
## EXAMPLE:
# VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/occ/<HWP_dir>
diff --git a/src/usr/hwpf/hwp/occ/occ_common.C b/src/usr/hwpf/hwp/occ/occ_common.C
new file mode 100644
index 000000000..b2768873d
--- /dev/null
+++ b/src/usr/hwpf/hwp/occ/occ_common.C
@@ -0,0 +1,468 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/hwpf/hwp/occ/occ.C $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2013,2014 */
+/* [+] 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 <occ/occ_common.H>
+
+#include <initservice/taskargs.H>
+#include <errl/errlentry.H>
+
+#include <devicefw/userif.H>
+#include <sys/misc.h>
+#include <sys/mm.h>
+#include <sys/mmio.h>
+#include <vmmconst.h>
+
+// targeting support
+#include <targeting/common/commontargeting.H>
+#include <targeting/common/utilFilter.H>
+#include <targeting/common/targetservice.H>
+#include <targeting/common/util.H>
+
+// fapi support
+#include <fapi.H>
+#include <fapiPlatHwpInvoker.H>
+#include <hwpf/plat/fapiPlatTrace.H>
+#include <hwpf/hwpf_reasoncodes.H>
+
+#include <vfs/vfs.H>
+#include <util/utillidmgr.H>
+
+// Procedures
+#include <p8_pba_init.H>
+#include <p8_occ_control.H>
+#include <p8_pba_bar_config.H>
+#include <p8_pm_init.H>
+#include <p8_pm_firinit.H>
+#include <p8_pm_prep_for_reset.H>
+
+// Easy macro replace for unit testing
+//#define TRACUCOMP(args...) TRACFCOMP(args)
+#define TRACUCOMP(args...)
+
+extern trace_desc_t* g_fapiTd;
+
+using namespace TARGETING;
+
+namespace HBOCC
+{
+ /**
+ * @brief Fetches OCC image from FSP and writes to
+ * specified offset.
+ *
+ * @param[in] i_occVirtAddr Virtual
+ * address where OCC image
+ * should be loaded.
+ *
+ * @return errlHndl_t Error log image load failed
+ */
+ errlHndl_t loadOCCImageToHomer(void* i_occVirtAddr)
+ {
+ TRACUCOMP( g_fapiTd,
+ ENTER_MRK"loadOCCImageToHomer(%p)",
+ i_occVirtAddr);
+
+ errlHndl_t l_errl = NULL;
+ size_t lidSize = 0;
+ do {
+ UtilLidMgr lidMgr(HBOCC::OCC_LIDID);
+
+ l_errl = lidMgr.getLidSize(lidSize);
+ if(l_errl)
+ {
+ TRACFCOMP( g_fapiImpTd,
+ ERR_MRK"loadOCCImageToHomer: Error getting lid size. lidId=0x%.8x",
+ OCC_LIDID);
+ break;
+ }
+
+ l_errl = lidMgr.getLid(i_occVirtAddr, lidSize);
+ if(l_errl)
+ {
+ TRACFCOMP( g_fapiImpTd,
+ ERR_MRK"loadOCCImageToHomer: Error getting lid.. lidId=0x%.8x",
+ OCC_LIDID);
+ break;
+ }
+
+ }while(0);
+
+ TRACUCOMP( g_fapiTd,
+ EXIT_MRK"loadOCCImageToHomer");
+
+ return l_errl;
+ }
+
+ /**
+ * @brief Sets up OCC Host data
+ *
+ * @param[in] i_occHostDataVirtAddr Virtual
+ * address of current
+ * proc's Host data area.
+ *
+ * @return errlHndl_t Error log Host data setup failed
+ */
+ errlHndl_t loadHostDataToHomer(void* i_occHostDataVirtAddr)
+ {
+ TRACUCOMP( g_fapiTd,
+ ENTER_MRK"loadHostDataToHomer(%p)",
+ i_occHostDataVirtAddr);
+
+ errlHndl_t l_errl = NULL;
+
+ //Treat virtual address as starting pointer
+ //for config struct
+ HBOCC::occHostConfigDataArea_t * config_data =
+ reinterpret_cast<HBOCC::occHostConfigDataArea_t *>
+ (i_occHostDataVirtAddr);
+
+ // Get top level system target
+ TARGETING::TargetService & tS = TARGETING::targetService();
+ TARGETING::Target * sysTarget = NULL;
+ tS.getTopLevelTarget( sysTarget );
+ assert( sysTarget != NULL );
+
+ uint32_t nestFreq = sysTarget->getAttr<ATTR_FREQ_PB>();
+
+ config_data->version = HBOCC::OccHostDataVersion;
+ config_data->nestFrequency = nestFreq;
+
+ TRACUCOMP( g_fapiTd,
+ EXIT_MRK"loadHostDataToHomer");
+
+ return l_errl;
+ }
+
+ /**
+ * @brief Execute procedures and steps necessary
+ * to load OCC data in specified processor
+ *
+ * @param[in] i_target Target proc to load
+ * @param[in] i_homerVirtAddrBase Virtual
+ * address of current
+ * proc's HOMER
+ * @param[in] i_homerPhysAddrBase Physical
+ * address of current
+ * proc's HOMER
+ *
+ * @return errlHndl_t Error log image load failed
+ */
+ errlHndl_t loadOCC(TARGETING::Target* i_target,
+ uint64_t i_homerPhysAddr,
+ uint64_t i_homerVirtAddr,
+ uint64_t i_commonPhysAddr)
+ {
+ errlHndl_t l_errl = NULL;
+ TRACFCOMP( g_fapiTd,
+ ENTER_MRK"loadOCC" );
+ do{
+ // Remember where we put things
+ if( i_target )
+ {
+ i_target->setAttr<ATTR_HOMER_PHYS_ADDR>(i_homerPhysAddr);
+ i_target->setAttr<ATTR_HOMER_VIRT_ADDR>(i_homerVirtAddr);
+ }
+ // cast OUR type of target to a FAPI type of target.
+ const fapi::Target l_fapiTarg(fapi::TARGET_TYPE_PROC_CHIP,
+ (const_cast<Target*>(i_target)));
+ TRACFCOMP( g_fapiTd, "FapiTarget: %s",l_fapiTarg.toEcmdString());
+
+ //==============================
+ //Setup for OCC Load
+ //==============================
+
+ // BAR0 is the Entire HOMER (start of HOMER contains OCC base Image)
+ // Bar size is in MB, obtained value of 4MB from Greg Still
+ TRACUCOMP( g_fapiImpTd,
+ INFO_MRK"loadOCC: OCC Address: 0x%.8X, size=0x%.8X",
+ i_homerPhysAddr, VMM_HOMER_INSTANCE_SIZE_IN_MB);
+
+ FAPI_INVOKE_HWP( l_errl,
+ p8_pba_bar_config,
+ l_fapiTarg,
+ 0,
+ i_homerPhysAddr,
+ VMM_HOMER_INSTANCE_SIZE_IN_MB,
+ PBA_CMD_SCOPE_NODAL );
+
+ if (l_errl)
+ {
+ TRACFCOMP( g_fapiImpTd,
+ ERR_MRK"loadOCC: Bar0 config failed!" );
+ l_errl->collectTrace(FAPI_TRACE_NAME,256);
+ l_errl->collectTrace(FAPI_IMP_TRACE_NAME,256);
+
+ break;
+ }
+
+ // BAR1 is what OCC uses to talk to the Centaur
+ // Bar size is in MB
+ uint64_t centaur_addr =
+ i_target->getAttr<ATTR_IBSCOM_PROC_BASE_ADDR>();
+ FAPI_INVOKE_HWP( l_errl,
+ p8_pba_bar_config,
+ l_fapiTarg,
+ 1, //i_index
+ centaur_addr, //i_pba_bar_addr
+ (uint64_t)OCC_IBSCOM_RANGE_IN_MB, //i_pba_bar_size
+ PBA_CMD_SCOPE_NODAL ); //i_pba_cmd_scope
+
+ if ( l_errl )
+ {
+ TRACFCOMP( g_fapiImpTd,
+ ERR_MRK"loadOCC: Bar1 config failed!" );
+ l_errl->collectTrace(FAPI_TRACE_NAME,256);
+ l_errl->collectTrace(FAPI_IMP_TRACE_NAME,256);
+
+ break;
+ }
+
+ // BAR3 is the OCC Common Area
+ // Bar size is in MB, obtained value of 8MB from Tim Hallett
+ TRACUCOMP( g_fapiImpTd,
+ INFO_MRK"loadOCC: OCC Common Addr: 0x%.8X,size=0x%.8X",
+ i_commonPhysAddr,VMM_OCC_COMMON_SIZE_IN_MB);
+
+ FAPI_INVOKE_HWP( l_errl,
+ p8_pba_bar_config,
+ l_fapiTarg,
+ 3,
+ i_commonPhysAddr,
+ VMM_OCC_COMMON_SIZE_IN_MB,
+ PBA_CMD_SCOPE_NODAL );
+
+ if ( l_errl != NULL )
+ {
+ TRACFCOMP( g_fapiImpTd,
+ ERR_MRK"loadOCC: Bar3 config failed!" );
+ l_errl->collectTrace(FAPI_TRACE_NAME,256);
+ l_errl->collectTrace(FAPI_IMP_TRACE_NAME,256);
+
+ break;
+ }
+
+ //==============================
+ //Load the OCC HOMER image
+ //==============================
+ void* occVirt = reinterpret_cast<void *>(i_homerVirtAddr);
+ l_errl = loadOCCImageToHomer( occVirt );
+ if( l_errl != NULL )
+ {
+ TRACFCOMP(g_fapiImpTd,
+ ERR_MRK"loadOCC: loadOCCImageToHomer failed!");
+ break;
+ }
+ }while(0);
+
+ TRACFCOMP( g_fapiTd,
+ EXIT_MRK"loadOCC");
+
+ return l_errl;
+
+ }
+
+ /**
+ * @brief Start OCC for specified DCM pair of processors.
+ * If 2nd input is NULL, OCC will be setup on just
+ * one target.
+ *
+ * @param[in] i_target0: target of first processor in DCM pair
+ * @param[in] i_target1: target of second processor in DCM pair
+ * @param[out] o_failedTarget failed target in case of an error
+ *
+ * @return errlHndl_t Error log of startOCC failed
+ */
+ errlHndl_t startOCC (Target* i_target0,
+ Target* i_target1,
+ Target *& o_failedTarget)
+ {
+ TRACFCOMP( g_fapiTd,
+ ENTER_MRK"startOCC");
+ errlHndl_t l_errl = NULL;
+
+ // cast OUR type of target to a FAPI type of target.
+ // figure out homer offsets
+ const fapi::Target
+ l_fapiTarg0(fapi::TARGET_TYPE_PROC_CHIP,
+ (const_cast<Target*>(i_target0)));
+ fapi::Target l_fapiTarg1;
+ if(i_target1)
+ {
+ l_fapiTarg1.setType(fapi::TARGET_TYPE_PROC_CHIP);
+ l_fapiTarg1.set(const_cast<Target*>(i_target1));
+ }
+ else
+ {
+ l_fapiTarg1.setType(fapi::TARGET_TYPE_NONE);
+ }
+ do {
+ //==============================
+ // Initialize the logic
+ //==============================
+
+ // Config path
+ // p8_pm_init.C enum: PM_CONFIG
+ FAPI_INVOKE_HWP( l_errl,
+ p8_pm_init,
+ l_fapiTarg0,
+ l_fapiTarg1,
+ PM_CONFIG );
+
+ if ( l_errl != NULL )
+ {
+ o_failedTarget = i_target0;
+ TRACFCOMP( g_fapiImpTd,
+ ERR_MRK"startOCC: p8_pm_init, config failed!");
+ l_errl->collectTrace(FAPI_TRACE_NAME,256);
+ l_errl->collectTrace(FAPI_IMP_TRACE_NAME,256);
+ break;
+ }
+
+ // Init path
+ // p8_pm_init.C enum: PM_INIT
+ FAPI_INVOKE_HWP( l_errl,
+ p8_pm_init,
+ l_fapiTarg0,
+ l_fapiTarg1,
+ PM_INIT );
+
+ if ( l_errl != NULL )
+ {
+ o_failedTarget = i_target0;
+ TRACFCOMP( g_fapiImpTd,
+ ERR_MRK"startOCC: p8_pm_init, init failed!" );
+ l_errl->collectTrace(FAPI_TRACE_NAME,256);
+ l_errl->collectTrace(FAPI_IMP_TRACE_NAME,256);
+
+ break;
+ }
+
+ //==============================
+ //Start the OCC on primary chip of DCM
+ //==============================
+ FAPI_INVOKE_HWP( l_errl,
+ p8_occ_control,
+ l_fapiTarg0,
+ PPC405_RESET_OFF,
+ PPC405_BOOT_MEM );
+
+ if ( l_errl != NULL )
+ {
+ o_failedTarget = i_target0;
+ TRACFCOMP( g_fapiImpTd,
+ ERR_MRK"startOCC: occ_control failed!");
+ l_errl->collectTrace(FAPI_TRACE_NAME,256);
+ l_errl->collectTrace(FAPI_IMP_TRACE_NAME,256);
+
+ break;
+ }
+
+ //==============================
+ // Start the OCC on slave chip of DCM
+ //==============================
+ if ( l_fapiTarg1.getType() != fapi::TARGET_TYPE_NONE )
+ {
+ FAPI_INVOKE_HWP( l_errl,
+ p8_occ_control,
+ l_fapiTarg1,
+ PPC405_RESET_OFF,
+ PPC405_BOOT_MEM );
+
+ if ( l_errl != NULL )
+ {
+ o_failedTarget = i_target1;
+ TRACFCOMP( g_fapiImpTd,
+ ERR_MRK"startOCCocc_control failed on slave chip!");
+ l_errl->collectTrace(FAPI_TRACE_NAME,256);
+ l_errl->collectTrace(FAPI_IMP_TRACE_NAME,256);
+
+ break;
+ }
+ }
+ } while (0);
+
+ TRACFCOMP( g_fapiTd,
+ EXIT_MRK"startOCC");
+ return l_errl;
+ }
+ /**
+ * @brief Stop OCC for specified DCM pair of processors.
+ * If 2nd input is NULL, OCC will be setup on just
+ * one target.
+ *
+ * @param[in] i_target0: target of first processor in DCM pair
+ * @param[in] i_target1: target of second processor in DCM pair
+ *
+ * @return errlHndl_t Error log of stopOCC failed
+ */
+ errlHndl_t stopOCC(TARGETING::Target * i_target0,
+ TARGETING::Target * i_target1)
+ {
+ TRACFCOMP( g_fapiTd,
+ ENTER_MRK"stopOCC");
+ errlHndl_t err = NULL;
+ do
+ {
+ const fapi::Target
+ l_fapiTarg0(fapi::TARGET_TYPE_PROC_CHIP,
+ (const_cast<TARGETING::Target*>(i_target0)));
+
+ fapi::Target l_fapiTarg1;
+ if(i_target1)
+ {
+ l_fapiTarg1.setType(fapi::TARGET_TYPE_PROC_CHIP);
+ l_fapiTarg1.set(const_cast<TARGETING::Target*>(i_target1));
+
+ }
+ else
+ {
+ l_fapiTarg1.setType(fapi::TARGET_TYPE_NONE);
+ }
+
+ FAPI_INVOKE_HWP( err,
+ p8_pm_prep_for_reset,
+ l_fapiTarg0,
+ l_fapiTarg1,
+ PM_RESET );
+
+ if ( err != NULL )
+ {
+ TRACFCOMP( g_fapiTd,
+ ERR_MRK"stopOCC:p8_pm_prep_for_reset failed!" );
+ err->collectTrace(FAPI_TRACE_NAME,256);
+ err->collectTrace(FAPI_IMP_TRACE_NAME,256);
+
+ break;
+ }
+
+ } while(0);
+
+ TRACFCOMP( g_fapiTd,
+ EXIT_MRK"stopOCC");
+ return err;
+ }
+} //end OCC namespace
+
diff --git a/src/usr/hwpf/hwp/occ/runtime/rt_occ.C b/src/usr/hwpf/hwp/occ/runtime/rt_occ.C
index 27160e478..0d5dc806c 100644
--- a/src/usr/hwpf/hwp/occ/runtime/rt_occ.C
+++ b/src/usr/hwpf/hwp/occ/runtime/rt_occ.C
@@ -24,7 +24,9 @@
/* IBM_PROLOG_END_TAG */
#include <runtime/interface.h>
#include <kernel/console.H>
-#include <hwpf/hwp/occ/occ.H>
+
+#include <hwpf/hwp/occ/occ_common.H>
+
#include <vmmconst.h>
#include <sys/misc.h>
#include <errno.h>
@@ -40,8 +42,6 @@
#include <targeting/common/util.H>
#include <runtime/rt_targeting.H>
-#include <runtime/interface.h>
-
// fapi support
#include <fapi.H>
#include <fapiPlatHwpInvoker.H>
@@ -59,11 +59,6 @@ using namespace TARGETING;
extern trace_desc_t* g_fapiTd; // defined in rt_fapiPlatUtil.C
-// @TODO RTC 98547
-// There is potential to share more code with src/hwpf/hwp/occ/occ.C,
-// but would require refactoring the HB occ code and modifying the order and
-// sequence of some events.
-
namespace RT_OCC
{
typedef std::vector<TARGETING::Target *> target_list_t;
@@ -87,30 +82,6 @@ namespace RT_OCC
} while (0);
}
- //---------------------------------------------------------------------
- errlHndl_t addHostData(uint64_t i_hostdata_addr)
- {
- errlHndl_t err = NULL;
- //Treat virtual address as starting pointer
- //for config struct
- HBOCC::occHostConfigDataArea_t * config_data =
- reinterpret_cast<HBOCC::occHostConfigDataArea_t *>
- (i_hostdata_addr);
-
- // Get top level system target
- TARGETING::TargetService & tS = TARGETING::targetService();
- TARGETING::Target * sysTarget = NULL;
- tS.getTopLevelTarget( sysTarget );
- assert( sysTarget != NULL );
-
- uint32_t nestFreq = sysTarget->getAttr<ATTR_FREQ_PB>();
-
- config_data->version = HBOCC::OccHostDataVersion;
- config_data->nestFrequency = nestFreq;
-
- return err;
- }
-
//------------------------------------------------------------------------
int executeLoadOCC(uint64_t i_homer_addr_phys,
@@ -141,106 +112,21 @@ namespace RT_OCC
rc = EINVAL;
break;
}
-
- // Remember where we put things
- proc_target->setAttr<ATTR_HOMER_PHYS_ADDR>(i_homer_addr_phys);
- proc_target->setAttr<ATTR_HOMER_VIRT_ADDR>(i_homer_addr_va);
-
- // Convert to fapi Target
- fapi::Target fapiTarg( fapi::TARGET_TYPE_PROC_CHIP,
- (const_cast<TARGETING::Target*>(proc_target)
- ));
-
- TRACFCOMP( g_fapiTd, "FapiTarget: %s",fapiTarg.toEcmdString());
-
- // BAR0 is the Entire HOMER, Bar size is in MB
- FAPI_INVOKE_HWP( err,
- p8_pba_bar_config,
- fapiTarg,
- 0, //BAR0
- i_homer_addr_phys,
- VMM_HOMER_INSTANCE_SIZE_IN_MB,
- PBA_CMD_SCOPE_NODAL );
-
- if ( err )
- {
- TRACFCOMP( g_fapiTd,
- ERR_MRK"Bar0 config failed!" );
- err->collectTrace(FAPI_TRACE_NAME,256);
- err->collectTrace(FAPI_IMP_TRACE_NAME,256);
-
- break;
- }
-
- // BAR1 is what OCC uses to talk to the Centaur. Bar size is in MB
- uint64_t centaur_addr =
- proc_target->getAttr<ATTR_IBSCOM_PROC_BASE_ADDR>();
-
- FAPI_INVOKE_HWP( err,
- p8_pba_bar_config,
- fapiTarg,
- 1, //BAR1
- centaur_addr, //i_pba_bar_addr
- //i_pba_bar_size
- (uint64_t)HBOCC::OCC_IBSCOM_RANGE_IN_MB,
- PBA_CMD_SCOPE_NODAL ); //i_pba_cmd_scope
-
- if ( err != NULL )
- {
- TRACFCOMP( g_fapiTd,
- ERR_MRK"Bar1 config failed!" );
- err->collectTrace(FAPI_TRACE_NAME,256);
- err->collectTrace(FAPI_IMP_TRACE_NAME,256);
-
- break;
- }
-
- // BAR3 is the OCC Common Area
- // Bar size is in MB, obtained value of 8MB from Tim Hallett
- FAPI_INVOKE_HWP( err,
- p8_pba_bar_config,
- fapiTarg,
- 3, //BAR3
- i_common_addr_phys,
- VMM_OCC_COMMON_SIZE_IN_MB,
- PBA_CMD_SCOPE_NODAL );
-
- if ( err )
- {
- TRACFCOMP( g_fapiTd,
- ERR_MRK"Bar3 config failed!" );
- err->collectTrace(FAPI_TRACE_NAME,256);
- err->collectTrace(FAPI_IMP_TRACE_NAME,256);
-
- break;
- }
-
- // Load HOMER image
- UtilLidMgr lidmgr(Util::OCC_LIDID);
-
- size_t lidSize = 0;
- err = lidmgr.getLidSize(lidSize);
+ err = HBOCC::loadOCC(proc_target,
+ i_homer_addr_phys,
+ i_homer_addr_va,
+ i_common_addr_phys);
if( err )
{
break;
}
- err = lidmgr.getLid(reinterpret_cast<void*>(i_homer_addr_va),
- lidSize);
- if( err )
- {
- break;
- }
-
- TRACFCOMP( g_fapiTd,
- "OCC lid loaded. ID:%x size:%d",
- Util::OCC_LIDID,
- lidSize);
-
- // Setup Host Data area of HOMER
- err = addHostData(i_homer_addr_va+HOMER_OFFSET_TO_OCC_HOST_DATA);
- if( err )
+ void* occHostVirt = reinterpret_cast <void *> (i_homer_addr_va +
+ HOMER_OFFSET_TO_OCC_HOST_DATA);
+ err = HBOCC::loadHostDataToHomer(occHostVirt);
+ if( err != NULL )
{
+ TRACFCOMP( g_fapiImpTd, ERR_MRK"loading Host Data Area failed!" );
break;
}
@@ -269,164 +155,13 @@ namespace RT_OCC
//------------------------------------------------------------------------
- errlHndl_t start_occ(TARGETING::Target * i_target0,
- TARGETING::Target * i_target1)
- {
- errlHndl_t err = NULL;
- do
- {
- const fapi::Target
- l_fapiTarg0(fapi::TARGET_TYPE_PROC_CHIP,
- (const_cast<TARGETING::Target*>(i_target0)));
-
- fapi::Target l_fapiTarg1;
- if(i_target1)
- {
- l_fapiTarg1.setType(fapi::TARGET_TYPE_PROC_CHIP);
- l_fapiTarg1.set(const_cast<TARGETING::Target*>(i_target1));
-
- }
- else
- {
- l_fapiTarg1.setType(fapi::TARGET_TYPE_NONE);
- }
-
- FAPI_INVOKE_HWP( err,
- p8_pm_init,
- l_fapiTarg0,
- l_fapiTarg1,
- PM_CONFIG );
-
- if ( err != NULL )
- {
- TRACFCOMP( g_fapiTd,
- ERR_MRK"p8_pm_init, config failed!" );
- err->collectTrace(FAPI_TRACE_NAME,256);
- err->collectTrace(FAPI_IMP_TRACE_NAME,256);
-
- break;
- }
-
- // Init path
- // p8_pm_init.C enum: PM_INIT
- FAPI_INVOKE_HWP( err,
- p8_pm_init,
- l_fapiTarg0,
- l_fapiTarg1,
- PM_INIT );
-
- if ( err != NULL )
- {
- TRACFCOMP( g_fapiTd,
- ERR_MRK"p8_pm_init, init failed!" );
- err->collectTrace(FAPI_TRACE_NAME,256);
- err->collectTrace(FAPI_IMP_TRACE_NAME,256);
-
- break;
- }
- TRACFCOMP( g_fapiTd,
- INFO_MRK"OCC Finished: p8_pm_init.C enum: PM_INIT" );
-
-
- //==============================
- //Start the OCC on primary chip of DCM
- //==============================
- FAPI_INVOKE_HWP( err,
- p8_occ_control,
- l_fapiTarg0,
- PPC405_RESET_OFF,
- PPC405_BOOT_MEM );
-
- if ( err != NULL )
- {
- TRACFCOMP( g_fapiTd,
- ERR_MRK"occ_control failed!" );
- err->collectTrace(FAPI_TRACE_NAME,256);
- err->collectTrace(FAPI_IMP_TRACE_NAME,256);
-
- break;
- }
-
- //==============================
- // Start the OCC on slave chip of DCM
- //==============================
- if ( l_fapiTarg1.getType() != fapi::TARGET_TYPE_NONE )
- {
- FAPI_INVOKE_HWP( err,
- p8_occ_control,
- l_fapiTarg1,
- PPC405_RESET_OFF,
- PPC405_BOOT_MEM );
-
- if ( err != NULL )
- {
- TRACFCOMP( g_fapiTd,
- ERR_MRK"occ_control failed!" );
- err->collectTrace(FAPI_TRACE_NAME,256);
- err->collectTrace(FAPI_IMP_TRACE_NAME,256);
-
- break;
- }
- }
- } while(0);
-
- return err;
- }
-
- //------------------------------------------------------------------------
-
- errlHndl_t stop_occ(TARGETING::Target * i_target0,
- TARGETING::Target * i_target1)
- {
- errlHndl_t err = NULL;
- do
- {
- const fapi::Target
- l_fapiTarg0(fapi::TARGET_TYPE_PROC_CHIP,
- (const_cast<TARGETING::Target*>(i_target0)));
-
- fapi::Target l_fapiTarg1;
- if(i_target1)
- {
- l_fapiTarg1.setType(fapi::TARGET_TYPE_PROC_CHIP);
- l_fapiTarg1.set(const_cast<TARGETING::Target*>(i_target1));
-
- }
- else
- {
- l_fapiTarg1.setType(fapi::TARGET_TYPE_NONE);
- }
-
- FAPI_INVOKE_HWP( err,
- p8_pm_prep_for_reset,
- l_fapiTarg0,
- l_fapiTarg1,
- PM_RESET );
-
- if ( err != NULL )
- {
- TRACFCOMP( g_fapiTd,
- ERR_MRK"p8_pm_prep_for_reset failed!" );
- err->collectTrace(FAPI_TRACE_NAME,256);
- err->collectTrace(FAPI_IMP_TRACE_NAME,256);
-
- break;
- }
-
- } while(0);
-
- return err;
- }
-
- //------------------------------------------------------------------------
-
int executeOnDcms(HBOCC::occAction_t i_action,
uint64_t * i_proc_chip,
size_t i_num_chips)
{
errlHndl_t err = NULL;
int rc = 0;
-
+ TARGETING::Target* l_failedTarget = NULL;
TRACFCOMP( g_fapiTd,
"Action=%d, number of procs = %d ",
i_action,
@@ -475,11 +210,11 @@ namespace RT_OCC
{
if(i_action == HBOCC::OCC_START)
{
- err = start_occ(*itarg, NULL);
+ err = HBOCC::startOCC(*itarg, NULL, l_failedTarget);
}
else if(i_action == HBOCC::OCC_STOP)
{
- err = stop_occ(*itarg, NULL);
+ err = HBOCC::stopOCC(*itarg, NULL);
}
if( err )
@@ -536,11 +271,11 @@ namespace RT_OCC
}
if(i_action == HBOCC::OCC_START)
{
- err = start_occ(t0,t1);
+ err = HBOCC::startOCC(t0,t1, l_failedTarget);
}
else if(i_action == HBOCC::OCC_STOP)
{
- err = stop_occ(t0,t1);
+ err = HBOCC::stopOCC(t0,t1);
}
if( err )
diff --git a/src/usr/hwpf/hwp/start_payload/start_payload.C b/src/usr/hwpf/hwp/start_payload/start_payload.C
index 920edcc0b..2c90b1c7b 100644
--- a/src/usr/hwpf/hwp/start_payload/start_payload.C
+++ b/src/usr/hwpf/hwp/start_payload/start_payload.C
@@ -327,7 +327,6 @@ void* call_host_runtime_setup( void *io_pArgs )
break;
}
}
-
#ifdef CONFIG_SET_NOMINAL_PSTATE
// Speed up processors.
l_err = setMaxPstate();
diff --git a/src/usr/hwpf/test/runtime/rt_occtest.H b/src/usr/hwpf/test/runtime/rt_occtest.H
index 33a189d10..907e82f48 100644
--- a/src/usr/hwpf/test/runtime/rt_occtest.H
+++ b/src/usr/hwpf/test/runtime/rt_occtest.H
@@ -27,7 +27,7 @@
#include <cxxtest/TestSuite.H>
#include <runtime/interface.h>
-#include <hwpf/hwp/occ/occ.H>
+#include <hwpf/hwp/occ/occ_common.H>
#include <fapi.H>
#include <targeting/common/commontargeting.H>
#include <vmmconst.h>
diff --git a/src/usr/util/runtime/utillidmgr_rt.C b/src/usr/util/runtime/utillidmgr_rt.C
index 51d1d371c..3b87d4879 100644
--- a/src/usr/util/runtime/utillidmgr_rt.C
+++ b/src/usr/util/runtime/utillidmgr_rt.C
@@ -30,7 +30,7 @@
#include <errl/errlmanager.H>
#include <vfs/vfs.H>
#include <runtime/interface.h>
-#include <hwpf/hwp/occ/occ.H>
+#include <hwpf/hwp/occ/occ_common.H>
UtilLidMgr::UtilLidMgr(uint32_t i_lidId) :
iv_isPnor(false), iv_lidBuffer(NULL), iv_lidSize(0)
OpenPOWER on IntegriCloud