summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xsrc/usr/hwpf/fapi/fapiParseErrorInfo.pl11
-rw-r--r--src/usr/hwpf/hwp/fapiHwpErrorInfo.xml71
-rw-r--r--src/usr/hwpf/hwp/fapiTestHwpError.C20
3 files changed, 53 insertions, 49 deletions
diff --git a/src/usr/hwpf/fapi/fapiParseErrorInfo.pl b/src/usr/hwpf/fapi/fapiParseErrorInfo.pl
index b544251b2..552d93b11 100755
--- a/src/usr/hwpf/fapi/fapiParseErrorInfo.pl
+++ b/src/usr/hwpf/fapi/fapiParseErrorInfo.pl
@@ -21,7 +21,7 @@
# Origin: 30
#
# IBM_PROLOG_END_TAG
-# $Id: fapiParseErrorInfo.pl,v 1.26 2014/03/12 00:48:41 whs Exp $
+# $Id: fapiParseErrorInfo.pl,v 1.27 2014/03/20 20:05:08 mjjones Exp $
# Purpose: This perl script will parse HWP Error XML files and create required
# FAPI code.
#
@@ -64,6 +64,8 @@
# dedahle 10/15/13 Support register FFDC collection based on
# present children
# whs 03/11/14 Add FW traces to error logs
+# mjjones 03/20/14 Fix register FFDC collection bug when
+# collecting chiplet registers
#
# End Change Log *****************************************************
#
@@ -1044,12 +1046,15 @@ print CRFILE " l_pData = l_pBuf;\n";
print CRFILE " l_targets.push_back(i_target);\n";
print CRFILE " }\n\n";
#---------------------------------------------------------------------------------------------------------
-# Obtain target position and instert as the first word in the buffer
+# Obtain target position and insert as the first word in the buffer
#---------------------------------------------------------------------------------------------------------
+print CRFILE " bool l_targIsChiplet = i_target.isChiplet();\n\n";
print CRFILE " for (std::vector<fapi::Target>::const_iterator targetIter = l_targets.begin();\n";
print CRFILE " targetIter != l_targets.end(); ++targetIter)\n";
print CRFILE " {\n";
-print CRFILE " if ((fapi::TARGET_TYPE_NONE != i_child) || (fapi::TARGET_TYPE_NONE != i_presChild))\n";
+print CRFILE " if ((fapi::TARGET_TYPE_NONE != i_child) ||\n";
+print CRFILE " (fapi::TARGET_TYPE_NONE != i_presChild) ||\n";
+print CRFILE " (true == l_targIsChiplet))\n";
print CRFILE " {\n";
print CRFILE " uint8_t l_chipletPos = 0;\n";
print CRFILE " l_rc = FAPI_ATTR_GET(ATTR_CHIP_UNIT_POS, &(*targetIter), l_chipletPos);\n";
diff --git a/src/usr/hwpf/hwp/fapiHwpErrorInfo.xml b/src/usr/hwpf/hwp/fapiHwpErrorInfo.xml
index 79b367fac..e70d16be8 100644
--- a/src/usr/hwpf/hwp/fapiHwpErrorInfo.xml
+++ b/src/usr/hwpf/hwp/fapiHwpErrorInfo.xml
@@ -20,24 +20,31 @@
<!-- Origin: 30 -->
<!-- -->
<!-- IBM_PROLOG_END_TAG -->
-<!-- $Id: fapiHwpErrorInfo.xml,v 1.15 2014/03/12 00:49:03 whs Exp $ -->
+<!-- $Id: fapiHwpErrorInfo.xml,v 1.16 2014/03/20 20:19:37 mjjones Exp $ -->
<!-- XML file specifying Test HW Procedure generated errors. -->
<hwpErrors>
-<!-- <registerFfdc>
+ <registerFfdc>
<id>REG_FFDC_TEST_X_PROC_REGISTERS</id>
<cfamRegister>CFAM_FSI_GP8_0x00002817</cfamRegister>
<scomRegister>PORE_GPE0_STATUS_0x00060000</scomRegister>
<scomRegister>PORE_GPE0_CONTROL_0x00060001</scomRegister>
<scomRegister>PORE_GPE0_RESET_0x00060002</scomRegister>
<scomRegister>PORE_GPE0_ERROR_MASK_0x00060003</scomRegister>
- </registerFfdc> -->
+ </registerFfdc>
-<!-- <registerFfdc>
- <id>REG_FFDC_TEST_X_PROC_CHIPLET_REGISTERS</id>
- <scomRegister>PORE_GPE0_ERROR_MASK_0x00060003</scomRegister>
- </registerFfdc> -->
+ <registerFfdc>
+ <id>REG_FFDC_TEST_X_EX_REGISTERS</id>
+ <scomRegister>EX_GP0_0x10000000</scomRegister>
+ <scomRegister>EX_L3_FIR_REG_0x10010800</scomRegister>
+ </registerFfdc>
+
+ <registerFfdc>
+ <id>REG_FFDC_TEST_X_MBA_REGISTERS</id>
+ <scomRegister>MBA01_MBAFIRQ_0x03010600</scomRegister>
+ <scomRegister>MBA01_MBAFIRMASK_0x03010603</scomRegister>
+ </registerFfdc>
<registerFfdc>
<id>REG_FFDC_TEST_X_PROC_REGISTERS_PRES_CHILDREN</id>
@@ -50,41 +57,45 @@
<rc>RC_TEST_ERROR_A</rc>
<description>HWP Error A generated by Unit Test</description>
-<!-- Collect chip register FFDC -->
-<!-- <collectRegisterFfdc>
+ <!-- Collect chip register FFDC -->
+ <collectRegisterFfdc>
<id>REG_FFDC_TEST_X_PROC_REGISTERS</id>
- <target>UNIT_TEST_FFDC_MASTER_CHIP_TARGET</target>
- </collectRegisterFfdc> -->
+ <target>UNIT_TEST_CHIP_TARGET</target>
+ </collectRegisterFfdc>
+ <!-- Collect chiplet register FFDC -->
+ <collectRegisterFfdc>
+ <id>REG_FFDC_TEST_X_MBA_REGISTERS</id>
+ <target>UNIT_TEST_MBA_TARGET</target>
+ </collectRegisterFfdc>
-<!-- Collect child chiplet register FFDC -->
-<!-- <collectRegisterFfdc>
- <id>REG_FFDC_TEST_X_PROC_CHIPLET_REGISTERS</id>
+ <!-- Collect child chiplet register FFDC -->
+ <collectRegisterFfdc>
+ <id>REG_FFDC_TEST_X_EX_REGISTERS</id>
<childTargets>
- <parent>UNIT_TEST_FFDC_MASTER_CHIP_TARGET</parent>
+ <parent>UNIT_TEST_CHIP_TARGET</parent>
<childType>TARGET_TYPE_EX_CHIPLET</childType>
</childTargets>
- </collectRegisterFfdc> -->
-
+ </collectRegisterFfdc>
-<!-- Collect register FFDC based on present children -->
+ <!-- Collect register FFDC based on present children -->
<collectRegisterFfdc>
<id>REG_FFDC_TEST_X_PROC_REGISTERS_PRES_CHILDREN</id>
<basedOnPresentChildren>
- <target>UNIT_TEST_FFDC_MASTER_CHIP_TARGET</target>
+ <target>UNIT_TEST_CHIP_TARGET</target>
<childType>TARGET_TYPE_EX_CHIPLET</childType>
<childPosOffsetMultiplier>0x01000000</childPosOffsetMultiplier>
</basedOnPresentChildren>
</collectRegisterFfdc>
<!-- Call hwpTestFfdc1 to collect additional FFDC from the master chip -->
- <collectFfdc>hwpTestFfdc1, UNIT_TEST_FFDC_MASTER_CHIP_TARGET</collectFfdc>
+ <collectFfdc>hwpTestFfdc1, UNIT_TEST_CHIP_TARGET</collectFfdc>
<!-- Add some integer data as FFDC -->
<ffdc>UNIT_TEST_FFDC_DATA_INTEGER</ffdc>
<!-- Add an ecmdDataBufferBase as FFDC -->
<ffdc>UNIT_TEST_FFDC_DATA_BUF</ffdc>
<!-- Add a Target as FFDC -->
- <ffdc>UNIT_TEST_FFDC_MASTER_CHIP_TARGET</ffdc>
+ <ffdc>UNIT_TEST_CHIP_TARGET</ffdc>
<!-- Callout next level of support -->
<callout>
<procedure>LVL_SUPPORT</procedure>
@@ -93,34 +104,34 @@
<!-- Callout a bus - in reality, the two targets would be different -->
<!-- Commented out to avoid actually calling out a bus in UT
<callout>
- <bus>UNIT_TEST_FFDC_MASTER_CHIP_TARGET,UNIT_TEST_FFDC_MASTER_CHIP_TARGET</bus>
+ <bus>UNIT_TEST_CHIP_TARGET,UNIT_TEST_CHIP_TARGET</bus>
<priority>MEDIUM</priority>
</callout>
-->
<!-- Callout MASTER_CHIP HIGH -->
<!-- Commented out to avoid actually calling out a chip in UT
<callout>
- <target>UNIT_TEST_FFDC_MASTER_CHIP_TARGET</target>
+ <target>UNIT_TEST_CHIP_TARGET</target>
<priority>HIGH</priority>
</callout>
-->
<!-- Deconfigure MASTER_CHIP -->
<!-- Commented out to avoid actually deconfiuring a chip in UT
<deconfigure>
- <target>UNIT_TEST_FFDC_MASTER_CHIP_TARGET</target>
+ <target>UNIT_TEST_CHIP_TARGET</target>
</deconfigure>
-->
<!-- Create GARD record for MASTER_CHIP -->
<!-- Commented out to avoid actually GARDing a chip in UT
<gard>
- <target>UNIT_TEST_FFDC_MASTER_CHIP_TARGET</target>
+ <target>UNIT_TEST_CHIP_TARGET</target>
</gard>
-->
<!-- Callout MASTER_CHIP's EX chiplets MEDIUM -->
<!-- Commented out to avoid actually calling out chiplets in UT
<callout>
<childTargets>
- <parent>UNIT_TEST_FFDC_MASTER_CHIP_TARGET</parent>
+ <parent>UNIT_TEST_CHIP_TARGET</parent>
<childType>TARGET_TYPE_EX_CHIPLET</childType>
</childTargets>
<priority>MEDIUM</priority>
@@ -130,7 +141,7 @@
<!-- Commented out to avoid actually calling out chiplets in UT
<callout>
<childTargets>
- <parent>UNIT_TEST_FFDC_MASTER_CHIP_TARGET</parent>
+ <parent>UNIT_TEST_CHIP_TARGET</parent>
<childType>TARGET_TYPE_EX_CHIPLET</childType>
<childNumber>4</childNumber>
</childTargets>
@@ -141,7 +152,7 @@
<!-- Commented out to avoid actually calling out chips in UT
<callout>
<childTargets>
- <parent>UNIT_TEST_FFDC_MASTER_CHIP_TARGET</parent>
+ <parent>UNIT_TEST_CHIP_TARGET</parent>
<childType>TARGET_TYPE_MEMBUF_CHIP</childType>
<childNumber>4</childNumber>
</childTargets>
@@ -152,7 +163,7 @@
<!-- Commented out to avoid actually deconfiguring chiplets in UT
<deconfigure>
<childTargets>
- <parent>UNIT_TEST_FFDC_MASTER_CHIP_TARGET</parent>
+ <parent>UNIT_TEST_CHIP_TARGET</parent>
<childType>TARGET_TYPE_ABUS_ENDPOINT</childType>
</childTargets>
</deconfigure>
@@ -162,7 +173,7 @@
<callout>
<hw>
<hwid>PCI_REF_CLOCK</hwid>
- <refTarget>UNIT_TEST_FFDC_MASTER_CHIP_TARGET</refTarget>
+ <refTarget>UNIT_TEST_CHIP_TARGET</refTarget>
</hw>
<priority>MEDIUM</priority>
</callout>
diff --git a/src/usr/hwpf/hwp/fapiTestHwpError.C b/src/usr/hwpf/hwp/fapiTestHwpError.C
index 93cf17851..d0bdf6410 100644
--- a/src/usr/hwpf/hwp/fapiTestHwpError.C
+++ b/src/usr/hwpf/hwp/fapiTestHwpError.C
@@ -73,7 +73,8 @@ fapi::ReturnCode hwpTestError(const fapi::Target & i_procTarget,
l_buf.setBit(64);
FAPI_ERR("hwpTestError: Generating RC_TEST_ERROR_A");
- const fapi::Target & UNIT_TEST_FFDC_MASTER_CHIP_TARGET = i_procTarget;
+ const fapi::Target & UNIT_TEST_CHIP_TARGET = i_procTarget;
+ const fapi::Target & UNIT_TEST_MBA_TARGET = i_mbaTarget;
uint32_t & UNIT_TEST_FFDC_DATA_INTEGER = l_ffdc;
ecmdDataBufferBase & UNIT_TEST_FFDC_DATA_BUF = l_buf;
FAPI_SET_HWP_ERROR(l_rc, RC_TEST_ERROR_A);
@@ -84,21 +85,16 @@ fapi::ReturnCode hwpTestError(const fapi::Target & i_procTarget,
// Check that the return code is set to success
if (!l_rc.ok())
{
- FAPI_ERR("Performing HWP: hwpTestError: rc is 0x%x, " \
+ FAPI_ERR("Performing HWP: hwpTestError: rc is 0x%x, "
"expected success", static_cast<uint32_t>(l_rc));
}
-
FAPI_INF("Test calling out all DIMMs based on mba port 0");
// all dimms on a specific port
FAPI_ERR("Generating RC_TEST_DIMM_CALLOUT_MBA_A");
-
- const fapi::Target & UNIT_TEST_MBA_TARGET = i_mbaTarget;
uint8_t UNIT_TEST_MBA_PORT_NUMBER = 0x0;
-
FAPI_SET_HWP_ERROR(l_rc, RC_TEST_DIMM_CALLOUT_MBA_A);
-
fapiLogError( l_rc,fapi::FAPI_ERRL_SEV_PREDICTIVE, true );
// specific dimm on a specific port
@@ -108,28 +104,22 @@ fapi::ReturnCode hwpTestError(const fapi::Target & i_procTarget,
uint8_t UNIT_TEST_DIMM_NUMBER = 0x01;
FAPI_ERR("Generating RC_TEST_DIMM_CALLOUT_MBA_B");
-
FAPI_SET_HWP_ERROR(l_rc, RC_TEST_DIMM_CALLOUT_MBA_B);
-
fapiLogError( l_rc,fapi::FAPI_ERRL_SEV_PREDICTIVE, true );
-
FAPI_INF("Test calling out all dimms of an mba");
// all dimms on an mba target
FAPI_ERR("Generating RC_TEST_DIMM_CALLOUT_MBA_C");
-
FAPI_SET_HWP_ERROR(l_rc, RC_TEST_DIMM_CALLOUT_MBA_C);
-
fapiLogError( l_rc,fapi::FAPI_ERRL_SEV_PREDICTIVE, true );
// commented out due to ci test failing on deconfigured parts
FAPI_INF("Test deconfigure all dimms of mba with port 0 specified");
UNIT_TEST_MBA_PORT_NUMBER = 0x0;
+
// deconfigure all dimms on port 0
FAPI_ERR("Generating RC_TEST_DIMM_DECONFIGURE_MBA_A ");
-
FAPI_SET_HWP_ERROR(l_rc,RC_TEST_DIMM_DECONFIGURE_MBA_A);
-
fapiLogError( l_rc,fapi::FAPI_ERRL_SEV_PREDICTIVE, true );
FAPI_INF("Test gard of DIMM2");
@@ -138,9 +128,7 @@ fapi::ReturnCode hwpTestError(const fapi::Target & i_procTarget,
UNIT_TEST_MBA_PORT_NUMBER = 0x01;
FAPI_ERR("Generating RC_TEST_DIMM_GARD_MBA_B ");
-
FAPI_SET_HWP_ERROR(l_rc, RC_TEST_DIMM_GARD_MBA_B);
-
fapiLogError( l_rc,fapi::FAPI_ERRL_SEV_PREDICTIVE, true );
// Generate the same error again need to return an error
OpenPOWER on IntegriCloud