diff options
author | Mike Jones <mjjones@us.ibm.com> | 2014-03-20 12:39:03 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-03-21 10:21:21 -0500 |
commit | 46e34007e23485adf58a0b3df32b36c262644133 (patch) | |
tree | 6edda8ad2bf9159d9b4aa1aaa84f9a758f6cb56b /src | |
parent | 62926fd3122c1d783212d22042232c45918eb102 (diff) | |
download | talos-hostboot-46e34007e23485adf58a0b3df32b36c262644133.tar.gz talos-hostboot-46e34007e23485adf58a0b3df32b36c262644133.zip |
Collection of Chiplet Register FFDC asserts
If any HWP generated error attempts to collect chiplet registers,
the generated FAPI code queries ATTR_POS and asserts.
Change-Id: Id35673dbb58c8baaa368913031fa3807eb7bb22b
Backport: release-fips810
CQ: SW252992
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/9777
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src')
-rwxr-xr-x | src/usr/hwpf/fapi/fapiParseErrorInfo.pl | 11 | ||||
-rw-r--r-- | src/usr/hwpf/hwp/fapiHwpErrorInfo.xml | 71 | ||||
-rw-r--r-- | src/usr/hwpf/hwp/fapiTestHwpError.C | 20 |
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 |