diff options
author | Thi Tran <thi@us.ibm.com> | 2013-03-03 13:02:38 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-03-05 12:18:09 -0600 |
commit | 2cd51b10fa1bf295a8b3b35553226aab5d103af7 (patch) | |
tree | aa256b43d22b0b85b36ecaea8dc0140ff8f02bca /src/usr/hwpf/hwp/build_winkle_images | |
parent | 6e96f79fbadb624ef2aac82c6f2e4743291c5dd7 (diff) | |
download | talos-hostboot-2cd51b10fa1bf295a8b3b35553226aab5d103af7.tar.gz talos-hostboot-2cd51b10fa1bf295a8b3b35553226aab5d103af7.zip |
TULETA Bring Up - HW procedures update 03/03/2013
Revert io_run_training to 1.28
Update from review comment
Change-Id: I2c94f24e3818ae1ffc6c629a5e904681e70205e2
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/3405
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp/build_winkle_images')
4 files changed, 182 insertions, 45 deletions
diff --git a/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_pcb_scom_errors.H b/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_pcb_scom_errors.H new file mode 100755 index 000000000..522960e67 --- /dev/null +++ b/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_pcb_scom_errors.H @@ -0,0 +1,59 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_pcb_scom_errors.H $ */ +/* */ +/* IBM CONFIDENTIAL */ +/* */ +/* COPYRIGHT International Business Machines Corp. 2013 */ +/* */ +/* 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 otherwise */ +/* divested of its trade secrets, irrespective of what has been */ +/* deposited with the U.S. Copyright Office. */ +/* */ +/* Origin: 30 */ +/* */ +/* IBM_PROLOG_END_TAG */ +// $Id: p8_pcb_scom_errors.H,v 1.3 2013/02/16 20:26:51 stillgs Exp $ +// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/p8_pcb_scom_errors.H,v $ +//------------------------------------------------------------------------------ +// *! (C) Copyright International Business Machines Corp. 2011 +// *! All Rights Reserved -- Property of IBM +// *! *** IBM Confidential *** +//------------------------------------------------------------------------------ +// *! OWNER NAME: Gebhard Weber Email: gweber@de.ibm.com +// *! +// *! General Description: Defines FFDC error codes for the procedures +// *! proc_timeout_error and proc_parity_error +//------------------------------------------------------------------------------ + +#ifndef P8_PCB_SCOM_ERRORS_H_ +#define P8_PCB_SCOM_ERRORS_H_ + +//------------------------------------------------------------------------------ +// Function definitions +//------------------------------------------------------------------------------ + +extern "C" { + + enum PCB_ERRORS { + PIB_NO_ERROR = 0x0, + PIB_XSCOM_ERROR = 0x1, + PIB_OFFLINE_ERROR = 0x2, + PIB_PARTIAL_ERROR = 0x3, + PIB_ADDRESS_ERROR = 0x4, + PIB_CLOCK_ERROR = 0x5, + PIB_PARITY_ERROR = 0x6, + PIB_TIMEOUT_ERROR = 0x7 + }; + +} // extern "C" + +#endif // P8_PCB_SCOM_ERRORS_H_ + diff --git a/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.C b/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.C index 67f945a36..806c7d475 100644 --- a/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.C +++ b/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.C @@ -20,7 +20,7 @@ /* Origin: 30 */ /* */ /* IBM_PROLOG_END_TAG */ -// $Id: p8_poreslw_init.C,v 1.9 2012/12/20 05:21:05 stillgs Exp $ +// $Id: p8_poreslw_init.C,v 1.11 2013/02/19 15:37:34 stillgs Exp $ // $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/p8_poreslw_init.C,v $ //------------------------------------------------------------------------------ // *! (C) Copyright International Business Machines Corp. 2011 @@ -65,6 +65,7 @@ #include "p8_poreslw_init.H" #include "p8_pfet_init.H" #include "p8_pmc_deconfig_setup.H" +#include "p8_pcb_scom_errors.H" extern "C" { @@ -331,6 +332,8 @@ poreslw_ex_setup(const Target& i_target) uint64_t address; bool core_flag = false; bool error_flag = false; + //@thi - fixed compiler error - Greg will fix this in next version + //uint32_t fsierror = 0; uint8_t pm_sleep_type; uint8_t pm_sleep_entry ; @@ -346,11 +349,11 @@ poreslw_ex_setup(const Target& i_target) const uint32_t PM_SLEEP_POWER_OFF_SEL_BIT = 2; const uint32_t PM_WINKLE_POWER_DOWN_EN_BIT = 3; const uint32_t PM_WINKLE_POWER_UP_EN_BIT = 4; - const uint32_t PM_WINKLE_POWER_OFF_SEL_BIT = 5; + const uint32_t PM_WINKLE_POWER_OFF_SEL_BIT = 5; - - const uint32_t IDLE_STATE_OVERRIDE_EN = 6; - const uint32_t PM_DISABLE = 0; + //@thi - fixed compiler error - Greg will fix this in next version + //const uint32_t IDLE_STATE_OVERRIDE_EN = 6; + const uint32_t PM_DISABLE = 0; do { @@ -475,12 +478,15 @@ poreslw_ex_setup(const Target& i_target) FAPI_INF("\tWARNING: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); - pm_sleep_entry = 1; // 0=HW, 1=assisted - pm_sleep_exit = 1; // 0=HW, 1=assisted + pm_sleep_entry = 0; // 0=assisted, 1=HW + pm_sleep_exit = 0; // 0=assisted, 1=HW pm_sleep_type = 1; // 0=fast, 1=deep - pm_winkle_entry = 1; // 0=HW, 1=assisted - pm_winkle_exit = 1; // 0=HW, 1=assisted + // Due to L3 Hight Availability Write Pointers that must be + // saved upon a Deep Winkle Entry, this transition must be + // assisted. + pm_winkle_entry = 0; // 0=assisted, 1=HW + pm_winkle_exit = 0; // 0=assisted, 1=HW pm_winkle_type = 1; // 0=fast, 1=deep @@ -508,28 +514,26 @@ poreslw_ex_setup(const Target& i_target) e_rc |= clear_data.flushTo1(); // Set to 1s to be used for WAND e_rc |= set_data.flushTo0(); // Set to 0s to be used for WOR - // If sleep entry = 1 (assisted), sleep power down enable = 0 - // else sleep entry = 0 (hardware), sleep power down enable = 1 + // If sleep entry = 1 (hardware), sleep power down enable = 1 + // else sleep entry = 0 (assisted), sleep power down enable = 0 if (pm_sleep_entry) - { - e_rc |= clear_data.clearBit(PM_SLEEP_POWER_DOWN_EN_BIT); - + { + e_rc |= set_data.setBit(PM_SLEEP_POWER_DOWN_EN_BIT); } else { - e_rc |= set_data.setBit(PM_SLEEP_POWER_DOWN_EN_BIT); + e_rc |= clear_data.clearBit(PM_SLEEP_POWER_DOWN_EN_BIT); } - // If sleep exit = 1 (assisted), sleep power up enable = 0 - // else sleep exit = 0 (hardware), sleep power up enable = 1 + // If sleep exit = 1 (hardware), sleep power up enable = 1 + // else sleep exit = 0 (assisted), sleep power up enable = 0 if (pm_sleep_exit) { - e_rc |= clear_data.clearBit(PM_SLEEP_POWER_UP_EN_BIT); - + e_rc |= set_data.setBit(PM_SLEEP_POWER_UP_EN_BIT); } else { - e_rc |= set_data.setBit(PM_SLEEP_POWER_UP_EN_BIT); + e_rc |= clear_data.clearBit(PM_SLEEP_POWER_UP_EN_BIT); } // If sleep type = 1 (deep), sleep power up sel = 1 @@ -544,28 +548,26 @@ poreslw_ex_setup(const Target& i_target) e_rc |= clear_data.clearBit(PM_SLEEP_POWER_OFF_SEL_BIT); } - // If winkle entry = 1 (assisted), winkle power down enable = 0 - // else winkle entry = 0 (hardware), winkle power down enable = 1 + // If winkle entry = 1 (hardware), winkle power down enable = 1 + // else winkle entry = 0 (assisted), winkle power down enable = 0 if (pm_winkle_entry) { - e_rc |= clear_data.clearBit(PM_WINKLE_POWER_DOWN_EN_BIT); - + e_rc |= set_data.setBit(PM_WINKLE_POWER_DOWN_EN_BIT); } else { - e_rc |= set_data.setBit(PM_WINKLE_POWER_DOWN_EN_BIT); + e_rc |= clear_data.clearBit(PM_WINKLE_POWER_DOWN_EN_BIT); } - // If winkle exit = 1 (assisted), winkle power up enable = 0 - // else winkle exit = 0 (hardware), winkle power up enable = 1 + // If winkle exit = 1 (hardware), winkle power up enable = 1 + // else winkle exit = 0 (assisted), winkle power up enable = 0 if (pm_winkle_exit) { - e_rc |= clear_data.clearBit(PM_WINKLE_POWER_UP_EN_BIT); - + e_rc |= set_data.setBit(PM_WINKLE_POWER_UP_EN_BIT); } else { - e_rc |= set_data.setBit(PM_WINKLE_POWER_UP_EN_BIT); + e_rc |= clear_data.clearBit(PM_WINKLE_POWER_UP_EN_BIT); } // If winkle type = 1 (deep), winkle power up sel = 1 @@ -610,8 +612,6 @@ poreslw_ex_setup(const Target& i_target) FAPI_INF("\tDisable the PCBS Heartbeat EX %x", l_ex_number); address = EX_SLAVE_CONFIG_0x100F001E + (l_ex_number * 0x01000000); -//@thi - Temporary workaround. Greg Still agreed to fix this in his next version -// l_rc = fapiGetScom(l_exChiplets[j], address, data); l_rc = fapiGetScom(i_target, address, data); if(!l_rc.ok()) { @@ -635,13 +635,45 @@ poreslw_ex_setup(const Target& i_target) } // -------------------------------------- - // Check if SBE code has already cleard the OHA override. + // Check if SBE code has already cleared the OHA override. // As chiplets may be enabled but offline (eg in Winkle) // treat SCOM errors as off-line (eg skip it). If online - // and set, clear the override. + // and set, clear the override. + + /* GSS: removed as Cronus always puts a message out of (PCB_OFFLINE) + even though this code is meant to handle it. As this messge + can cause confusion in the lab, the check is being removed. + bool oha_accessible = true; l_rc = fapiGetScom(l_exChiplets[j], EX_OHA_MODE_REG_RWx1002000D, data); - if(l_rc.ok()) - { + if(!l_rc.ok()) + { + l_rc = fapiGetCfamRegister( i_target, CFAM_FSI_STATUS_0x00001007, data ); + if(!l_rc.ok()) + { + FAPI_ERR("Error reading CFAM FSI Status Register"); + break; + } + FAPI_INF( "CFAM_FSI_STATUS_0x00001007: 0x%X", data.getWord(0)); + e_rc |= data.extractToRight( &fsierror, 17, 3 ); + if ( e_rc ) + { + l_rc.setEcmdError(e_rc); + break; + } + if (fsierror == PIB_OFFLINE_ERROR) + { + FAPI_INF( "Chiplet offline error detected. Skipping OHA Override clearing"); + oha_accessible = false; + } + else + { + FAPI_ERR("Scom reading OHA_MODE"); + break; + } + } + // Process if OHA accessible. + if (oha_accessible) + { if (data.isBitSet(IDLE_STATE_OVERRIDE_EN)) { @@ -662,10 +694,13 @@ poreslw_ex_setup(const Target& i_target) } } } + End of check removal + */ // -------------------------------------- // Check that PM function is enabled (eg not disabled). // If not, remove the disable + address = EX_PMGP0_0x100F0100 + (l_ex_number * 0x01000000); l_rc=fapiGetScom(i_target, address, data); if(!l_rc.ok()) @@ -740,6 +775,5 @@ poreslw_ex_setup(const Target& i_target) return l_rc; } - } //end extern diff --git a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_image_help_base.H b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_image_help_base.H index e85bec40a..8163897af 100644 --- a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_image_help_base.H +++ b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_image_help_base.H @@ -20,17 +20,23 @@ /* Origin: 30 */ /* */ /* IBM_PROLOG_END_TAG */ -// $Id: p8_image_help_base.H,v 1.12 2013/02/12 21:02:38 cmolsen Exp $ +// $Id: p8_image_help_base.H,v 1.15 2013/03/01 21:55:24 cmolsen Exp $ //------------------------------------------------------------------------------ // Title: p8_image_help_base.H // Description: Contains the most basic structures and defines needed for // image building and interpretation. //------------------------------------------------------------------------------ -const uint32_t MAX_REF_IMAGE_SIZE = 5000000; // Max reference image size. +// +// Various image/ring buffer sizes. Must be used by all users (VBU, FSP, HB, HBI, Cronus) +// +const uint32_t MAX_REF_IMAGE_SIZE = 5000000; // Max reference image size. +const uint32_t FIXED_SEEPROM_WORK_SPACE= 128*1024; // Max work space for Seeprom img. +const uint32_t MAX_SEEPROM_IMAGE_SIZE = 56*1024; // Max Seeprom image size. // Fixed SLW image size (Ensure 128-byte alignment.) -const uint32_t FIXED_SLW_IMAGE_SIZE = 1024*1024; // Fixed SLW image size assumed by HB, PHYP and slw_build(). -const uint32_t FIXED_RING_BUF_SIZE = 60000; // Fixed ring buffer size assumed by HB, PHYP and slw_build(). Only use when emulating FAPI calls and for command-line utilities. +const uint32_t FIXED_SLW_IMAGE_SIZE = 1024*1024; // Fixed SLW image size for _fixed. +const uint32_t FIXED_RING_BUF_SIZE = 60000; // Fixed ring buf size for _fixed. + const uint8_t MAX_VPD_TYPES = 2; // #G and #R, so far. #define CHIPLET_ID_MIN 0x00 #define CHIPLET_ID_MAX 0x1F @@ -38,8 +44,9 @@ const uint8_t MAX_CHIPLETS = CHIPLET_ID_MAX-CHIPLET_ID_MIN+1; const uint32_t ASM_RS4_LAUNCH_BUF_SIZE = 24; // Byte size of RS4 launch buffer. const uint32_t WF_ENCAP_SIZE = 400; // Byte size of WF encapsulation. // (Actually, only 304B but may change.) -const uint32_t WF_WORST_CASE_SIZE_FAC = 3; // WC WF size = 3x ring length. +const uint32_t WF_WORST_CASE_SIZE_FAC = 4; // WC WF size = 3x ring length. // (Assumes 12B per write.) + // (4x w/waits instructions.) const uint32_t LISTING_STRING_SIZE = 256; const uint64_t MAX_UINT64_T = (uint64_t)0xFFFFFFFF<<32 | (uint64_t)0xFFFFFFFF; diff --git a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_xip_customize_errors.xml b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_xip_customize_errors.xml index eaf1329d7..eac3d2f2c 100644 --- a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_xip_customize_errors.xml +++ b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_xip_customize_errors.xml @@ -24,9 +24,16 @@ <hwpErrors> <!-- *********************************************************************** --> <hwpError> - <rc>RC_PROC_XIPC_INPUT_IMAGE_SIZE_MESS</rc> - <description>Supplied max image size is too small or image too large.</description> - <ffdc>DATA_IMG_SIZE_INP</ffdc> + <rc>RC_PROC_XIPC_IMAGE_WORK_SPACE_MESS</rc> + <description>Max work space for output image is not equal to FIXED_SEEPROM_WORK_SPACE.</description> + <ffdc>DATA_IMG_SIZE_MAX</ffdc> + <ffdc>DATA_IMG_SIZE_WORK_SPACE</ffdc> +</hwpError> +<!-- *********************************************************************** --> +<hwpError> + <rc>RC_PROC_XIPC_IMAGE_SIZE_MESS</rc> + <description>Supplied max image size is smaller than input image.</description> + <ffdc>DATA_IMG_SIZE</ffdc> <ffdc>DATA_IMG_SIZE_MAX</ffdc> </hwpError> <!-- *********************************************************************** --> @@ -69,6 +76,12 @@ </hwpError> <!-- *********************************************************************** --> <hwpError> + <rc>RC_PROC_XIPC_GEN_SCOM_ERROR</rc> + <description>Updating Scom NC table w/L2 or L3 data failed. Check rc code in p8_delta_scan_rw.h</description> + <ffdc>RC_LOCAL</ffdc> +</hwpError> +<!-- *********************************************************************** --> +<hwpError> <rc>RC_PROC_XIPC_PLL_RING_SIZE_TOO_LARGE</rc> <description>PLL ring size returned from attribute is too large.</description> <ffdc>DATA_ATTRIBUTE_RING_SIZE</ffdc> @@ -180,6 +193,30 @@ </hwpError> <!-- *********************************************************************** --> <hwpError> + <rc>RC_PROC_XIPC_CREATE_FIXED_IMAGE_ERROR</rc> + <description>Error associated with creating and initializing fixed image and fixed .slw and .ffdc sections.</description> + <ffdc>RC_LOCAL</ffdc> +</hwpError> +<!-- *********************************************************************** --> +<hwpError> + <rc>RC_PROC_XIPC_MAX_IMAGE_SIZE_EXCEEDED</rc> + <description>New image size exceeds max allowed size.</description> + <ffdc>DATA_IMG_SIZE_NEW</ffdc> + <ffdc>DATA_IMG_SIZE_MAX</ffdc> +</hwpError> +<!-- *********************************************************************** --> +<hwpError> + <rc>RC_PROC_XIPC_APPEND_SLW_SECTION_ERROR</rc> + <description>Error associated with adding empty SLW section for ram and scom tables.</description> + <ffdc>RC_LOCAL</ffdc> +</hwpError> +<!-- *********************************************************************** --> +<hwpError> + <rc>RC_PROC_XIPC_BAD_CODE_OR_PARM</rc> + <description>Shouldn't be in this code section or invalid parm.</description> +</hwpError> +<!-- *********************************************************************** --> +<hwpError> <rc>RC_PROC_XIPC_UNKNOWN_ERROR</rc> <description>Unknown error. (Shouldn't be in this code section.)</description> <ffdc>RC_LOCAL</ffdc> |