diff options
Diffstat (limited to 'src/usr')
7 files changed, 516 insertions, 7 deletions
diff --git a/src/usr/hwpf/hwp/slave_sbe/makefile b/src/usr/hwpf/hwp/slave_sbe/makefile index c835a16cd..9e8c71cf4 100644 --- a/src/usr/hwpf/hwp/slave_sbe/makefile +++ b/src/usr/hwpf/hwp/slave_sbe/makefile @@ -5,7 +5,9 @@ # # OpenPOWER HostBoot Project # -# COPYRIGHT International Business Machines Corp. 2012,2014 +# Contributors Listed Below - COPYRIGHT 2012,2014 +# [+] International Business Machines Corp. +# # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -42,7 +44,7 @@ EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_getecid EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_cen_ref_clk_enable EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_spless_sbe_startWA EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/build_winkle_images/proc_mailbox_utils - +EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_tp_collect_dbg_data ## NOTE: add new object files when you add a new HWP OBJS += slave_sbe.o @@ -55,6 +57,7 @@ OBJS += proc_cen_ref_clk_enable.o OBJS += proc_spless_sbe_startWA.o OBJS += proc_reset_i2cm_bus_fence.o OBJS += proc_check_master_sbe_seeprom.o +OBJS += proc_tp_collect_dbg_data.o ## NOTE: add a new directory onto the vpaths when you add a new HWP VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_cen_ref_clk_enable @@ -62,7 +65,7 @@ VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_revert_sbe_mcs_setup VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_getecid VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_spless_sbe_startWA - +VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_tp_collect_dbg_data include ${ROOTPATH}/config.mk diff --git a/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_extract_sbe_rc.C b/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_extract_sbe_rc.C index 8210b9900..d4151fa40 100644 --- a/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_extract_sbe_rc.C +++ b/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_extract_sbe_rc.C @@ -23,13 +23,13 @@ /* */ /* IBM_PROLOG_END_TAG */ // -*- mode: C++; c-file-style: "linux"; -*- -// $Id: proc_extract_sbe_rc.C,v 1.17 2014/03/24 20:34:44 jmcgill Exp $ +// $Id: proc_extract_sbe_rc.C,v 1.18 2014/06/30 14:32:05 bgeukes Exp $ // $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_extract_sbe_rc.C,v $ //------------------------------------------------------------------------------ // *| // *! (C) Copyright International Business Machines Corp. 2012 // *! All Rights Reserved -- Property of IBM -// *! *** *** +// *! *** IBM Confidential *** // *| // *! TITLE : proc_extract_sbe_rc.C // *! DESCRIPTION : Create a return code for an SBE/SLW error @@ -54,6 +54,7 @@ #include <proc_extract_sbe_rc.H> #include <proc_reset_i2cm_bus_fence.H> #include <p8_scom_addresses.H> +#include <proc_tp_collect_dbg_data.H> //------------------------------------------------------------------------------ diff --git a/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_extract_sbe_rc_errors.xml b/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_extract_sbe_rc_errors.xml index f47de1461..a51a4a61f 100644 --- a/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_extract_sbe_rc_errors.xml +++ b/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_extract_sbe_rc_errors.xml @@ -5,7 +5,9 @@ <!-- --> <!-- OpenPOWER HostBoot Project --> <!-- --> -<!-- COPYRIGHT International Business Machines Corp. 2012,2014 --> +<!-- Contributors Listed Below - COPYRIGHT 2012,2014 --> +<!-- [+] International Business Machines Corp. --> +<!-- --> <!-- --> <!-- Licensed under the Apache License, Version 2.0 (the "License"); --> <!-- you may not use this file except in compliance with the License. --> @@ -20,7 +22,7 @@ <!-- permissions and limitations under the License. --> <!-- --> <!-- IBM_PROLOG_END_TAG --> -<!-- $Id: proc_extract_sbe_rc_errors.xml,v 1.14 2014/03/24 20:34:12 jmcgill Exp $ --> +<!-- $Id: proc_extract_sbe_rc_errors.xml,v 1.15 2014/06/30 14:33:53 bgeukes Exp $ --> <!-- Error definitions for proc_extract_sbe_rc procedure --> <hwpErrors> <!-- *********************************************************************** --> @@ -285,6 +287,7 @@ <id>REG_FFDC_PROC_MBOX_REGISTERS</id> <target>CHIP_IN_ERROR</target> </collectRegisterFfdc> + <collectFfdc>proc_tp_collect_dbg_data,CHIP_IN_ERROR</collectFfdc> <callout> <target>CHIP_IN_ERROR</target> <priority>HIGH</priority> @@ -314,6 +317,7 @@ <id>REG_FFDC_PROC_MBOX_REGISTERS</id> <target>CHIP_IN_ERROR</target> </collectRegisterFfdc> + <collectFfdc>proc_tp_collect_dbg_data,CHIP_IN_ERROR</collectFfdc> <callout> <target>CHIP_IN_ERROR</target> <priority>HIGH</priority> @@ -337,6 +341,7 @@ <id>REG_FFDC_PROC_MBOX_REGISTERS</id> <target>CHIP_IN_ERROR</target> </collectRegisterFfdc> + <collectFfdc>proc_tp_collect_dbg_data,CHIP_IN_ERROR</collectFfdc> <callout> <target>CHIP_IN_ERROR</target> <priority>HIGH</priority> @@ -360,6 +365,7 @@ <id>REG_FFDC_PROC_MBOX_REGISTERS</id> <target>CHIP_IN_ERROR</target> </collectRegisterFfdc> + <collectFfdc>proc_tp_collect_dbg_data,CHIP_IN_ERROR</collectFfdc> <callout> <target>CHIP_IN_ERROR</target> <priority>HIGH</priority> @@ -416,6 +422,7 @@ <id>REG_FFDC_PROC_MBOX_REGISTERS</id> <target>CHIP_IN_ERROR</target> </collectRegisterFfdc> + <collectFfdc>proc_tp_collect_dbg_data,CHIP_IN_ERROR</collectFfdc> <callout> <target>CHIP_IN_ERROR</target> <priority>HIGH</priority> @@ -443,6 +450,7 @@ <id>REG_FFDC_PROC_SLW_REGISTERS</id> <target>CHIP_IN_ERROR</target> </collectRegisterFfdc> + <collectFfdc>proc_tp_collect_dbg_data,CHIP_IN_ERROR</collectFfdc> <callout> <target>CHIP_IN_ERROR</target> <priority>HIGH</priority> @@ -469,6 +477,7 @@ <id>REG_FFDC_PROC_SLW_REGISTERS</id> <target>CHIP_IN_ERROR</target> </collectRegisterFfdc> + <collectFfdc>proc_tp_collect_dbg_data,CHIP_IN_ERROR</collectFfdc> <callout> <target>CHIP_IN_ERROR</target> <priority>HIGH</priority> @@ -498,6 +507,7 @@ <id>REG_FFDC_PROC_MBOX_REGISTERS</id> <target>CHIP_IN_ERROR</target> </collectRegisterFfdc> + <collectFfdc>proc_tp_collect_dbg_data,CHIP_IN_ERROR</collectFfdc> <callout> <target>CHIP_IN_ERROR</target> <priority>HIGH</priority> @@ -524,6 +534,7 @@ <id>REG_FFDC_PROC_SLW_REGISTERS</id> <target>CHIP_IN_ERROR</target> </collectRegisterFfdc> + <collectFfdc>proc_tp_collect_dbg_data,CHIP_IN_ERROR</collectFfdc> <callout> <target>CHIP_IN_ERROR</target> <priority>HIGH</priority> @@ -647,6 +658,7 @@ <id>REG_FFDC_PROC_FIRST_OTPROM_INSTRUCTIONS</id> <target>CHIP_IN_ERROR</target> </collectRegisterFfdc> + <collectFfdc>proc_tp_collect_dbg_data,CHIP_IN_ERROR</collectFfdc> <callout> <target>CHIP_IN_ERROR</target> <priority>HIGH</priority> @@ -730,6 +742,7 @@ <id>REG_FFDC_PROC_FIRST_OTPROM_INSTRUCTIONS</id> <target>CHIP_IN_ERROR</target> </collectRegisterFfdc> + <collectFfdc>proc_tp_collect_dbg_data,CHIP_IN_ERROR</collectFfdc> <callout> <target>CHIP_IN_ERROR</target> <priority>HIGH</priority> diff --git a/src/usr/hwpf/hwp/slave_sbe/proc_tp_collect_dbg_data/proc_tp_collect_dbg_data.C b/src/usr/hwpf/hwp/slave_sbe/proc_tp_collect_dbg_data/proc_tp_collect_dbg_data.C new file mode 100644 index 000000000..dcaf271f9 --- /dev/null +++ b/src/usr/hwpf/hwp/slave_sbe/proc_tp_collect_dbg_data/proc_tp_collect_dbg_data.C @@ -0,0 +1,354 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/hwpf/hwp/slave_sbe/proc_tp_collect_dbg_data/proc_tp_collect_dbg_data.C $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2014 */ +/* [+] International Business Machines Corp. */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ +// $Id: proc_tp_collect_dbg_data.C,v 1.6 2014/08/04 16:00:49 thi Exp $ +// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_tp_collect_dbg_data.C,v $ +//------------------------------------------------------------------------------ +// *! (C) Copyright International Business Machines Corp. 2012 +// *! All Rights Reserved -- Property of IBM +// *! *** IBM Confidential *** +//------------------------------------------------------------------------------ +// *! TITLE : proc_tp_collect_dbg_data.C +// *! DESCRIPTION : Procedure to collect TP debug data +// *! +// *! OWNER NAME : Benedikt Geukes Email: bgeukes@de.ibm.com +// *! +// *! ADDITIONAL COMMENTS : +// *! +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ +// Includes +//------------------------------------------------------------------------------ +#include <proc_tp_collect_dbg_data.H> +#include <utility> +//------------------------------------------------------------------------------ +// Constant definitions +//------------------------------------------------------------------------------ + +const uint32_t PROC_TP_COLLECT_DBG_DATA_FSI_SHIFT_CTRL = 0x00000043; + +const uint32_t PERV_VITL_CHAIN_RING_ADDRESS = 0x0103800C; + +// Murano DD1.x +const uint32_t PERV_VITL_CHAIN_LENGTH_MDD1 = 2310; +const uint32_t TP_VITL_SPY_LENGTH_MDD1 = 576; +const std::pair<uint32_t,uint32_t> TP_VITL_SPY_OFFSETS_MDD1[] = +{ + std::make_pair(1197, 1260), + std::make_pair(1342, 1392), + std::make_pair(1401, 1403), + std::make_pair(1641, 1641), + std::make_pair(1644, 1665), + std::make_pair(1667, 1679), + std::make_pair(1688, 1943), + std::make_pair(1963, 2005), + std::make_pair(1503, 1520), + std::make_pair( 849, 889), + std::make_pair( 744, 807) +}; + +// Murano DD2.x +const uint32_t PERV_VITL_CHAIN_LENGTH_MDD2 = 2288; +const uint32_t TP_VITL_SPY_LENGTH_MDD2 = 590; +const std::pair<uint32_t,uint32_t> TP_VITL_SPY_OFFSETS_MDD2[] = +{ + std::make_pair(1176, 1239), + std::make_pair(1321, 1344), + std::make_pair(1365, 1371), + std::make_pair(1430, 1456), + std::make_pair(1465, 1467), + std::make_pair(1479, 1479), + std::make_pair(1482, 1503), + std::make_pair(1505, 1524), + std::make_pair(1533, 1788), + std::make_pair(1808, 1850), + std::make_pair(1893, 1910), + std::make_pair( 849, 889), + std::make_pair( 744, 807) +}; + +// Venice / Naples DD1.x +const uint32_t PERV_VITL_CHAIN_LENGTH_VN = 2773; +const uint32_t TP_VITL_SPY_LENGTH_VN = 590; +const std::pair<uint32_t,uint32_t> TP_VITL_SPY_OFFSETS_VN[] = +{ + std::make_pair( 209, 272), + std::make_pair( 354, 377), + std::make_pair( 398, 404), + std::make_pair( 463, 489), + std::make_pair( 498, 500), + std::make_pair( 512, 512), + std::make_pair( 515, 536), + std::make_pair( 538, 557), + std::make_pair( 566, 821), + std::make_pair( 841, 883), + std::make_pair( 926, 943), + std::make_pair(2608, 2648), + std::make_pair(2503, 2566) +}; + + +//------------------------------------------------------------------------------ +// Function definitions +//------------------------------------------------------------------------------ + +extern "C" { + +// HWP entry point, comments in header +fapi::ReturnCode proc_tp_collect_dbg_data(const fapi::Target & i_target, + fapi::ReturnCode & o_rc) +{ + fapi::ReturnCode rc; + uint32_t rc_ecmd = 0; + + uint8_t chip_type; + uint8_t dd_level; + ecmdDataBufferBase ring_data; + ecmdDataBufferBase spy_data; + std::vector<std::pair<uint32_t, uint32_t> > spy_offsets; + ecmdDataBufferBase fsi_data(32); + ecmdDataBufferBase scom_data(64); + + // mark HWP entry + FAPI_INF("proc_tp_collect_dbg_data: Start"); + + do + { + // Setting Prevent AutoStart Bit to avoid scan chain corruption + rc = fapiGetCfamRegister(i_target, CFAM_FSI_SBE_VITAL_0x0000281C, fsi_data); + if (rc) + { + FAPI_ERR("proc_tp_collect_dbg_data: fapiGetCfamRegister error (CFAM_FSI_SBE_VITAL_0x0000281c)"); + break; + } + + rc_ecmd |= fsi_data.setBit(1); + rc_ecmd |= fsi_data.setBit(3); + if (rc_ecmd) + { + FAPI_ERR("proc_tp_collect_dbg_data: Error 0x%x setting up FSI SBE Vital Register", + rc_ecmd); + rc.setEcmdError(rc_ecmd); + break; + } + + rc = fapiPutCfamRegister(i_target, CFAM_FSI_SBE_VITAL_0x0000281C, fsi_data); + if (rc) + { + FAPI_ERR("proc_tp_collect_dbg_data: fapiPutCfamRegister error (CFAM_FSI_SBE_VITAL_0x0000281C)"); + break; + } + + + // Setting FSI Shift Speed + rc = fapiGetCfamRegister(i_target, CFAM_FSI_SHIFT_CTRL_0x00000C10, fsi_data); + if (rc) + { + FAPI_ERR("proc_tp_collect_dbg_data: fapiGetCfamRegister error (CFAM_FSI_SHIFT_CTRL_0x00000C10)"); + break; + } + + rc_ecmd |= fsi_data.setWord(0,PROC_TP_COLLECT_DBG_DATA_FSI_SHIFT_CTRL); + if (rc_ecmd) + { + FAPI_ERR("proc_tp_collect_dbg_data: Error 0x%x setting up FSI SHIFT CTRL register data buffer", + rc_ecmd); + rc.setEcmdError(rc_ecmd); + break; + } + + rc = fapiPutCfamRegister(i_target, CFAM_FSI_SHIFT_CTRL_0x00000C10, fsi_data); + if (rc) + { + FAPI_ERR("proc_tp_collect_dbg_data: fapiPutCfamRegister error (CFAM_FSI_SHIFT_CTRL_0x00000C10)"); + break; + } + + // Changing Fences for Vital scan + rc = fapiGetCfamRegister(i_target, CFAM_FSI_GP3_0x00002812, fsi_data); + if (rc) + { + FAPI_ERR("proc_tp_collect_dbg_data: fapiGetCfamRegister error (CFAM_FSI_GP3_0x00002812)"); + break; + } + + rc_ecmd |= fsi_data.clearBit(23); + rc_ecmd |= fsi_data.setBit(24); + rc_ecmd |= fsi_data.setBit(25); + rc_ecmd |= fsi_data.setBit(26); + rc_ecmd |= fsi_data.clearBit(27); + if (rc_ecmd) + { + FAPI_ERR("proc_tp_collect_dbg_data: Error 0x%x setting up FSI GP3 data buffer", + rc_ecmd); + rc.setEcmdError(rc_ecmd); + break; + } + + rc = fapiPutCfamRegister(i_target, CFAM_FSI_GP3_0x00002812, fsi_data); + if (rc) + { + FAPI_ERR("proc_tp_collect_dbg_data: fapiPutCfamRegister error (CFAM_FSI_GP3_0x00002812)"); + break; + } + + rc = fapiGetCfamRegister(i_target, CFAM_FSI_GP3_MIRROR_0x0000281B, fsi_data); + if (rc) + { + FAPI_ERR("proc_tp_collect_dbg_data: fapiGetCfamRegister error (CFAM_FSI_GP3_MIRROR_0x0000281B)"); + break; + } + + rc_ecmd |= fsi_data.setBit(16); + if (rc_ecmd) + { + FAPI_ERR("proc_tp_collect_dbg_data: Error 0x%x setting up FSI GP3 MIRROR data buffer", + rc_ecmd); + rc.setEcmdError(rc_ecmd); + break; + } + + rc = fapiPutCfamRegister(i_target, CFAM_FSI_GP3_MIRROR_0x0000281B, fsi_data); + if (rc) + { + FAPI_ERR("proc_tp_collect_dbg_data: fapiPutCfamRegister error (CFAM_FSI_GP3_MIRROR_0x0000281B)"); + break; + } + + rc = fapiGetCfamRegister(i_target, CFAM_FSI_GP3_MIRROR_0x0000281B, fsi_data); + if (rc) + { + FAPI_ERR("proc_tp_collect_dbg_data: fapiGetCfamRegister error (CFAM_FSI_GP3_MIRROR_0x0000281B)"); + break; + } + + rc_ecmd |= fsi_data.setBit(26); + if (rc_ecmd) + { + FAPI_ERR("proc_tp_collect_dbg_data: Error 0x%x setting up FSI GP3 MIRROR data buffer", + rc_ecmd); + rc.setEcmdError(rc_ecmd); + break; + } + + rc = fapiPutCfamRegister(i_target, CFAM_FSI_GP3_MIRROR_0x0000281B, fsi_data); + if (rc) + { + FAPI_ERR("proc_tp_collect_dbg_data: fapiPutCfamRegister error (CFAM_FSI_GP3_MIRROR_0x0000281B)"); + break; + } + + // obtain chip type/EC + rc = FAPI_ATTR_GET_PRIVILEGED(ATTR_NAME, &i_target, chip_type); + if (rc) + { + FAPI_ERR("proc_tp_collect_dbg_data: Error from FAPI_ATTR_GET_PRIVILEGED (ATTR_NAME)"); + break; + } + + rc = FAPI_ATTR_GET_PRIVILEGED(ATTR_EC, &i_target, dd_level); + if (rc) + { + FAPI_ERR("proc_tp_collect_dbg_data: Error from FAPI_ATTR_GET_PRIVILEGED (ATTR_EC)"); + break; + } + // configure ring/spy data buffers & spy extraction offsets based on CT/EC + if ((chip_type == fapi::ENUM_ATTR_NAME_MURANO) && (dd_level < 0x20)) + { + rc_ecmd |= ring_data.setBitLength(PERV_VITL_CHAIN_LENGTH_MDD1); + rc_ecmd |= spy_data.setBitLength(TP_VITL_SPY_LENGTH_MDD1); + spy_offsets.assign(TP_VITL_SPY_OFFSETS_MDD1, TP_VITL_SPY_OFFSETS_MDD1 + (sizeof(TP_VITL_SPY_OFFSETS_MDD1) / sizeof(TP_VITL_SPY_OFFSETS_MDD1[0]))); + } + else if ((chip_type == fapi::ENUM_ATTR_NAME_MURANO) && (dd_level >= 0x20)) + { + rc_ecmd |= ring_data.setBitLength(PERV_VITL_CHAIN_LENGTH_MDD2); + rc_ecmd |= spy_data.setBitLength(TP_VITL_SPY_LENGTH_MDD2); + spy_offsets.assign(TP_VITL_SPY_OFFSETS_MDD2, TP_VITL_SPY_OFFSETS_MDD2 + (sizeof(TP_VITL_SPY_OFFSETS_MDD2) / sizeof(TP_VITL_SPY_OFFSETS_MDD2[0]))); + } + else if ((chip_type == fapi::ENUM_ATTR_NAME_VENICE) || + (chip_type == fapi::ENUM_ATTR_NAME_NAPLES)) + { + rc_ecmd |= ring_data.setBitLength(PERV_VITL_CHAIN_LENGTH_VN); + rc_ecmd |= spy_data.setBitLength(TP_VITL_SPY_LENGTH_VN); + spy_offsets.assign(TP_VITL_SPY_OFFSETS_VN, TP_VITL_SPY_OFFSETS_VN + (sizeof(TP_VITL_SPY_OFFSETS_VN) / sizeof(TP_VITL_SPY_OFFSETS_VN[0]))); + } + else + { + FAPI_ERR("proc_tp_collect_dbg_data: Unsupported CT/EC combination!"); + const uint8_t CT = chip_type; + const uint8_t EC = dd_level; + FAPI_SET_HWP_ERROR(rc, RC_TP_COLLECT_DBG_DATA_UNSUPPORTED_CHIP); + break; + } + if (rc_ecmd) + { + FAPI_ERR("proc_tp_collect_dbg_data: Error 0x%x sizing FFDC data buffers", + rc_ecmd); + rc.setEcmdError(rc_ecmd); + break; + } + + // collect data from ring + rc = fapiGetRing(i_target, PERV_VITL_CHAIN_RING_ADDRESS, ring_data); + if (rc) + { + FAPI_ERR("proc_tp_collect_dbg_data: Error from fapiGetRing (PERV_VITL_CHAIN)"); + break; + } + + // extract spy data from ring image + uint32_t spy_offset_curr = 0; + for (std::vector<std::pair<uint32_t, uint32_t> >::const_iterator offset = spy_offsets.begin(); + offset != spy_offsets.end(); + offset++) + { + uint32_t chunk_size = (offset->second - offset->first + 1); + rc_ecmd |= spy_data.insert(ring_data, + spy_offset_curr, + chunk_size, + offset->first); + spy_offset_curr += chunk_size; + } + + if (rc_ecmd) + { + FAPI_ERR("proc_tp_collect_dbg_data: Error 0x%x forming FFDC spy data buffer", + rc_ecmd); + rc.setEcmdError(rc_ecmd); + break; + } + + ecmdDataBufferBase & VITL_DATA = spy_data; + FAPI_ADD_INFO_TO_HWP_ERROR(o_rc, RC_TP_COLLECT_DBG_DATA); + + } while(0); + + // mark HWP exit + FAPI_INF("proc_tp_collect_dbg_data: End"); + return rc; +} + + +} // extern "C" diff --git a/src/usr/hwpf/hwp/slave_sbe/proc_tp_collect_dbg_data/proc_tp_collect_dbg_data.H b/src/usr/hwpf/hwp/slave_sbe/proc_tp_collect_dbg_data/proc_tp_collect_dbg_data.H new file mode 100644 index 000000000..04ef54421 --- /dev/null +++ b/src/usr/hwpf/hwp/slave_sbe/proc_tp_collect_dbg_data/proc_tp_collect_dbg_data.H @@ -0,0 +1,79 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/hwpf/hwp/slave_sbe/proc_tp_collect_dbg_data/proc_tp_collect_dbg_data.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2014 */ +/* [+] International Business Machines Corp. */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ +// $Id: proc_tp_collect_dbg_data.H,v 1.3 2014/03/10 16:09:15 jmcgill Exp $ +// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_tp_collect_dbg_data.H,v $ +///------------------------------------------------------------------------------ +// *! (C) Copyright International Business Machines Corp. 2012 +// *! All Rights Reserved -- Property of IBM +// *! *** IBM Confidential *** +//------------------------------------------------------------------------------ +// *! TITLE : proc_tp_collect_dbg_data.C +// *! DESCRIPTION : Header file for procedure to collect TP debug data +// *! +// *! OWNER NAME : Benedikt Geukes Email: bgeukes@de.ibm.com +// *! +// *! ADDITIONAL COMMENTS : +// *! +//------------------------------------------------------------------------------ + +#ifndef PROC_TP_COLLECT_DBG_DATA_H_ +#define PROC_TP_COLLECT_DBG_DATA_H_ + +//------------------------------------------------------------------------------ +// Includes +//------------------------------------------------------------------------------ +#include <fapi.H> +#include <p8_scom_addresses.H> +#include <common_scom_addresses.H> + +//------------------------------------------------------------------------------ +// Structure definitions +//------------------------------------------------------------------------------ + +// function pointer typedef definition for HWP call support +typedef fapi::ReturnCode +(*proc_tp_collect_dbg_data_FP_t)(const fapi::Target &, fapi::ReturnCode &); + +extern "C" { + +//------------------------------------------------------------------------------ +// Function prototypes +//------------------------------------------------------------------------------ + +/** + * @brief HWP to collect TP debug data for fails during various IPL steps + * + * + * @param[in] i_target Reference to processor chip target + * @param[out] o_rc Reference to return code (for appending of FFDC) + * + * @return ReturnCode + */ +fapi::ReturnCode proc_tp_collect_dbg_data(const fapi::Target & i_target, fapi::ReturnCode & o_rc); + + +} // extern "C" + +#endif // PROC_TP_COLLECT_DBG_DATA_H_ diff --git a/src/usr/hwpf/hwp/slave_sbe/proc_tp_collect_dbg_data/proc_tp_collect_dbg_data.xml b/src/usr/hwpf/hwp/slave_sbe/proc_tp_collect_dbg_data/proc_tp_collect_dbg_data.xml new file mode 100644 index 000000000..7f7565438 --- /dev/null +++ b/src/usr/hwpf/hwp/slave_sbe/proc_tp_collect_dbg_data/proc_tp_collect_dbg_data.xml @@ -0,0 +1,58 @@ +<!-- IBM_PROLOG_BEGIN_TAG --> +<!-- This is an automatically generated prolog. --> +<!-- --> +<!-- $Source: src/usr/hwpf/hwp/slave_sbe/proc_tp_collect_dbg_data/proc_tp_collect_dbg_data.xml $ --> +<!-- --> +<!-- OpenPOWER HostBoot Project --> +<!-- --> +<!-- Contributors Listed Below - COPYRIGHT 2014 --> +<!-- [+] International Business Machines Corp. --> +<!-- --> +<!-- --> +<!-- Licensed under the Apache License, Version 2.0 (the "License"); --> +<!-- you may not use this file except in compliance with the License. --> +<!-- You may obtain a copy of the License at --> +<!-- --> +<!-- http://www.apache.org/licenses/LICENSE-2.0 --> +<!-- --> +<!-- Unless required by applicable law or agreed to in writing, software --> +<!-- distributed under the License is distributed on an "AS IS" BASIS, --> +<!-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or --> +<!-- implied. See the License for the specific language governing --> +<!-- permissions and limitations under the License. --> +<!-- --> +<!-- IBM_PROLOG_END_TAG --> +<!-- $Id: proc_tp_collect_dbg_data.xml,v 1.4 2014/08/03 21:12:47 jmcgill Exp $ --> +<!-- Error definitions for proc_tp_collect_dbg_data procedure --> +<hwpErrors> + <!-- *********************************************************************** --> + <hwpError> + <rc>RC_TP_COLLECT_DBG_DATA</rc> + <description> + Procedure: proc_tp_collect_dbg_data + </description> + <ffdc>VITL_DATA</ffdc> + <collectTrace>FSI</collectTrace> + <collectTrace>SCOM</collectTrace> + <collectTrace>SCAN</collectTrace> + <collectTrace>MBOX</collectTrace> + </hwpError> + <!-- *********************************************************************** --> + <hwpError> + <rc>RC_TP_COLLECT_DBG_DATA_UNSUPPORTED_CHIP</rc> + <description> + Procedure: proc_tp_collect_dbg_data + </description> + <ffdc>CT</ffdc> + <ffdc>EC</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> + <collectTrace>FSI</collectTrace> + <collectTrace>SCOM</collectTrace> + <collectTrace>SCAN</collectTrace> + <collectTrace>MBOX</collectTrace> + </hwpError> + <!-- *********************************************************************** --> +</hwpErrors> diff --git a/src/usr/hwpf/makefile b/src/usr/hwpf/makefile index ae437a1b6..7466ffba6 100644 --- a/src/usr/hwpf/makefile +++ b/src/usr/hwpf/makefile @@ -209,6 +209,7 @@ HWP_ATTR_XML_FILES += hwp/dram_training/mem_pll_setup/memb_pll_ring_attributes.x HWP_ATTR_XML_FILES += hwp/proc_chip_ec_feature.xml HWP_ATTR_XML_FILES += hwp/proc_abus_dmi_xbus_scominit_attributes.xml HWP_ATTR_XML_FILES += hwp/runtime_attributes/memory_occ_attributes.xml +HWP_ERROR_XML_FILES += hwp/slave_sbe/proc_tp_collect_dbg_data/proc_tp_collect_dbg_data.xml #------------------------------------------------------------------------------ # PLL Ring Data files |