diff options
author | Mike Jones <mjjones@us.ibm.com> | 2014-01-27 15:33:09 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-02-14 12:41:36 -0600 |
commit | 10a93afdbdd5bccc9a10b797d66b008580ba16bb (patch) | |
tree | caddb050384fe2eb4cd8844c59a28d9ea9e8b7c0 /src/usr/hwpf | |
parent | 5850220077f29041920e83de66ec458dac9c82a7 (diff) | |
download | blackbird-hostboot-10a93afdbdd5bccc9a10b797d66b008580ba16bb.tar.gz blackbird-hostboot-10a93afdbdd5bccc9a10b797d66b008580ba16bb.zip |
Hostboot Serviceability Review Part 2
Resolving TODOs and ensuring error logs have correct callouts
Change-Id: Ic2e65427487fb91553ffe4ed6e3ed922004963ba
RTC: 92837
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/8374
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf')
21 files changed, 279 insertions, 163 deletions
diff --git a/src/usr/hwpf/fapi/fapiReturnCode.C b/src/usr/hwpf/fapi/fapiReturnCode.C index 0b5312379..a40f02b9f 100644 --- a/src/usr/hwpf/fapi/fapiReturnCode.C +++ b/src/usr/hwpf/fapi/fapiReturnCode.C @@ -46,6 +46,7 @@ * mjjones 02/22/2012 Allow user to add Target FFDC * mjjones 03/16/2012 Add type to FFDC data * mjjones 03/16/2012 Allow different PLAT errors + * mjjones 04/20/2012 Remove deprecated int assign * mjjones 05/02/2012 Only trace setEcmdError on err * mjjones 07/11/2012 Remove a trace * brianh 07/31/2012 performance/size optimizations @@ -62,6 +63,7 @@ #include <fapiPlatTrace.H> #include <fapiTarget.H> #include <fapiUtil.H> +#include <fapiErrorInfo.H> namespace fapi { @@ -127,19 +129,6 @@ ReturnCode & ReturnCode::operator=(const ReturnCode & i_right) } //****************************************************************************** -// Assignment Operator -//****************************************************************************** -ReturnCode & ReturnCode::operator=(const uint32_t i_rcValue) -{ - iv_rcValue = i_rcValue; - - // Forget about any associated data - forgetData(); - - return *this; -} - -//****************************************************************************** // setFapiError function //****************************************************************************** void ReturnCode::setFapiError(const ReturnCodes i_rcValue) @@ -149,6 +138,9 @@ void ReturnCode::setFapiError(const ReturnCodes i_rcValue) // Forget about any associated data (this is a new error) forgetData(); + + // Errors generated by FAPI code are a small set, all are firmware issues + addEIProcedureCallout(ProcedureCallouts::CODE, CalloutPriorities::HIGH); } //****************************************************************************** @@ -167,6 +159,9 @@ void ReturnCode::setEcmdError(const uint32_t i_rcValue) // Forget about any associated data (this is a new error) forgetData(); + + // Callout firmware + addEIProcedureCallout(ProcedureCallouts::CODE, CalloutPriorities::HIGH); } //****************************************************************************** diff --git a/src/usr/hwpf/hwp/mvpd_accessors/accessMBvpdL4BankDelete.C b/src/usr/hwpf/hwp/mvpd_accessors/accessMBvpdL4BankDelete.C index cb2ade3ee..f7da89caa 100644 --- a/src/usr/hwpf/hwp/mvpd_accessors/accessMBvpdL4BankDelete.C +++ b/src/usr/hwpf/hwp/mvpd_accessors/accessMBvpdL4BankDelete.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2013 */ +/* COPYRIGHT International Business Machines Corp. 2013,2014 */ /* */ /* p1 */ /* */ @@ -20,7 +20,7 @@ /* Origin: 30 */ /* */ /* IBM_PROLOG_END_TAG */ -// $Id: accessMBvpdL4BankDelete.C,v 1.2 2013/11/21 17:17:59 whs Exp $ +// $Id: accessMBvpdL4BankDelete.C,v 1.3 2014/02/12 22:11:26 mjjones Exp $ /** * @file accessMBvpdL4BankDelete.C * @@ -74,6 +74,7 @@ fapi::ReturnCode accessMBvpdL4BankDelete( l_bufSize, sizeof(l_l4BankDelete)); const uint32_t & KEYWORD = sizeof(l_l4BankDelete); const uint32_t & RETURNED_SIZE = l_bufSize; + const fapi::Target & CHIP_TARGET = i_mbTarget; FAPI_SET_HWP_ERROR(l_fapirc,RC_MBVPD_INSUFFICIENT_VPD_RETURNED); break; // break out with fapirc } diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAddrMirrorData.C b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAddrMirrorData.C index 6d4d3b2cd..571692f69 100644 --- a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAddrMirrorData.C +++ b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAddrMirrorData.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2013 */ +/* COPYRIGHT International Business Machines Corp. 2013,2014 */ /* */ /* p1 */ /* */ @@ -20,7 +20,7 @@ /* Origin: 30 */ /* */ /* IBM_PROLOG_END_TAG */ -// $Id: getMBvpdAddrMirrorData.C,v 1.2 2013/07/18 15:33:35 whs Exp $ +// $Id: getMBvpdAddrMirrorData.C,v 1.4 2014/02/12 22:11:32 mjjones Exp $ /** * @file getMBvpdAddrMirrorData.C * @@ -116,6 +116,7 @@ fapi::ReturnCode getMBvpdAddrMirrorData( l_MaBufsize, AM_KEYWORD_SIZE); const uint32_t & KEYWORD = fapi::MBVPD_KEYWORD_AM; const uint32_t & RETURNED_SIZE = l_MaBufsize; + const fapi::Target & CHIP_TARGET = l_mbTarget; FAPI_SET_HWP_ERROR(l_fapirc, RC_MBVPD_INSUFFICIENT_VPD_RETURNED ); break; // break out with fapirc } diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdDram2NModeEnabled.C b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdDram2NModeEnabled.C index b5140e2e0..0386bb203 100644 --- a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdDram2NModeEnabled.C +++ b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdDram2NModeEnabled.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2013 */ +/* COPYRIGHT International Business Machines Corp. 2013,2014 */ /* */ /* p1 */ /* */ @@ -20,7 +20,7 @@ /* Origin: 30 */ /* */ /* IBM_PROLOG_END_TAG */ -// $Id: getMBvpdDram2NModeEnabled.C,v 1.2 2013/10/31 18:06:17 whs Exp $ +// $Id: getMBvpdDram2NModeEnabled.C,v 1.3 2014/02/12 22:11:39 mjjones Exp $ /** * @file getMBvpdDram2NModeEnabled.C * @@ -69,6 +69,7 @@ fapi::ReturnCode getMBvpdDram2NModeEnabled( l_dram2NMode[0],l_dram2NMode[1]); const uint32_t & PORT0 = l_dram2NMode[0]; const uint32_t & PORT1 = l_dram2NMode[1]; + const fapi::Target & MBA_TARGET = i_mbaTarget; FAPI_SET_HWP_ERROR(l_fapirc,RC_MBVPD_DRAM_2N_MODE_NOT_EQUAL); break; // break out with fapirc } diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdPhaseRotatorData.C b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdPhaseRotatorData.C index 34cbbe774..d7d26700c 100644 --- a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdPhaseRotatorData.C +++ b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdPhaseRotatorData.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2014 */ +/* COPYRIGHT International Business Machines Corp. 2013,2014 */ /* */ /* p1 */ /* */ @@ -20,7 +20,7 @@ /* Origin: 30 */ /* */ /* IBM_PROLOG_END_TAG */ -// $Id: getMBvpdPhaseRotatorData.C,v 1.7 2014/01/11 13:35:43 whs Exp $ +// $Id: getMBvpdPhaseRotatorData.C,v 1.8 2014/02/12 22:11:46 mjjones Exp $ /** * @file getMBvpdPhaseRotatorData.C * @@ -163,6 +163,7 @@ fapi::ReturnCode getMBvpdPhaseRotatorData( l_MrBufsize, MR_KEYWORD_SIZE); const uint32_t & KEYWORD = fapi::MBVPD_KEYWORD_MR; const uint32_t & RETURNED_SIZE = l_MrBufsize; + const fapi::Target & CHIP_TARGET = l_mbTarget; FAPI_SET_HWP_ERROR(l_fapirc, RC_MBVPD_INSUFFICIENT_VPD_RETURNED ); break; // break out with fapirc } diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdSensorMap.C b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdSensorMap.C index 37d20d311..a455b0970 100644 --- a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdSensorMap.C +++ b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdSensorMap.C @@ -1,11 +1,11 @@ /* IBM_PROLOG_BEGIN_TAG */ /* This is an automatically generated prolog. */ /* */ -/* $Source: src/usr/hwpf/hwp/mvpd_accessors/getMBvpdSensorMap.C $ */ +/* $Source: src/usr/hwpf/hwp/mvpd_accessors/getMBvpdSensorMap.C $ */ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2013 */ +/* COPYRIGHT International Business Machines Corp. 2013,2014 */ /* */ /* p1 */ /* */ @@ -20,7 +20,7 @@ /* Origin: 30 */ /* */ /* IBM_PROLOG_END_TAG */ -// $Id: getMBvpdSensorMap.C,v 1.1 2013/11/20 22:37:38 whs Exp $ +// $Id: getMBvpdSensorMap.C,v 1.2 2014/02/12 22:11:52 mjjones Exp $ /** * @file getMBvpdSensorMap.C @@ -92,6 +92,7 @@ fapi::ReturnCode getMBvpdSensorMap( l_MwBufsize, MW_KEYWORD_SIZE); const uint32_t & KEYWORD = fapi::MBVPD_KEYWORD_MW; const uint32_t & RETURNED_SIZE = l_MwBufsize; + const fapi::Target & CHIP_TARGET = i_mbTarget; FAPI_SET_HWP_ERROR(l_fapirc, RC_MBVPD_INSUFFICIENT_VPD_RETURNED ); break; // break out with fapirc } diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdSlopeInterceptData.C b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdSlopeInterceptData.C index f2b2e06ef..bd30909ed 100644 --- a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdSlopeInterceptData.C +++ b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdSlopeInterceptData.C @@ -1,11 +1,11 @@ /* IBM_PROLOG_BEGIN_TAG */ /* This is an automatically generated prolog. */ /* */ -/* $Source: src/usr/hwpf/hwp/mvpd_accessors/getMBvpdSlopeInterceptData.C $ */ +/* $Source: src/usr/hwpf/hwp/mvpd_accessors/getMBvpdSlopeInterceptData.C $ */ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2013 */ +/* COPYRIGHT International Business Machines Corp. 2013,2014 */ /* */ /* p1 */ /* */ @@ -20,7 +20,7 @@ /* Origin: 30 */ /* */ /* IBM_PROLOG_END_TAG */ -// $Id: getMBvpdSlopeInterceptData.C,v 1.3 2013/11/22 22:14:11 whs Exp $ +// $Id: getMBvpdSlopeInterceptData.C,v 1.4 2014/02/12 22:12:00 mjjones Exp $ /** * @file getMBvpdSlopeInterceptData.C * @@ -148,6 +148,7 @@ fapi::ReturnCode getMBvpdMasterData( l_MwBufsize, MW_KEYWORD_SIZE); const uint32_t & KEYWORD = fapi::MBVPD_KEYWORD_MW; const uint32_t & RETURNED_SIZE = l_MwBufsize; + const fapi::Target & CHIP_TARGET = i_mbTarget; FAPI_SET_HWP_ERROR(l_fapirc, RC_MBVPD_INSUFFICIENT_VPD_RETURNED ); break; // break out with fapirc } @@ -281,6 +282,7 @@ fapi::ReturnCode getMBvpdSupplierData( l_pdIBufsize, PDI_DDR3_KEYWORD_SIZE); const uint32_t & KEYWORD = fapi::MBVPD_KEYWORD_PDI; const uint32_t & RETURNED_SIZE = l_pdIBufsize; + const fapi::Target & CHIP_TARGET = i_mbTarget; FAPI_SET_HWP_ERROR(l_fapirc,RC_MBVPD_INSUFFICIENT_VPD_RETURNED); break; // break out with fapirc } @@ -299,6 +301,7 @@ fapi::ReturnCode getMBvpdSupplierData( l_pdIBufsize, PDI_DDR4_KEYWORD_SIZE); const uint32_t & KEYWORD = fapi::MBVPD_KEYWORD_PDI; const uint32_t & RETURNED_SIZE = l_pdIBufsize; + const fapi::Target & CHIP_TARGET = i_mbTarget; FAPI_SET_HWP_ERROR(l_fapirc,RC_MBVPD_INSUFFICIENT_VPD_RETURNED); break; // break out with fapirc } @@ -312,6 +315,7 @@ fapi::ReturnCode getMBvpdSupplierData( FAPI_ERR("getMBvpdSupplierData:" " unexpected memory type in #I"); const uint8_t & MEM_TYPE = l_pPdIBuffer->pdI.common.mem_type; + const fapi::Target & MEMBUF_TARGET = i_mbTarget; FAPI_SET_HWP_ERROR(l_fapirc,RC_MBVPD_UNEXPECTED_MEM_TYPE); break; // break out with fapirc } @@ -360,6 +364,7 @@ fapi::ReturnCode getMBvpdSupplierData( l_mvBufsize, l_offset); const uint32_t & KEYWORD = fapi::MBVPD_KEYWORD_MV; const uint32_t & RETURNED_SIZE = l_mvBufsize; + const fapi::Target & CHIP_TARGET = i_mbTarget; FAPI_SET_HWP_ERROR(l_fapirc, RC_MBVPD_INSUFFICIENT_VPD_RETURNED ); break; // break out with fapirc } @@ -436,6 +441,7 @@ fapi::ReturnCode getMBvpdSupplierData( " supplier ID not found 0x%04x", l_moduleID_LSB+(l_moduleID_MSB<<8)); const uint32_t & MODULE_ID = l_moduleID_LSB+(l_moduleID_MSB<<8); + const fapi::Target & MEMBUF_TARGET = i_mbTarget; FAPI_SET_HWP_ERROR(l_fapirc, RC_MBVPD_SUPPLIER_ID_NOT_IN_MV_VPD ); } diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdSpareDramData.C b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdSpareDramData.C index 10639e9ca..b604cb24d 100644 --- a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdSpareDramData.C +++ b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdSpareDramData.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2013 */ +/* COPYRIGHT International Business Machines Corp. 2013,2014 */ /* */ /* p1 */ /* */ @@ -20,7 +20,7 @@ /* Origin: 30 */ /* */ /* IBM_PROLOG_END_TAG */ -// $Id: getMBvpdSpareDramData.C,v 1.4 2013/10/03 20:40:52 dedahle Exp $ +// $Id: getMBvpdSpareDramData.C,v 1.5 2014/02/12 22:14:28 mjjones Exp $ #include <stdint.h> // fapi support @@ -108,6 +108,7 @@ fapi::ReturnCode getMBvpdSpareDramData(const fapi::Target &i_mba, l_AmBufSize, AM_KEYWORD_SIZE); const uint32_t & KEYWORD = fapi::MBVPD_KEYWORD_AM; const uint32_t & RETURNED_SIZE = l_AmBufSize; + const fapi::Target & CHIP_TARGET = l_mbTarget; FAPI_SET_HWP_ERROR(l_rc, RC_MBVPD_INSUFFICIENT_VPD_RETURNED ); break; } diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdTermData.C b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdTermData.C index c5e612eab..534814b67 100644 --- a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdTermData.C +++ b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdTermData.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2014 */ +/* COPYRIGHT International Business Machines Corp. 2013,2014 */ /* */ /* p1 */ /* */ @@ -20,7 +20,7 @@ /* Origin: 30 */ /* */ /* IBM_PROLOG_END_TAG */ -// $Id: getMBvpdTermData.C,v 1.8 2014/02/10 19:57:04 whs Exp $ +// $Id: getMBvpdTermData.C,v 1.9 2014/02/12 22:14:37 mjjones Exp $ /** * @file getMBvpdTermData.C * @@ -332,6 +332,7 @@ fapi::ReturnCode getMBvpdTermData( l_MtBufsize, MT_KEYWORD_SIZE); const uint32_t & KEYWORD = fapi::MBVPD_KEYWORD_MT; const uint32_t & RETURNED_SIZE = l_MtBufsize; + const fapi::Target & CHIP_TARGET = l_mbTarget; FAPI_SET_HWP_ERROR(l_fapirc, RC_MBVPD_INSUFFICIENT_VPD_RETURNED ); break; // break out with fapirc } diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdVersion.C b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdVersion.C index 55f17291a..81090d931 100644 --- a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdVersion.C +++ b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdVersion.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2013 */ +/* COPYRIGHT International Business Machines Corp. 2013,2014 */ /* */ /* p1 */ /* */ @@ -20,7 +20,7 @@ /* Origin: 30 */ /* */ /* IBM_PROLOG_END_TAG */ -// $Id: getMBvpdVersion.C,v 1.1 2013/10/30 21:07:58 whs Exp $ +// $Id: getMBvpdVersion.C,v 1.2 2014/02/12 22:14:44 mjjones Exp $ /** * @file getMBvpdVersion.C * @@ -81,6 +81,7 @@ fapi::ReturnCode getMBvpdVersion( l_bufSize, sizeof(l_vpdVersion)); const uint32_t & KEYWORD = sizeof(l_vpdVersion); const uint32_t & RETURNED_SIZE = l_bufSize; + const fapi::Target & CHIP_TARGET = l_mbTarget; FAPI_SET_HWP_ERROR(l_fapirc,RC_MBVPD_INSUFFICIENT_VPD_RETURNED); break; // break out with fapirc } diff --git a/src/usr/hwpf/hwp/mvpd_accessors/mvpdRingFuncs.C b/src/usr/hwpf/hwp/mvpd_accessors/mvpdRingFuncs.C index 80e675212..a5106a6b3 100644 --- a/src/usr/hwpf/hwp/mvpd_accessors/mvpdRingFuncs.C +++ b/src/usr/hwpf/hwp/mvpd_accessors/mvpdRingFuncs.C @@ -20,7 +20,7 @@ /* Origin: 30 */ /* */ /* IBM_PROLOG_END_TAG */ -// $Id: mvpdRingFuncs.C,v 1.8 2014/01/26 12:57:15 whs Exp $ +// $Id: mvpdRingFuncs.C,v 1.9 2014/02/12 22:14:51 mjjones Exp $ /** * @file mvpdRingFuncs.C * @@ -268,6 +268,7 @@ fapi::ReturnCode mvpdRingFunc( const mvpdRingFuncOp i_mvpdRingFuncOp, { const uint8_t & RING_MODIFIER = i_ringId; const uint8_t & CHIPLET_ID = i_chipletId; + const fapi::Target & CHIP_TARGET = i_fapiTarget; FAPI_SET_HWP_ERROR(l_fapirc, RC_REPAIR_RING_NOT_FOUND ); // break out with fapirc break; @@ -422,6 +423,7 @@ fapi::ReturnCode mbvpdRingFunc( const mbvpdRingFuncOp i_mbvpdRingFuncOp, { const uint8_t & RING_MODIFIER = i_ringId; const uint8_t & CHIPLET_ID = i_chipletId; + const fapi::Target & CHIP_TARGET = i_fapiTarget; FAPI_SET_HWP_ERROR(l_fapirc, RC_REPAIR_RING_NOT_FOUND ); // break out with fapirc break; @@ -519,13 +521,6 @@ fapi::ReturnCode mvpdRingFuncFind( const uint8_t i_chipletId, FAPI_DBG("mvpdRingFuncFind:Header 0x%x offset 0x%x,end of list", FAPI_BE32TOH(l_pScanData->iv_magic), l_offset ); - // TODO: RTC 51917 how to tell the end of the list? Assume that - // finding a header without RS4_MAGIC is the end. - // keep the following incase there is a different way to find - // the end. - // $$const uint32_t &MAGIC = l_pScanData->magic; - // $$FAPI_SET_HWP_ERROR(l_fapirc,RC_REPAIR_RING_INVALID_MAGIC ); - // break out of scan loop, ring not found break; } // dump record info for debug diff --git a/src/usr/hwpf/hwp/mvpd_accessors/mvpd_errors.xml b/src/usr/hwpf/hwp/mvpd_accessors/mvpd_errors.xml index b827400b9..e78170b28 100644 --- a/src/usr/hwpf/hwp/mvpd_accessors/mvpd_errors.xml +++ b/src/usr/hwpf/hwp/mvpd_accessors/mvpd_errors.xml @@ -5,7 +5,7 @@ <!-- --> <!-- IBM CONFIDENTIAL --> <!-- --> -<!-- COPYRIGHT International Business Machines Corp. 2012,2013 --> +<!-- COPYRIGHT International Business Machines Corp. 2012,2014 --> <!-- --> <!-- p1 --> <!-- --> @@ -20,7 +20,7 @@ <!-- Origin: 30 --> <!-- --> <!-- IBM_PROLOG_END_TAG --> -<!-- $Id: mvpd_errors.xml,v 1.13 2013/11/22 22:14:37 whs Exp $ --> +<!-- $Id: mvpd_errors.xml,v 1.15 2014/02/12 22:26:52 mjjones Exp $ --> <hwpErrors> <!-- ********************************************************************* --> <hwpError> @@ -28,6 +28,10 @@ <description> Invalid input parameter: pointer to ringbuffer was NULL </description> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> </hwpError> <!-- ********************************************************************* --> <hwpError> @@ -35,14 +39,10 @@ <description> Failed to allocate buffer space for repair ring data </description> - </hwpError> - <!-- ********************************************************************* --> - <hwpError> - <rc>RC_REPAIR_RING_INVALID_MAGIC</rc> - <description> - Failed to allocate buffer space for repair ring data - </description> - <ffdc>MAGIC</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> </hwpError> <!-- ********************************************************************* --> <hwpError> @@ -50,15 +50,27 @@ <description> Invalid input parameter: buffer too small to copy repair ring data </description> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> </hwpError> <!-- ********************************************************************* --> <hwpError> <rc>RC_REPAIR_RING_NOT_FOUND</rc> <description> The repair ring specified was not found. + Most likely reason is bad VPD </description> <ffdc>RING_MODIFIER</ffdc> <ffdc>CHIPLET_ID</ffdc> + <callout> + <target>CHIP_TARGET</target> + <priority>HIGH</priority> + </callout> + <deconfigure> + <target>CHIP_TARGET</target> + </deconfigure> </hwpError> <!-- ********************************************************************* --> <hwpError> @@ -66,6 +78,10 @@ <description> An invalid parameter was passed to a mvpd ring function. </description> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> </hwpError> <!-- ********************************************************************* --> <hwpError> @@ -73,6 +89,10 @@ <description> Insufficient room in the record to set the requested ring. </description> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> </hwpError> <!-- ********************************************************************* --> <hwpError> @@ -81,6 +101,10 @@ VPD Field size too small to contain the EX_L2_SINGLE_MEMBER_ENABLE data </description> <ffdc>FIELD_SIZE</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> </hwpError> <!-- ********************************************************************* --> <hwpError> @@ -89,6 +113,10 @@ Invalid attribute ID </description> <ffdc>ATTR_ID</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> </hwpError> <!-- ********************************************************************* --> <hwpError> @@ -98,23 +126,47 @@ </description> <ffdc>EXPECTED_SIZE</ffdc> <ffdc>PASSED_SIZE</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> </hwpError> <!-- ********************************************************************* --> <hwpError> <rc>RC_MBVPD_INSUFFICIENT_VPD_RETURNED</rc> <description> VPD keyword record returned is smaller than expected. + Probably a firmware bug, but could be bad VPD </description> <ffdc>KEYWORD</ffdc> <ffdc>RETURNED_SIZE</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> + <callout> + <target>CHIP_TARGET</target> + <priority>MEDIUM</priority> + </callout> </hwpError> <!-- ********************************************************************* --> <hwpError> <rc>RC_MBVPD_SUPPLIER_ID_NOT_IN_MV_VPD</rc> <description> The Module ID in the #I keyword is not in the list of supplier provided entries in the MV keyword. + Bad C-DIMM VPD. </description> <ffdc>MODULE_ID</ffdc> + <callout> + <target>MEMBUF_TARGET</target> + <priority>HIGH</priority> + </callout> + <deconfigure> + <target>MEMBUF_TARGET</target> + </deconfigure> + <gard> + <target>MEMBUF_TARGET</target> + </gard> </hwpError> <!-- ********************************************************************* --> <hwpError> @@ -122,6 +174,10 @@ <description> An invalid parameter was passed to a mbvpd ring function. </description> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> </hwpError> <!-- ********************************************************************* --> <hwpError> @@ -131,15 +187,30 @@ </description> <ffdc>ATTR_ID</ffdc> <ffdc>VPD_VALUE</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> </hwpError> <!-- ********************************************************************* --> <hwpError> <rc>RC_MBVPD_DRAM_2N_MODE_NOT_EQUAL</rc> <description> - The 2 ports of DRAM 2N MODE should be equal. + The 2 ports of DRAM 2N MODE should be equal in VPD. + Bad C-DIMM VPD. </description> <ffdc>PORT0</ffdc> <ffdc>PORT1</ffdc> + <callout> + <target>MBA_TARGET</target> + <priority>HIGH</priority> + </callout> + <deconfigure> + <target>MBA_TARGET</target> + </deconfigure> + <gard> + <target>MBA_TARGET</target> + </gard> </hwpError> <!-- ********************************************************************* --> <hwpError> @@ -148,13 +219,28 @@ Mode must be Get or Set. </description> <ffdc>MODE</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> </hwpError> <!-- ********************************************************************* --> <hwpError> <rc>RC_MBVPD_UNEXPECTED_MEM_TYPE</rc> <description> Memory type in VSPD keyword #I not DDR3 or DDR4 + Unsupported C-DIMM VPD. </description> <ffdc>MEM_TYPE</ffdc> + <callout> + <target>MEMBUF_TARGET</target> + <priority>HIGH</priority> + </callout> + <deconfigure> + <target>MEMBUF_TARGET</target> + </deconfigure> + <gard> + <target>MEMBUF_TARGET</target> + </gard> </hwpError> </hwpErrors> diff --git a/src/usr/hwpf/hwp/proc_mvpd_attributes.xml b/src/usr/hwpf/hwp/proc_mvpd_attributes.xml deleted file mode 100644 index e72ef8f34..000000000 --- a/src/usr/hwpf/hwp/proc_mvpd_attributes.xml +++ /dev/null @@ -1,39 +0,0 @@ -<!-- IBM_PROLOG_BEGIN_TAG - This is an automatically generated prolog. - - $Source: src/usr/hwpf/hwp/proc_mvpd_attributes.xml $ - - IBM CONFIDENTIAL - - COPYRIGHT International Business Machines Corp. 2012 - - p1 - - Object Code Only (OCO) source materials - Licensed Internal Code Source Materials - IBM HostBoot Licensed Internal Code - - The source code for this program is not published or other- - wise divested of its trade secrets, irrespective of what has - been deposited with the U.S. Copyright Office. - - Origin: 30 - - IBM_PROLOG_END --> -<!-- - XML file specifying HWPF attributes. - These are processor module VPD (MVPD) attributes. ---> - -<attributes> - <!-- ********************************************************************* --> - <attribute> - <id>ATTR_MVPD_FREQ_CORE_NOMINAL</id> - <targetType>TARGET_TYPE_PROC_CHIP</targetType> - <description> - The nominal frequency of the processor cores in MHz. - </description> - <valueType>uint32</valueType> - <platInit/> - </attribute> -</attributes> diff --git a/src/usr/hwpf/makefile b/src/usr/hwpf/makefile index 46ecd874c..44573ab92 100644 --- a/src/usr/hwpf/makefile +++ b/src/usr/hwpf/makefile @@ -145,7 +145,6 @@ HWP_ATTR_XML_FILES = hwp/memory_attributes.xml \ hwp/dimm_attributes.xml \ hwp/unit_attributes.xml \ hwp/freq_attributes.xml \ - hwp/proc_mvpd_attributes.xml \ hwp/ei_bus_attributes.xml \ hwp/chip_ec_attributes.xml \ hwp/centaur_ec_attributes.xml \ diff --git a/src/usr/hwpf/plat/fapiPlatAttributeService.C b/src/usr/hwpf/plat/fapiPlatAttributeService.C index 7c90557d8..ef6c493d6 100644 --- a/src/usr/hwpf/plat/fapiPlatAttributeService.C +++ b/src/usr/hwpf/plat/fapiPlatAttributeService.C @@ -102,10 +102,12 @@ fapi::ReturnCode getTargetingTarget( * @reasoncode RC_EMBEDDED_NULL_TARGET_PTR * @devdesc NULL TARG Target passed to attribute access macro */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_INFORMATIONAL, MOD_ATTR_GET_TARGETING_TARGET, - RC_EMBEDDED_NULL_TARGET_PTR); + RC_EMBEDDED_NULL_TARGET_PTR, + 0, 0, hbSwError); l_rc.setPlatError(reinterpret_cast<void *> (l_pError)); } else if (i_expectedType != TARGETING::TYPE_NA) @@ -126,11 +128,12 @@ fapi::ReturnCode getTargetingTarget( * @devdesc Unexpected Target Type passed to attribute access * macro */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_INFORMATIONAL, MOD_ATTR_GET_TARGETING_TARGET, RC_UNEXPECTED_TARGET_TYPE, - l_type, i_expectedType); + l_type, i_expectedType, hbSwError); l_rc.setPlatError(reinterpret_cast<void *> (l_pError)); } } @@ -178,13 +181,14 @@ fapi::ReturnCode getTargetingAttr(const fapi::Target * i_pFapiTarget, * attribute not present on given target, target service * not initialized */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_INFORMATIONAL, MOD_PLAT_ATTR_SVC_GET_TARG_ATTR, RC_FAILED_TO_ACCESS_ATTRIBUTE, i_targAttrId, - i_pFapiTarget ? i_pFapiTarget->getType(): NULL); - + i_pFapiTarget ? i_pFapiTarget->getType(): NULL, + hbSwError); l_rc.setPlatError(reinterpret_cast<void *>(l_pError)); } } @@ -232,13 +236,14 @@ fapi::ReturnCode setTargetingAttr(const fapi::Target * i_pFapiTarget, * attribute not present on given target, target service * not initialized */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_INFORMATIONAL, MOD_PLAT_ATTR_SVC_SET_TARG_ATTR, RC_FAILED_TO_ACCESS_ATTRIBUTE, i_targAttrId, - i_pFapiTarget ? i_pFapiTarget->getType(): NULL); - + i_pFapiTarget ? i_pFapiTarget->getType(): NULL, + hbSwError); l_rc.setPlatError(reinterpret_cast<void *>(l_pError)); } } @@ -417,13 +422,16 @@ fapi::ReturnCode fapiPlatGetTargetName(const fapi::Target * i_pFapiTarget, * @errortype * @moduleid MOD_ATTR_GET_TARGET_NAME * @reasoncode RC_ATTR_BAD_TARGET_PARAM - * @devdesc Failed to get the Target name due to bad target - * parameter. + * @devdesc Failed to get the FAPI Target name due to + * unrecognized TARGETING Target model + * @userdata1 TARGETING Target model */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_INFORMATIONAL, MOD_ATTR_GET_TARGET_NAME, - RC_ATTR_BAD_TARGET_PARAM); + RC_ATTR_BAD_TARGET_PARAM, + l_model, 0, hbSwError); l_rc.setPlatError(reinterpret_cast<void *> (l_pError)); } } @@ -1065,14 +1073,18 @@ fapi::ReturnCode fapiPlatGetVpdVersion ( * @moduleid fapi::MOD_PLAT_ATTR_SVC_GET_VPD_VERSION * @reasoncode fapi::RC_NO_SINGLE_MBA * @userdata1 Number of MBAs + * @userdata2 DIMM HUID * @devdesc fapiPlatGetVpdVersion could not find the * expected 1 mba from the passed dimm target */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi::MOD_PLAT_ATTR_SVC_GET_VPD_VERSION, fapi::RC_NO_SINGLE_MBA, - l_mbaList.size()); + l_mbaList.size(), + TARGETING::get_huid(l_pTarget), + hbSwError); // Attach the error log to the fapi::ReturnCode l_rc.setPlatError(reinterpret_cast<void *> (l_pError)); @@ -1229,14 +1241,18 @@ fapi::ReturnCode fapiPlatDimmGetBadDqBitmap ( * @moduleid fapi::MOD_PLAT_ATTR_SVC_GET_BADDQ_DATA * @reasoncode fapi::RC_NO_SINGLE_MBA * @userdata1 Number of MBAs + * @userdata2 DIMM HUID * @devdesc fapiPlatDimmGetBadDqBitmap could not find the * expected 1 mba from the passed dimm target */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi::MOD_PLAT_ATTR_SVC_GET_BADDQ_DATA, fapi::RC_NO_SINGLE_MBA, - l_mbaList.size()); + l_mbaList.size(), + TARGETING::get_huid(l_pTarget), + hbSwError); // Attach the error log to the fapi::ReturnCode l_rc.setPlatError(reinterpret_cast<void *> (l_pError)); @@ -1305,14 +1321,18 @@ fapi::ReturnCode fapiPlatDimmSetBadDqBitmap ( * @moduleid fapi::MOD_PLAT_ATTR_SVC_SET_BADDQ_DATA * @reasoncode fapi::RC_NO_SINGLE_MBA * @userdata1 Number of MBAs + * @userdata2 DIMM HUID * @devdesc fapiPlatDimmSetBadDqBitmap could not find the * expected 1 mba from the passed dimm target */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi::MOD_PLAT_ATTR_SVC_SET_BADDQ_DATA, fapi::RC_NO_SINGLE_MBA, - l_mbaList.size()); + l_mbaList.size(), + TARGETING::get_huid(l_pTarget), + hbSwError); // Attach the error log to the fapi::ReturnCode l_rc.setPlatError(reinterpret_cast<void *> (l_pError)); diff --git a/src/usr/hwpf/plat/fapiPlatHwAccess.C b/src/usr/hwpf/plat/fapiPlatHwAccess.C index eac1049a2..ad4f61423 100644 --- a/src/usr/hwpf/plat/fapiPlatHwAccess.C +++ b/src/usr/hwpf/plat/fapiPlatHwAccess.C @@ -221,8 +221,8 @@ static errlHndl_t verifyCfamAccessTarget(const fapi::Target& i_target, if( l_pMasterProcChip == l_pTarget ) { - // Add the error log pointer as data to the ReturnCode - FAPI_ERR("verifyCfamAccessTarget: Attempt to access CFAM register %.8X on the master processor chip", i_address); + FAPI_ERR("verifyCfamAccessTarget: Attempt to access CFAM register %.8X on the master processor chip", + i_address); /*@ * @errortype @@ -233,12 +233,13 @@ static errlHndl_t verifyCfamAccessTarget(const fapi::Target& i_target, * @devdesc Attempt to access CFAM register on * the master processor chip */ + const bool hbSwError = true; l_err = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi::MOD_VERIFY_CFAM_ACCESS_TARGET, fapi::RC_CFAM_ACCESS_ON_PROC_ERR, TARGETING::get_huid(l_pMasterProcChip), - i_address); + i_address, hbSwError); } } @@ -290,13 +291,17 @@ static errlHndl_t getCfamChipTarget(const TARGETING::Target* i_target, * @moduleid fapi::MOD_GET_CFAM_CHIP_TARGET * @reasoncode fapi::RC_INVALID_NUM_PARENT_CHIP * @userdata1 Number of parent chip found + * @userdata2 Chiplet HUID * @devdesc Invalid num of parent chip found for input CFAM target chiplet */ + const bool hbSwError = true; l_err = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi::MOD_GET_CFAM_CHIP_TARGET, fapi::RC_INVALID_NUM_PARENT_CHIP, - l_list.size()); + l_list.size(), + TARGETING::get_huid(i_target), + hbSwError); } } return l_err; diff --git a/src/usr/hwpf/plat/fapiPlatMBvpdAccess.C b/src/usr/hwpf/plat/fapiPlatMBvpdAccess.C index aaff96d6d..8cc55228a 100644 --- a/src/usr/hwpf/plat/fapiPlatMBvpdAccess.C +++ b/src/usr/hwpf/plat/fapiPlatMBvpdAccess.C @@ -1,11 +1,11 @@ /* IBM_PROLOG_BEGIN_TAG */ /* This is an automatically generated prolog. */ /* */ -/* $Source: src/usr/hwpf/plat/fapiPlatMBvpdAccess.C $ */ +/* $Source: src/usr/hwpf/plat/fapiPlatMBvpdAccess.C $ */ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2013 */ +/* COPYRIGHT International Business Machines Corp. 2012,2014 */ /* */ /* p1 */ /* */ @@ -78,11 +78,12 @@ fapi::ReturnCode MBvpdRecordXlate(const fapi::MBvpdRecord i_fapiRecord, * @userdata1 Record enumerator * @devdesc Attempt to read an MVPD field using an invalid record */ + const bool hbSwError = true; errlHndl_t l_errl = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, MOD_MBVPD_ACCESS, RC_INVALID_RECORD, - i_fapiRecord); + i_fapiRecord, 0, hbSwError); // Add the error log pointer as data to the ReturnCode l_rc.setPlatError(reinterpret_cast<void *> (l_errl)); @@ -141,11 +142,12 @@ fapi::ReturnCode MBvpdKeywordXlate(const fapi::MBvpdKeyword i_fapiKeyword, * @userdata1 Keyword enumerator * @devdesc Attempt to read an MVPD field using an invalid keyword */ + const bool hbSwError = true; errlHndl_t l_errl = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, MOD_MBVPD_ACCESS, RC_INVALID_KEYWORD, - i_fapiKeyword); + i_fapiKeyword, 0, hbSwError); // Add the error log pointer as data to the ReturnCode l_rc.setPlatError(reinterpret_cast<void *> (l_errl)); diff --git a/src/usr/hwpf/plat/fapiPlatMvpdAccess.C b/src/usr/hwpf/plat/fapiPlatMvpdAccess.C index 79a641b8a..5365b3a2a 100644 --- a/src/usr/hwpf/plat/fapiPlatMvpdAccess.C +++ b/src/usr/hwpf/plat/fapiPlatMvpdAccess.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2013 */ +/* COPYRIGHT International Business Machines Corp. 2012,2014 */ /* */ /* p1 */ /* */ @@ -107,11 +107,12 @@ fapi::ReturnCode MvpdRecordXlate(const fapi::MvpdRecord i_fapiRecord, * @userdata1 Record enumerator * @devdesc Attempt to read an MVPD field using an invalid record */ + const bool hbSwError = true; errlHndl_t l_errl = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi::MOD_MVPD_ACCESS, fapi::RC_INVALID_RECORD, - i_fapiRecord); + i_fapiRecord, 0, hbSwError); // Add the error log pointer as data to the ReturnCode l_rc.setPlatError(reinterpret_cast<void *> (l_errl)); @@ -191,11 +192,12 @@ fapi::ReturnCode MvpdKeywordXlate(const fapi::MvpdKeyword i_fapiKeyword, * @userdata1 Keyword enumerator * @devdesc Attempt to read an MVPD field using an invalid keyword */ + const bool hbSwError = true; errlHndl_t l_errl = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi::MOD_MVPD_ACCESS, fapi::RC_INVALID_KEYWORD, - i_fapiKeyword); + i_fapiKeyword, 0, hbSwError); // Add the error log pointer as data to the ReturnCode l_rc.setPlatError(reinterpret_cast<void *> (l_errl)); diff --git a/src/usr/hwpf/plat/fapiPlatSystemConfig.C b/src/usr/hwpf/plat/fapiPlatSystemConfig.C index c5b101fc6..e00da578c 100644 --- a/src/usr/hwpf/plat/fapiPlatSystemConfig.C +++ b/src/usr/hwpf/plat/fapiPlatSystemConfig.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2011,2013 */ +/* COPYRIGHT International Business Machines Corp. 2011,2014 */ /* */ /* p1 */ /* */ @@ -67,10 +67,12 @@ fapi::ReturnCode fapiGetOtherSideOfMemChannel( * @reasoncode fapi::RC_EMBEDDED_NULL_TARGET_PTR * @devdesc Target has embedded null target pointer */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi::MOD_FAPI_GET_OTHER_SIDE_OF_MEM_CHANNEL, - fapi::RC_EMBEDDED_NULL_TARGET_PTR); + fapi::RC_EMBEDDED_NULL_TARGET_PTR, + 0, 0, hbSwError); // Attach the error log to the fapi::ReturnCode l_rc.setPlatError(reinterpret_cast<void *> (l_pError)); @@ -90,14 +92,18 @@ fapi::ReturnCode fapiGetOtherSideOfMemChannel( * @moduleid fapi::MOD_FAPI_GET_OTHER_SIDE_OF_MEM_CHANNEL * @reasoncode fapi::RC_NO_SINGLE_MEMBUFF * @userdata1 Number of Memory Buffers + * @userdata2 MCS HUID * @devdesc fapiGetOtherSideOfMemChannel could not find exactly * one target on the other side of the correct state */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi::MOD_FAPI_GET_OTHER_SIDE_OF_MEM_CHANNEL, fapi::RC_NO_SINGLE_MEMBUFF, - l_targetList.size()); + l_targetList.size(), + TARGETING::get_huid(l_target), + hbSwError); // Attach the error log to the fapi::ReturnCode l_rc.setPlatError(reinterpret_cast<void *> (l_pError)); @@ -109,7 +115,8 @@ fapi::ReturnCode fapiGetOtherSideOfMemChannel( o_target.set(reinterpret_cast<void *>(l_targetList[0])); } - } else if (i_target.getType() == fapi::TARGET_TYPE_MEMBUF_CHIP) + } + else if (i_target.getType() == fapi::TARGET_TYPE_MEMBUF_CHIP) { // find the MCS that is associated with this Centaur getParentAffinityTargets (l_targetList, l_target, @@ -124,18 +131,21 @@ fapi::ReturnCode fapiGetOtherSideOfMemChannel( * @moduleid fapi::MOD_FAPI_GET_OTHER_SIDE_OF_MEM_CHANNEL * @reasoncode fapi::RC_NO_SINGLE_MCS * @userdata1 Number of MCSs + * @userdata2 Membuf HUID * @devdesc fapiGetOtherSideOfMemChannel could not find exactly * one target on the other side of the correct state */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi::MOD_FAPI_GET_OTHER_SIDE_OF_MEM_CHANNEL, fapi::RC_NO_SINGLE_MCS, - l_targetList.size()); + l_targetList.size(), + TARGETING::get_huid(l_target), + hbSwError); // Attach the error log to the fapi::ReturnCode l_rc.setPlatError(reinterpret_cast<void *> (l_pError)); - } else { @@ -143,8 +153,9 @@ fapi::ReturnCode fapiGetOtherSideOfMemChannel( o_target.set(reinterpret_cast<void *>(l_targetList[0])); } - } else { - + } + else + { FAPI_ERR("fapiGetOtherSideOfMemChannel. target 0x%08x not supported", i_target.getType()); /*@ @@ -152,14 +163,18 @@ fapi::ReturnCode fapiGetOtherSideOfMemChannel( * @moduleid fapi::MOD_FAPI_GET_OTHER_SIDE_OF_MEM_CHANNEL * @reasoncode fapi::RC_UNSUPPORTED_REQUEST * @userdata1 Requested type + * @userdata2 Unsupported Target HUID * @devdesc fapiGetOtherSideOfMemChannel request for unsupported * or invalid target type */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi::MOD_FAPI_GET_OTHER_SIDE_OF_MEM_CHANNEL, fapi::RC_UNSUPPORTED_REQUEST, - i_target.getType()); + i_target.getType(), + TARGETING::get_huid(l_target), + hbSwError); // Attach the error log to the fapi::ReturnCode l_rc.setPlatError(reinterpret_cast<void *> (l_pError)); @@ -179,14 +194,18 @@ fapi::ReturnCode fapiGetOtherSideOfMemChannel( * @moduleid fapi::MOD_FAPI_GET_OTHER_SIDE_OF_MEM_CHANNEL * @reasoncode fapi::RC_STATE_MISMATCH * @userdata1 Requested state + * @userdata2 Other Target HUID * @devdesc fapiGetOtherSideOfMemChannel target not present or * functional as requested */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi::MOD_FAPI_GET_OTHER_SIDE_OF_MEM_CHANNEL, fapi::RC_STATE_MISMATCH, - i_state); + i_state, + TARGETING::get_huid(l_targetList[0]), + hbSwError); // Attach the error log to the fapi::ReturnCode l_rc.setPlatError(reinterpret_cast<void *> (l_pError)); @@ -215,6 +234,10 @@ fapi::ReturnCode fapiGetChildChiplets( fapi::ReturnCode l_rc; o_chiplets.clear(); + // Extract the HostBoot Target pointer for the input chip + TARGETING::Target * l_pChip = + reinterpret_cast<TARGETING::Target*>(i_chip.get()); + // Check that the input target is a chip if (!i_chip.isChip()) { @@ -225,13 +248,17 @@ fapi::ReturnCode fapiGetChildChiplets( * @moduleid fapi::MOD_FAPI_GET_CHILD_CHIPLETS * @reasoncode fapi::RC_INVALID_REQUEST * @userdata1 Type of input target + * @userdata2 Input Target HUID * @devdesc fapiGetChildChiplets request for non-chip */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi::MOD_FAPI_GET_CHILD_CHIPLETS, fapi::RC_INVALID_REQUEST, - i_chip.getType()); + i_chip.getType(), + TARGETING::get_huid(l_pChip), + hbSwError); // Attach the error log to the fapi::ReturnCode l_rc.setPlatError(reinterpret_cast<void *> (l_pError)); @@ -264,7 +291,6 @@ fapi::ReturnCode fapiGetChildChiplets( { l_type = TARGETING::TYPE_L4; } - else { FAPI_ERR("fapiGetChildChiplets. Chiplet type 0x%08x not supported", @@ -274,24 +300,24 @@ fapi::ReturnCode fapiGetChildChiplets( * @moduleid fapi::MOD_FAPI_GET_CHILD_CHIPLETS * @reasoncode fapi::RC_UNSUPPORTED_REQUEST * @userdata1 Type of requested chiplet + * @userdata2 Input Chip Target HUID * @devdesc fapiGetChildChiplets request for unsupported * or invalid chiplet type */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi::MOD_FAPI_GET_CHILD_CHIPLETS, fapi::RC_UNSUPPORTED_REQUEST, - i_chipletType); + i_chipletType, + TARGETING::get_huid(l_pChip), + hbSwError); // Attach the error log to the fapi::ReturnCode l_rc.setPlatError(reinterpret_cast<void *> (l_pError)); } if (!l_rc) { - // Extract the HostBoot Target pointer for the input chip - TARGETING::Target * l_pChip = - reinterpret_cast<TARGETING::Target*>(i_chip.get()); - if (l_pChip == NULL) { FAPI_ERR("fapiGetChildChiplets. Embedded NULL target pointer"); @@ -301,10 +327,12 @@ fapi::ReturnCode fapiGetChildChiplets( * @reasoncode fapi::RC_EMBEDDED_NULL_TARGET_PTR * @devdesc Target has embedded null target pointer */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi::MOD_FAPI_GET_CHILD_CHIPLETS, - fapi::RC_EMBEDDED_NULL_TARGET_PTR); + fapi::RC_EMBEDDED_NULL_TARGET_PTR, + 0, 0, hbSwError); // Attach the error log to the fapi::ReturnCode l_rc.setPlatError(reinterpret_cast<void *> (l_pError)); @@ -372,10 +400,12 @@ fapi::ReturnCode fapiGetAssociatedDimms( * @reasoncode fapi::RC_EMBEDDED_NULL_TARGET_PTR * @devdesc Target has embedded null target pointer */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi::MOD_FAPI_GET_ASSOCIATE_DIMMS, - fapi::RC_EMBEDDED_NULL_TARGET_PTR); + fapi::RC_EMBEDDED_NULL_TARGET_PTR, + 0, 0, hbSwError); // Attach the error log to the fapi::ReturnCode l_rc.setPlatError(reinterpret_cast<void *> (l_pError)); @@ -432,6 +462,10 @@ fapi::ReturnCode fapiGetParentChip( fapi::ReturnCode l_rc; + // Extract the HostBoot Target pointer for the input chiplet + TARGETING::Target * l_pChiplet = + reinterpret_cast<TARGETING::Target*>(i_chiplet.get()); + // Check that the input target is a chiplet if (!i_chiplet.isChiplet()) { @@ -443,23 +477,23 @@ fapi::ReturnCode fapiGetParentChip( * @moduleid fapi::MOD_FAPI_GET_PARENT_CHIP * @reasoncode fapi::RC_INVALID_REQUEST * @userdata1 Type of input target + * @userdata2 Input Target HUID * @devdesc fapiGetParentChip request for non-chiplet */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi::MOD_FAPI_GET_PARENT_CHIP, fapi::RC_INVALID_REQUEST, - i_chiplet.getType()); + i_chiplet.getType(), + TARGETING::get_huid(l_pChiplet), + hbSwError); // Attach the error log to the fapi::ReturnCode l_rc.setPlatError(reinterpret_cast<void *> (l_pError)); } else { - // Extract the HostBoot Target pointer for the input chiplet - TARGETING::Target * l_pChiplet = - reinterpret_cast<TARGETING::Target*>(i_chiplet.get()); - if (l_pChiplet == NULL) { /*@ @@ -468,10 +502,12 @@ fapi::ReturnCode fapiGetParentChip( * @reasoncode fapi::RC_EMBEDDED_NULL_TARGET_PTR * @devdesc Target has embedded null target pointer */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi::MOD_FAPI_GET_PARENT_CHIP, - fapi::RC_EMBEDDED_NULL_TARGET_PTR); + fapi::RC_EMBEDDED_NULL_TARGET_PTR, + 0, 0, hbSwError); // Attach the error log to the fapi::ReturnCode l_rc.setPlatError(reinterpret_cast<void *> (l_pError)); @@ -483,18 +519,21 @@ fapi::ReturnCode fapiGetParentChip( if (l_pChip == NULL) { - // One parent chip was not found FAPI_ERR("fapiGetParentChip. Parent not found"); /*@ * @errortype * @moduleid fapi::MOD_FAPI_GET_PARENT_CHIP * @reasoncode fapi::RC_NO_SINGLE_PARENT + * @userdata1 Input Chiplet Target HUID * @devdesc fapiGetParentChip did not find one parent */ + const bool hbSwError = true; errlHndl_t l_pError = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi::MOD_FAPI_GET_PARENT_CHIP, - fapi::RC_NO_SINGLE_PARENT); + fapi::RC_NO_SINGLE_PARENT, + TARGETING::get_huid(l_pChiplet), + 0, hbSwError); // Attach the error log to the fapi::ReturnCode l_rc.setPlatError(reinterpret_cast<void *> (l_pError)); diff --git a/src/usr/hwpf/plat/fapiPlatUtil.C b/src/usr/hwpf/plat/fapiPlatUtil.C index 0aad15fbf..ddff20d94 100644 --- a/src/usr/hwpf/plat/fapiPlatUtil.C +++ b/src/usr/hwpf/plat/fapiPlatUtil.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2011,2013 */ +/* COPYRIGHT International Business Machines Corp. 2011,2014 */ /* */ /* p1 */ /* */ @@ -135,25 +135,23 @@ void fapiLogError(fapi::ReturnCode & io_rc, } } -//**************************************************************************** -// platform-level implementation - +//****************************************************************************** +// platIsScanTraceEnabled +//****************************************************************************** bool platIsScanTraceEnabled() { - // TODO: Get the answer from g_fapiScanTd conditional trace buffer. Camvan - // has not pushed the code yet. + // SCAN trace can be dynamically turned on/off, always return true here return 1; } -//**************************************************************************** -// platform-level implementation - -void platSetScanTrace(bool i_enable) -{ - // TODO: enable or disable scan trace via the SCAN trace buffer. Camvan - // has not pushed the code yet. - return; -} +//****************************************************************************** +// platSetScanTrace +// Implementation to be added if needed +//****************************************************************************** +//void platSetScanTrace(bool i_enable) +//{ +// +//} //****************************************************************************** // fapiLoadInitFile diff --git a/src/usr/hwpf/test/fapiRcTest.C b/src/usr/hwpf/test/fapiRcTest.C index 0e9949924..80e6ea026 100644 --- a/src/usr/hwpf/test/fapiRcTest.C +++ b/src/usr/hwpf/test/fapiRcTest.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2011,2013 */ +/* COPYRIGHT International Business Machines Corp. 2011,2014 */ /* */ /* p1 */ /* */ @@ -605,7 +605,7 @@ uint32_t rcTest12() // Create a ReturnCode ReturnCode l_rc; - l_rc.setFapiError(FAPI_RC_INVALID_ATTR_GET); + l_rc.setPlatError(NULL, FAPI_RC_PLAT_ERR_SEE_DATA); // Create fake targets uint32_t l_targetHandle = 3; @@ -892,7 +892,7 @@ uint32_t rcTest13() // Create a ReturnCode ReturnCode l_rc; - l_rc.setFapiError(FAPI_RC_INVALID_ATTR_GET); + l_rc.setPlatError(NULL, FAPI_RC_PLAT_ERR_SEE_DATA); // Create a DIMM target uint32_t l_targetHandle = 3; @@ -982,7 +982,7 @@ uint32_t rcTest14() // Create a ReturnCode ReturnCode l_rc; - l_rc.setFapiError(FAPI_RC_INVALID_ATTR_GET); + l_rc.setPlatError(NULL, FAPI_RC_PLAT_ERR_SEE_DATA); // Create a DIMM target uint32_t l_targetHandle = 3; @@ -1073,7 +1073,7 @@ uint32_t rcTest15() // Create a ReturnCode ReturnCode l_rc; - l_rc.setFapiError(FAPI_RC_INVALID_ATTR_GET); + l_rc.setPlatError(NULL, FAPI_RC_PLAT_ERR_SEE_DATA); // Create a DIMM target uint32_t l_targetHandle = 3; @@ -1121,7 +1121,7 @@ uint32_t rcTest16() // Create a ReturnCode ReturnCode l_rc; - l_rc.setFapiError(FAPI_RC_INVALID_ATTR_GET); + l_rc.setPlatError(NULL, FAPI_RC_PLAT_ERR_SEE_DATA); // Create 2 targets uint32_t l_targetHandle = 3; |