summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf
diff options
context:
space:
mode:
authorMike Jones <mjjones@us.ibm.com>2014-01-27 15:33:09 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-02-14 12:41:36 -0600
commit10a93afdbdd5bccc9a10b797d66b008580ba16bb (patch)
treecaddb050384fe2eb4cd8844c59a28d9ea9e8b7c0 /src/usr/hwpf
parent5850220077f29041920e83de66ec458dac9c82a7 (diff)
downloadblackbird-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')
-rw-r--r--src/usr/hwpf/fapi/fapiReturnCode.C21
-rw-r--r--src/usr/hwpf/hwp/mvpd_accessors/accessMBvpdL4BankDelete.C5
-rw-r--r--src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAddrMirrorData.C5
-rw-r--r--src/usr/hwpf/hwp/mvpd_accessors/getMBvpdDram2NModeEnabled.C5
-rw-r--r--src/usr/hwpf/hwp/mvpd_accessors/getMBvpdPhaseRotatorData.C5
-rw-r--r--src/usr/hwpf/hwp/mvpd_accessors/getMBvpdSensorMap.C7
-rw-r--r--src/usr/hwpf/hwp/mvpd_accessors/getMBvpdSlopeInterceptData.C12
-rw-r--r--src/usr/hwpf/hwp/mvpd_accessors/getMBvpdSpareDramData.C5
-rw-r--r--src/usr/hwpf/hwp/mvpd_accessors/getMBvpdTermData.C5
-rw-r--r--src/usr/hwpf/hwp/mvpd_accessors/getMBvpdVersion.C5
-rw-r--r--src/usr/hwpf/hwp/mvpd_accessors/mvpdRingFuncs.C11
-rw-r--r--src/usr/hwpf/hwp/mvpd_accessors/mvpd_errors.xml108
-rw-r--r--src/usr/hwpf/hwp/proc_mvpd_attributes.xml39
-rw-r--r--src/usr/hwpf/makefile1
-rw-r--r--src/usr/hwpf/plat/fapiPlatAttributeService.C44
-rw-r--r--src/usr/hwpf/plat/fapiPlatHwAccess.C13
-rw-r--r--src/usr/hwpf/plat/fapiPlatMBvpdAccess.C10
-rw-r--r--src/usr/hwpf/plat/fapiPlatMvpdAccess.C8
-rw-r--r--src/usr/hwpf/plat/fapiPlatSystemConfig.C93
-rw-r--r--src/usr/hwpf/plat/fapiPlatUtil.C28
-rw-r--r--src/usr/hwpf/test/fapiRcTest.C12
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;
OpenPOWER on IntegriCloud