diff options
-rw-r--r-- | src/include/usr/hwpf/istepreasoncodes.H | 1 | ||||
-rw-r--r-- | src/usr/hwpf/hwp/sbe_centaur_init/sbe_centaur_init.C | 60 | ||||
-rw-r--r-- | src/usr/pore/makefile | 2 | ||||
-rw-r--r-- | src/usr/pore/poreve/porevesrc/pib2cfam.C | 7 | ||||
-rw-r--r-- | src/usr/pore/poreve/porevesrc/pib2cfam.H | 9 |
5 files changed, 69 insertions, 10 deletions
diff --git a/src/include/usr/hwpf/istepreasoncodes.H b/src/include/usr/hwpf/istepreasoncodes.H index dc36f7e94..bc8e11af8 100644 --- a/src/include/usr/hwpf/istepreasoncodes.H +++ b/src/include/usr/hwpf/istepreasoncodes.H @@ -179,6 +179,7 @@ enum istepReasonCode ISTEP_TOP_LEVEL_TARGET_NULL = ISTEP_COMP_ID | 0x30, ISTEP_DECONFIGURE_MBA_FAILED = ISTEP_COMP_ID | 0x31, ISTEP_DECONFIGURE_L4_FAILED = ISTEP_COMP_ID | 0x32, + ISTEP_REPAIR_LOADER_RETRY_OCCURED = ISTEP_COMP_ID | 0x33, }; // end ISTEP } 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 a53edab9a..c509a9258 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 @@ -58,11 +58,15 @@ extern fapi::ReturnCode fapiPoreVe(const fapi::Target i_target, std::list<uint64_t> & io_sharedObjectArgs); +const uint64_t REPAIR_LOADER_RETRY_CTR_MASK = 0x000007FC00000000ull; // Constants // Memory Relocation Register for Centaur SBE image const uint64_t CENTAUR_SBE_PNOR_MRR = 0; +// Max SBE image buffer size +const uint32_t MAX_SBE_IMG_SIZE = 48 * 1024; + namespace SBE_CENTAUR_INIT { @@ -154,9 +158,11 @@ void* call_sbe_centaur_init( void *io_pArgs ) const fapi::Target l_fapiTarget( fapi::TARGET_TYPE_MEMBUF_CHIP, (const_cast<TARGETING::Target*>(l_membuf_target))); - const uint32_t l_customizedMaxSize = 32 * 1024; - const uint32_t l_buf1Size = 32 * 1024; - const uint32_t l_buf2Size = 32 * 1024; + // Expand buffer for new image size + const uint32_t l_customizedMaxSize = MAX_SBE_IMG_SIZE; + const uint32_t l_buf1Size = MAX_SBE_IMG_SIZE; + const uint32_t l_buf2Size = MAX_SBE_IMG_SIZE; + uint32_t l_customizedSize = l_customizedMaxSize; char * l_pCustomizedImage = (char *)malloc(l_customizedMaxSize); void * l_pBuf1 = malloc(l_buf1Size); @@ -227,6 +233,54 @@ void* call_sbe_centaur_init( void *io_pArgs ) "ERROR 0x%.8X call_sbe_centaur_init - Error returned from" " VSBE engine on this Centaur, l_rc 0x%llX", l_errl->reasonCode()); + l_errl->collectTrace(FAPI_IMP_TRACE_NAME, 1024); + l_errl->collectTrace("ISTEPS_TRACE", 512); + } + + // Log informational error if we retried the Repair Loader + errlHndl_t l_tempErrl = NULL; + ecmdDataBufferBase l_dataBuffer(64); + fapi::ReturnCode l_rc = fapiGetScom(l_fapiTarget, 0x0104000A, + l_dataBuffer); + if (!l_rc.ok()) + { + FAPI_ERR("ERROR in call_sbe_centaur_init - target %.8X " + "Scom error reading Repair Loader retry counter 0x0104000A", + TARGETING::get_huid(l_membuf_target)); + l_tempErrl = fapi::fapiRcToErrl(l_rc); + l_tempErrl->setSev(ERRL_SEV_INFORMATIONAL); + errlCommit( l_tempErrl, HWPF_COMP_ID ); + } + else + { + // If the counter !=0, log an informational error + uint64_t l_counter = l_dataBuffer.getDoubleWord(0); + FAPI_INF("Target 0x%.8X - RepairLoader Reg_0x0104000A %.16llX", + TARGETING::get_huid(l_membuf_target), l_counter); + + if (l_counter & REPAIR_LOADER_RETRY_CTR_MASK) + { + FAPI_ERR("ERROR in call_sbe_centaur_init - target %.8X " + "Repair Loader retry occured, " + "RepairLoader Reg_0x0104000A %.16llX", + TARGETING::get_huid(l_membuf_target), l_counter); + + /*@ + * @errortype + * @moduleid ISTEP_SBE_CENTAUR_INIT + * @reasoncode ISTEP_REPAIR_LOADER_RETRY_OCCURED + * @userdata1 Register 0x0104000A + * @userdata2 Membuf target + * @devdesc Repair Loader error, retry was performed + */ + l_tempErrl = new ERRORLOG::ErrlEntry( + ERRORLOG::ERRL_SEV_INFORMATIONAL, + ISTEP_SBE_CENTAUR_INIT, + ISTEP_REPAIR_LOADER_RETRY_OCCURED, + l_counter, + TARGETING::get_huid(l_membuf_target)); + errlCommit( l_tempErrl, HWPF_COMP_ID ); + } } } diff --git a/src/usr/pore/makefile b/src/usr/pore/makefile index 3f4a10460..35a9b805f 100644 --- a/src/usr/pore/makefile +++ b/src/usr/pore/makefile @@ -23,5 +23,5 @@ ROOTPATH = ../../.. SUBDIRS = fapiporeve.d poreve.d test.d -BINARY_FILES = $(IMGDIR)/centaur.sbe_pnor.bin:08498a624168c7b2aecb423fca8bd2361ec5e9e2 +BINARY_FILES = $(IMGDIR)/centaur.sbe_pnor.bin:97621f98ecec1ee446086712534755998fc59ee5 include ${ROOTPATH}/config.mk diff --git a/src/usr/pore/poreve/porevesrc/pib2cfam.C b/src/usr/pore/poreve/porevesrc/pib2cfam.C index 689c456b7..3c9171ccf 100644 --- a/src/usr/pore/poreve/porevesrc/pib2cfam.C +++ b/src/usr/pore/poreve/porevesrc/pib2cfam.C @@ -21,7 +21,7 @@ /* */ /* IBM_PROLOG_END_TAG */ // -*- mode: C++; c-file-style: "linux"; -*- -// $Id: pib2cfam.C,v 1.14 2013/01/11 15:54:22 thi Exp $ +// $Id: pib2cfam.C,v 1.15 2013/06/24 14:51:53 jeshua Exp $ /// \file pib2cfam.C /// \brief A simple PibSlave that maps a small range of PIB addresses to CFAM @@ -79,7 +79,8 @@ Pib2Cfam::operation(Transaction& io_transaction) case ACCESS_MODE_READ: switch (io_transaction.iv_address) { - case 0x00050007: + case 0x00050006: + case 0x00050007: case 0x00050012: case 0x00050013: case 0x00050014: @@ -110,6 +111,8 @@ Pib2Cfam::operation(Transaction& io_transaction) switch (io_transaction.iv_address) { + case 0x00050006: + case 0x00050007: case 0x00050012: case 0x00050013: case 0x00050014: diff --git a/src/usr/pore/poreve/porevesrc/pib2cfam.H b/src/usr/pore/poreve/porevesrc/pib2cfam.H index 2220323c8..0f55cc4c9 100644 --- a/src/usr/pore/poreve/porevesrc/pib2cfam.H +++ b/src/usr/pore/poreve/porevesrc/pib2cfam.H @@ -23,7 +23,7 @@ #ifndef __VSBE_PIB2CFAM_H #define __VSBE_PIB2CFAM_H -// $Id: pib2cfam.H,v 1.4 2013/01/11 15:53:49 thi Exp $ +// $Id: pib2cfam.H,v 1.6 2013/07/30 15:15:30 jeshua Exp $ /// \file pib2cfam.H /// \brief A temporary hack while waiting for hardware updates - a simple @@ -36,10 +36,10 @@ namespace vsbe { class Pib2Cfam; /// PIB base address of PIB range mapped by Pib2Cfam - const uint32_t PIB2CFAM_PIB_BASE = 0x00050007; + const uint32_t PIB2CFAM_PIB_BASE = 0x00050006; /// Number of PIB addresses mapped by Pib2Cfam - const int PIB2CFAM_PIB_SIZE = ((0x0005001b - 0x00050007) + 1); + const int PIB2CFAM_PIB_SIZE = ((0x0005001b - 0x00050006) + 1); } @@ -69,7 +69,8 @@ public: /// /// The following PIB registers are mapped to CFAM registers: /// - /// - PIB 0x00050007 -> CFAM 0x1007, FSI2PIB.STATUS, R + /// - PIB 0x00050006 -> CFAM 0x1006, FSI2PIB Reset, W + /// - PIB 0x00050007 -> CFAM 0x1007, FSI2PIB STATUS (R), PIB RESET (W) /// - PIB 0x00050012 -> CFAM 0x1012, FSIGP3, R/W /// - PIB 0x00050013 -> CFAM 0x1013, FSIGP4, R/W /// - PIB 0x00050014 -> CFAM 0x1014, FSIGP5, R/W |