From f74626d33553b1f5b557e57bf1a3672a6afb4e5a Mon Sep 17 00:00:00 2001 From: Thi Tran Date: Tue, 21 May 2013 12:35:38 -0500 Subject: INITPROC: Hostboot - Low Priority HW Init Procedures for week of 5/7 SW202434 Change-Id: I6bf082deb2cbe927c0ba92d670906b232482578f Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/4627 Tested-by: Jenkins Server Reviewed-by: Mark W. Wenning Reviewed-by: A. Patrick Williams III --- src/usr/hwpf/hwp/mc_config/makefile | 27 +-- .../mc_config/mss_eff_config/mss_eff_grouping.C | 6 +- .../mc_config/mss_eff_config/mss_error_support.C | 243 +++++++++++++++++++++ 3 files changed, 260 insertions(+), 16 deletions(-) create mode 100644 src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_error_support.C (limited to 'src/usr/hwpf/hwp/mc_config') diff --git a/src/usr/hwpf/hwp/mc_config/makefile b/src/usr/hwpf/hwp/mc_config/makefile index f0a7fc5eb..bd373169e 100644 --- a/src/usr/hwpf/hwp/mc_config/makefile +++ b/src/usr/hwpf/hwp/mc_config/makefile @@ -40,19 +40,20 @@ EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/mc_config/mss_eff_config EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/mc_config/mss_volt EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/mc_config/mss_freq -OBJS = mc_config.o \ - mss_volt.o \ - mss_freq.o \ - mss_eff_config.o \ - mss_eff_grouping.o \ - opt_memmap.o \ - mss_eff_config_thermal.o \ - mss_eff_config_termination.o \ - mss_eff_config_rank_group.o \ - mss_eff_config_cke_map.o \ - mss_bulk_pwr_throttles.o \ - mss_throttle_to_power.o \ - mss_eff_config_shmoo.o +OBJS = mc_config.o \ + mss_volt.o \ + mss_freq.o \ + mss_eff_config.o \ + mss_eff_grouping.o \ + opt_memmap.o \ + mss_eff_config_thermal.o \ + mss_eff_config_termination.o \ + mss_eff_config_rank_group.o \ + mss_eff_config_cke_map.o \ + mss_bulk_pwr_throttles.o \ + mss_throttle_to_power.o \ + mss_eff_config_shmoo.o \ + mss_error_support.o ## NOTE: add a new directory onto the vpaths when you add a new HWP ##@ VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/??? diff --git a/src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_eff_grouping.C b/src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_eff_grouping.C index 2bfadd4be..0017cac92 100644 --- a/src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_eff_grouping.C +++ b/src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_eff_grouping.C @@ -260,7 +260,7 @@ extern "C" { { FAPI_ERR("UNABLE TO GROUP"); FAPI_ERR("FABRIC IS IN NON-CHECKER BOARD MODE. SET ATTRIBUTE 'ATTR_MSS_INTERLEAVE_ENABLE' , TO SUPPORT 2MCS , 4MCS AND 8MCS GROUPING. OR ENABLE CHECKER BOARD. "); -//@thi - hack const fapi::Target & PROC_CHIP = i_target; + const fapi::Target & PROC_CHIP = i_target; FAPI_SET_HWP_ERROR(rc, RC_MSS_NON_CHECKER_BOARD_MODE_GROUPING_NOT_POSSIBLE); return rc; } @@ -289,7 +289,7 @@ extern "C" { { FAPI_ERR("UNABLE TO GROUP"); FAPI_ERR("FABRIC IS IN CHECKER BOARD MODE . SET ATTRIBUTE 'ATTR_MSS_INTERLEAVE_ENABLE' "); -//@thi - hack const fapi::Target & PROC_CHIP = i_target; + const fapi::Target & PROC_CHIP = i_target; FAPI_SET_HWP_ERROR(rc, RC_MSS_CHECKER_BOARD_MODE_GROUPING_NOT_POSSIBLE); return rc; @@ -668,7 +668,7 @@ extern "C" { else { FAPI_ERR("Mirror Base address overlaps with memory base address. "); -//@thi - hack const fapi::Target & PROC_CHIP = i_target; + const fapi::Target & PROC_CHIP = i_target; FAPI_SET_HWP_ERROR(rc, RC_MSS_BASE_ADDRESS_OVERLAPS_MIRROR_ADDRESS); return rc; } diff --git a/src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_error_support.C b/src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_error_support.C new file mode 100644 index 000000000..4e11554e7 --- /dev/null +++ b/src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_error_support.C @@ -0,0 +1,243 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_error_support.C $ */ +/* */ +/* 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: mss_error_support.C,v 1.1 2013/03/21 19:04:19 bellows Exp $ + +//------------------------------------------------------------------------------ +// *! (C) Copyright International Business Machines Corp. 2013 +// *! All Rights Reserved -- Property of IBM +// *! *** IBM Confidential *** +//------------------------------------------------------------------------------ +// *! TITLE : mss_error_support.C +// *! DESCRIPTION : common and hwp error collecting programs +// *! OWNER NAME : bellows@us.ibm.com +// *! BACKUP NAME : +// #! ADDITIONAL COMMENTS : +// + +//------------------------------------------------------------------------------ +// Don't forget to create CVS comments when you check in your changes! +//------------------------------------------------------------------------------ +// CHANGE HISTORY: +//------------------------------------------------------------------------------ +// Version:| Author: | Date: | Comment: +//---------|----------|---------|----------------------------------------------- +// 1.1 | 03/08/13 | bellows | Initial Version + +//---------------------------------------------------------------------- +// Includes +//---------------------------------------------------------------------- + +#include +#include +#include +using namespace fapi; + +// This is the FFDC HWP specially written to collect the data specified by RC_ERROR_MEM_GROUPING +fapi::ReturnCode hwpCollectMemGrouping(const fapi::Target & i_target,fapi::ReturnCode & o_rc) +{ + fapi::ReturnCode l_rc; + + uint32_t _ATTR_PROC_POS; + uint32_t _ATTR_CEN_POS; + uint8_t _ATTR_CHIP_UNIT_POS_MBA0; + uint8_t _ATTR_CHIP_UNIT_POS_MBA1; + uint8_t _ATTR_EFF_DIMM_SIZE0[2][2]; + uint8_t _ATTR_EFF_DIMM_SIZE1[2][2]; + uint8_t _ATTR_MSS_INTERLEAVE_ENABLE; + uint8_t _ATTR_ALL_MCS_IN_INTERLEAVING_GROUP; + uint64_t _ATTR_PROC_MEM_BASE; + uint64_t _ATTR_PROC_MIRROR_BASE; + uint8_t _ATTR_MSS_MEM_MC_IN_GROUP[8]; + uint64_t _ATTR_PROC_MEM_BASES[8]; + uint64_t _ATTR_PROC_MEM_SIZES[8]; + uint32_t _ATTR_MSS_MCS_GROUP_32[16][16]; + uint64_t _ATTR_PROC_MIRROR_BASES[4]; + uint64_t _ATTR_PROC_MIRROR_SIZES[4]; + + std::vector l_mba_chiplets; + std::vector l_memb; + + unsigned i; + + l_rc = FAPI_ATTR_GET(ATTR_POS, &i_target, _ATTR_PROC_POS); + + if (l_rc) + { + FAPI_ERR("Error reading ATTR_POS (Proc), ignoring"); + } + + l_rc = fapiGetChildChiplets(i_target, fapi::TARGET_TYPE_MEMBUF_CHIP, l_memb); + + if (l_rc) + { + FAPI_ERR("Error fapiGetChildChiplets, ignoring"); + } + + for(i=0;i l_mba_chiplets; + unsigned i; + l_rc = fapiGetChildChiplets(i_target, fapi::TARGET_TYPE_MBA_CHIPLET, l_mba_chiplets); + if (l_rc) + { + FAPI_ERR("Error fapiGetChildChiplets, ignoring"); + } + + for(i=0;i