summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/usr/hwpf/istepreasoncodes.H1
-rw-r--r--src/include/usr/isteps/istep10list.H1
-rw-r--r--src/makefile7
-rw-r--r--src/usr/hwpf/hwp/sbe_centaur_init/sbe_centaur_init.C116
-rw-r--r--src/usr/pore/makefile1
5 files changed, 49 insertions, 77 deletions
diff --git a/src/include/usr/hwpf/istepreasoncodes.H b/src/include/usr/hwpf/istepreasoncodes.H
index 302c1f403..bb12510a7 100644
--- a/src/include/usr/hwpf/istepreasoncodes.H
+++ b/src/include/usr/hwpf/istepreasoncodes.H
@@ -196,6 +196,7 @@ enum istepReasonCode
ISTEP_FABRIC_PRE_TRAINADV_ENDPOINT2_FAILED = ISTEP_COMP_ID | 0x3A,
ISTEP_FABRIC_POST_TRAINADV_ENDPOINT1_FAILED = ISTEP_COMP_ID | 0x3B,
ISTEP_FABRIC_POST_TRAINADV_ENDPOINT2_FAILED = ISTEP_COMP_ID | 0x3C,
+ ISTEP_SBE_PNOR_CENTAUR_FAILED = ISTEP_COMP_ID | 0x3D,
}; // end ISTEP
}
diff --git a/src/include/usr/isteps/istep10list.H b/src/include/usr/isteps/istep10list.H
index 2fda19081..f284e0cf9 100644
--- a/src/include/usr/isteps/istep10list.H
+++ b/src/include/usr/isteps/istep10list.H
@@ -238,6 +238,7 @@ const DepModInfo g_istep10Dependancies = {
DEP_LIB(libfapiporeve.so),
DEP_LIB(libporeve.so),
DEP_LIB(libbuild_winkle_images.so),
+ DEP_LIB(libsbe.so),
{ 0 },
}
};
diff --git a/src/makefile b/src/makefile
index 5235f1fc2..8e803d4ba 100644
--- a/src/makefile
+++ b/src/makefile
@@ -87,15 +87,10 @@ hbicore_EXTENDED_MODULES = ${EXTENDED_MODULES}
# for PRDR_RULE_TABLE_TARGETS
include ${ROOTPATH}/src/usr/diag/prdf/common/prd_ruletable.mk
-#@todo - Temporary workaround
-# The centaur.sbe_pnor.bin is manually built from CVS SBE procedure files in
-# CVS then copy into HostBoot for now.
-# HostBoot build team will have a process of building centaur.sbe_pnor.bin
-# image later.
hbicore_DATA_MODULES = sample.if p8.dmi.scom.if cen.dmi.scom.if \
p8.fbc.scom.if mbs_def.if mba_def.if cen_ddrphy.if \
p8.pe.phase1.scom.if p8.pe.phase2.scom.if \
- centaur.sbe_pnor.bin ${PRDR_RULE_TABLE_TARGETS} \
+ ${PRDR_RULE_TABLE_TARGETS} \
p8.abus.scom.if p8.xbus.scom.if p8.mcs.scom.if \
p8.as.scom.if p8.nx.scom.if p8.dmi.custom.scom.if \
cen.dmi.custom.scom.if p8.abus.custom.scom.if \
diff --git a/src/usr/hwpf/hwp/sbe_centaur_init/sbe_centaur_init.C b/src/usr/hwpf/hwp/sbe_centaur_init/sbe_centaur_init.C
index 1bf3e339c..7f8a0e8eb 100644
--- a/src/usr/hwpf/hwp/sbe_centaur_init/sbe_centaur_init.C
+++ b/src/usr/hwpf/hwp/sbe_centaur_init/sbe_centaur_init.C
@@ -92,80 +92,74 @@ void* call_sbe_centaur_init( void *io_pArgs )
TARGETING::TargetHandleList l_membufTargetList;
getAllChips(l_membufTargetList, TYPE_MEMBUF);
- bool l_unloadSbePnorImg = false;
size_t l_sbePnorSize = 0;
- const char * l_sbePnorAddr = NULL;
+ void* l_sbePnorAddr = NULL;
errlHndl_t l_errl = NULL;
IStepError l_StepError;
- // ----------------------- Setup sbe_pnor stuff --------------------
-
- if (l_membufTargetList.size())
- {
- // Loading image
- l_errl = VFS::module_load("centaur.sbe_pnor.bin");
- if (l_errl)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X call_sbe_centaur_init - "
- "VFS::module_load(centaur.sbe_pnor.bin) returns error",
- l_errl->reasonCode());
- }
- else
- {
- // Set flag to unload
- l_unloadSbePnorImg = true;
- l_errl = VFS::module_address("centaur.sbe_pnor.bin",
- l_sbePnorAddr, l_sbePnorSize);
- if(l_errl)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X call_sbe_centaur_init - "
- "VFS::module_address(centaur.sbe_pnor.bin) return error",
- l_errl->reasonCode());
- }
- else
- {
- char l_header[10];
- memcpy (l_header, l_sbePnorAddr, 9);
- l_header[9] = '\0';
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "call_sbe_centaur_init - Loading "
- "centaur.sbe_pnor.bin, Addr 0x%llX, Size %d, Header %s",
- l_sbePnorAddr, l_sbePnorSize, l_header);
- }
- }
- }
-
// Loop thru all Centaurs in list
for (TargetHandleList::const_iterator
l_membuf_iter = l_membufTargetList.begin();
l_membuf_iter != l_membufTargetList.end();
++l_membuf_iter)
{
-/*
//find SBE image in PNOR
- // @todo RTC 77647
- // Will use SBE::findSBEInPnor() function rather than
- // VFS::module_load/address() function calls above
+ TARGETING::Target* l_membuf_target = *l_membuf_iter;
+
+ uint8_t cur_ec = (*l_membuf_iter)->getAttr<TARGETING::ATTR_EC>();
-*/
- // Make sure we have successfully retrieved the reference image
+ TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, INFO_MRK"call_sbe_centaur_init() - Find SBE image in PNOR");
+
+ l_errl = SBE::findSBEInPnor(l_membuf_target,
+ l_sbePnorAddr,
+ l_sbePnorSize,
+ NULL);
if (l_errl)
{
- l_StepError.addErrorDetails(ISTEP_SBE_CENTAUR_INIT_FAILED,
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, ERR_MRK"call_sbe_centaur_init() - Error getting image from PNOR. ec=0x%.2X",
+ cur_ec );
+
+ TRACFBIN(ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_sbe_centaur_init - l_sbePnorAddr",l_sbePnorAddr,400);
+
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_membuf_target).addToLog( l_errl );
+
+ /*@
+ * @errortype
+ * @reasoncode ISTEP_SBE_PNOR_CENTAUR_FAILED
+ * @severity ERRORLOG::ERRL_SEV_UNRECOVERABLE
+ * @moduleid ISTEP_SBE_CENTAUR_INIT
+ * @userdata1 bytes 0-1: plid identifying first error
+ * bytes 2-3: reason code of first error
+ * @userdata2 bytes 0-1: total number of elogs included
+ * bytes 2-3: N/A
+ * @devdesc call to find the centaur sbe image in pnor
+ * in the sbe_centaur_init function to initialize
+ * the centuars has failed
+ */
+ l_StepError.addErrorDetails(ISTEP_SBE_PNOR_CENTAUR_FAILED,
ISTEP_SBE_CENTAUR_INIT,
l_errl);
+
errlCommit( l_errl, HWPF_COMP_ID );
break;
}
-
+
+ char l_header[10];
+ memcpy (l_header, l_sbePnorAddr, 9);
+ l_header[9] = '\0';
+
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "call_sbe_centaur_init - Loading "
+ "centaur sbe from pnor, Addr 0x%llX, Size %d, Header %s",
+ l_sbePnorAddr, l_sbePnorSize, l_header);
+
// Create a FAPI Target
- TARGETING::Target* l_membuf_target = *l_membuf_iter;
const fapi::Target l_fapiTarget( fapi::TARGET_TYPE_MEMBUF_CHIP,
- l_membuf_target);
+ (const_cast<TARGETING::Target*>(l_membuf_target)));
// Expand buffer for new image size
const uint32_t l_customizedMaxSize = MAX_SBE_IMG_SIZE;
@@ -214,7 +208,7 @@ void* call_sbe_centaur_init( void *io_pArgs )
FAPI_INVOKE_HWP( l_errl, cen_xip_customize,
- l_fapiTarget, (void *)l_sbePnorAddr,
+ l_fapiTarget, l_sbePnorAddr,
l_pCustomizedImage, l_customizedSize,
l_pBuf1, l_buf1Size,
l_pBuf2, l_buf2Size );
@@ -334,24 +328,6 @@ void* call_sbe_centaur_init( void *io_pArgs )
} // end for
- // Unload image
- if (l_unloadSbePnorImg == true)
- {
- l_errl = VFS::module_unload("centaur.sbe_pnor.bin");
-
- if (l_errl)
- {
- FAPI_ERR("ERROR 0x%.8X call_sbe_centaur_init - "
- "Error unloading centaur.sbe_pnor.bin",
- l_errl->reasonCode());
-
- l_StepError.addErrorDetails(ISTEP_SBE_CENTAUR_INIT_FAILED,
- ISTEP_SBE_CENTAUR_INIT,
- l_errl);
-
- errlCommit( l_errl, HWPF_COMP_ID );
- }
- }
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"call_sbe_centaur_init exit" );
diff --git a/src/usr/pore/makefile b/src/usr/pore/makefile
index c4d005fe7..c863fbee8 100644
--- a/src/usr/pore/makefile
+++ b/src/usr/pore/makefile
@@ -23,5 +23,4 @@
ROOTPATH = ../../..
SUBDIRS = fapiporeve.d poreve.d test.d
-BINARY_FILES = $(IMGDIR)/centaur.sbe_pnor.bin:9af259aad9e1984fd96c8e364ab74de8ac9b4de5
include ${ROOTPATH}/config.mk
OpenPOWER on IntegriCloud