Skip to content

Commit

Permalink
Adding after_p9a_omi_init.C and p9a-specific fir traits
Browse files Browse the repository at this point in the history
- Updating makefile include path for chips/p9a fir files
- Creating USTLFIR/DSTLFIR firTraits
- Mapping USTLFIR/DSTLFIR bits per updated p9a_mc addrs
- Helper functions for setting USTLFIR and DSTLFIR in
  after_p9a_omi_init
- Adding updated addresses and bits to addresses and fld
  fixes.H files
- Unit test for USTLFIR/DISTLFIR and OMI_FIR

Change-Id: Ie8a11e7ce89aa45a7e51fddfc27435b00abfd8a2
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/89321
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Mark Pizzutillo <mark.pizzutillo@ibm.com>
Reviewed-by: ANDRE A MARIN <aamarin@us.ibm.com>
Reviewed-by: MATTHEW I HICKMAN <matthew.hickman@ibm.com>
Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: Jennifer A Stofer <stofer@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/89348
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M Crowell <dcrowell@us.ibm.com>
  • Loading branch information
NicoFajardo authored and dcrowell77 committed Feb 24, 2020
1 parent c4fd285 commit 8e19c8c
Show file tree
Hide file tree
Showing 6 changed files with 377 additions and 26 deletions.
11 changes: 6 additions & 5 deletions src/import/chips/p9/common/include/p9a_mc_scom_addresses_fixes.H
Expand Up @@ -37,15 +37,15 @@
#ifndef __P9A_MC_SCOM_ADDRESSES_FIXES_H
#define __P9A_MC_SCOM_ADDRESSES_FIXES_H

static const uint64_t P9A_MC_REG2_DL0_ERROR_ACTION = 0x070133DDull;
static const uint64_t P9A_MC_REG2_DL0_ERROR_ACTION = 0x070133DDull;

static const uint64_t P9A_MC_REG2_DL0_RMT_CONFIG = 0x070133D8ull;
static const uint64_t P9A_MC_REG2_DL0_RMT_CONFIG = 0x070133D8ull;

static const uint64_t P9A_MC_REG0_CMN_CONFIG = 0x0701334Eull;
static const uint64_t P9A_MC_REG0_CMN_CONFIG = 0x0701334Eull;

static const uint64_t P9A_MC_REG1_CMN_CONFIG = 0x0701338Eull;
static const uint64_t P9A_MC_REG1_CMN_CONFIG = 0x0701338Eull;

static const uint64_t P9A_MC_REG2_CMN_CONFIG = 0x070133CEull;
static const uint64_t P9A_MC_REG2_CMN_CONFIG = 0x070133CEull;

static const uint64_t P9A_MCC_DSTLCFG2 = 0x0701090Eull;

Expand All @@ -58,4 +58,5 @@ static const uint64_t P9A_MC_REG0_OMI_FIR_ACTION1 = 0x
static const uint64_t P9A_MC_REG0_OMI_FIR_MASK_AND = 0x07013344ull;
static const uint64_t P9A_MC_REG0_OMI_FIR_MASK_OR = 0x07013345ull;


#endif
110 changes: 110 additions & 0 deletions src/import/chips/p9/common/include/p9a_mc_scom_addresses_fld_fixes.H
Expand Up @@ -117,6 +117,12 @@ static const uint8_t P9A_MC_REG2_DL0_CONFIG1_CFG_PREIPL_PRBS_ENA = 4;
static const uint8_t P9A_MC_REG2_DL0_CONFIG1_CFG_PREIPL_PRBS_TIME = 5;
static const uint8_t P9A_MC_REG2_DL0_CONFIG1_CFG_PREIPL_PRBS_TIME_LEN = 3;

static const uint8_t P9A_MCC_DSTLFIR_SUBCHANNEL_A_TLX_CHECKSTOP = 0;
static const uint8_t P9A_MCC_DSTLFIR_SUBCHANNEL_A_TLX_RECOVERABLE_ATTENTION = 1;
static const uint8_t P9A_MCC_DSTLFIR_SUBCHANNEL_A_TLX_SPECIAL_ATTENTION = 2;
static const uint8_t P9A_MCC_DSTLFIR_SUBCHANNEL_B_TLX_CHECKSTOP = 4;
static const uint8_t P9A_MCC_DSTLFIR_SUBCHANNEL_B_TLX_RECOVERABLE_ATTENTION = 5;
static const uint8_t P9A_MCC_DSTLFIR_SUBCHANNEL_B_TLX_SPECIAL_ATTENTION = 6;
static const uint8_t P9A_MCC_DSTLFIR_CONFIG_REG_RECOVERABLE_PARITY_ERROR = 10 ;
static const uint8_t P9A_MCC_DSTLFIR_CONFIG_REG_FATAL_PARITY_ERROR = 11 ;
static const uint8_t P9A_MCC_DSTLFIR_SUBCHANNEL_A_TIMEOUT_ERROR = 14 ;
Expand All @@ -134,4 +140,108 @@ static const uint8_t P9A_MCC_DSTLFIR_SPARE25 = 2
static const uint8_t P9A_MCC_DSTLFIR_INTERNAL_SCOM_ERROR_FIX = 26 ;
static const uint8_t P9A_MCC_DSTLFIR_INTERNAL_SCOM_ERROR_CLONE_FIX = 27 ;

static const uint8_t P9A_MCC_DSTLCFG2_CFG_SUBCH_A_FAIL_DIS_LINK_DOWN = 22;
static const uint8_t P9A_MCC_DSTLCFG2_CFG_SUBCH_B_FAIL_DIS_LINK_DOWN = 23;
static const uint8_t P9A_MCC_DSTLCFG2_CFG_SUBCH_A_FAIL_DIS_CH_TIMEOUT = 24;
static const uint8_t P9A_MCC_DSTLCFG2_CFG_SUBCH_B_FAIL_DIS_CH_TIMEOUT = 25;
static const uint8_t P9A_MCC_DSTLCFG2_CFG_SUBCH_A_FAIL_DIS_TLX_XSTOP = 26;
static const uint8_t P9A_MCC_DSTLCFG2_CFG_SUBCH_B_FAIL_DIS_TLX_XSTOP = 27;
static const uint8_t P9A_MCC_DSTLCFG2_SUBCH_A_FAIL_DIS_COUNTER_ERR = 28;
static const uint8_t P9A_MCC_DSTLCFG2_SUBCH_B_FAIL_DIS_COUNTER_ERR = 29;
static const uint8_t P9A_MCC_DSTLCFG2_SUBCH_A_FAIL_DIS_TLXVC3_OVERUSE = 30;
static const uint8_t P9A_MCC_DSTLCFG2_SUBCH_B_FAIL_DIS_TLXVC3_OVERUSE = 31;
static const uint8_t P9A_MCC_DSTLCFG2_CFG_SUBCH_A_FAIL_DIS_DSTL_TIMEOUT = 37;
static const uint8_t P9A_MCC_DSTLCFG2_CFG_SUBCH_B_FAIL_DIS_DSTL_TIMEOUT = 38;

static const uint8_t P9A_MCC_USTLFIR_CHANA_UNEXP_DATA_ERR = 0;
static const uint8_t P9A_MCC_USTLFIR_CHANB_UNEXP_DATA_ERR = 1;
static const uint8_t P9A_MCC_USTLFIR_READ_SPARE_1 = 17;
static const uint8_t P9A_MCC_USTLFIR_READ_SPARE_2 = 18;
static const uint8_t P9A_MCC_USTLFIR_WRT_SPARE_25 = 25;
static const uint8_t P9A_MCC_USTLFIR_WRT_SPARE_26 = 26;
static const uint8_t P9A_MCC_USTLFIR_CHANA_FAIL_RESP_CHECKSTOP = 27;
static const uint8_t P9A_MCC_USTLFIR_CHANB_FAIL_RESP_CHECKSTOP = 28;
static const uint8_t P9A_MCC_USTLFIR_CHANA_FAIL_RESP_RECOVER = 29;
static const uint8_t P9A_MCC_USTLFIR_CHANB_FAIL_RESP_RECOVER = 30;
static const uint8_t P9A_MCC_USTLFIR_CHANA_LOL_DROP_CHECKSTOP = 31;
static const uint8_t P9A_MCC_USTLFIR_CHANB_LOL_DROP_CHECKSTOP = 32;
static const uint8_t P9A_MCC_USTLFIR_CHANA_LOL_DROP_RECOVER = 33;
static const uint8_t P9A_MCC_USTLFIR_CHANB_LOL_DROP_RECOVER = 34;
static const uint8_t P9A_MCC_USTLFIR_CHANA_FLIT_PARITY_ERROR_FIX = 35;
static const uint8_t P9A_MCC_USTLFIR_CHANB_FLIT_PARITY_ERROR_FIX = 36;
static const uint8_t P9A_MCC_USTLFIR_CHANA_FATAL_PARITY_ERROR = 37;
static const uint8_t P9A_MCC_USTLFIR_CHANB_FATAL_PARITY_ERROR = 38;
static const uint8_t P9A_MCC_USTLFIR_CHANA_BAD_RESP_LOG_VAL = 39;
static const uint8_t P9A_MCC_USTLFIR_CHANB_BAD_RESP_LOG_VAL = 40;
static const uint8_t P9A_MCC_USTLFIR_CHANA_EXCESS_BAD_DATA_BITS = 41;
static const uint8_t P9A_MCC_USTLFIR_CHANB_EXCESS_BAD_DATA_BITS = 42;
static const uint8_t P9A_MCC_USTLFIR_CHANA_COMP_TMPL0_DATA_NOT_MMIO = 43;
static const uint8_t P9A_MCC_USTLFIR_CHANB_COMP_TMPL0_DATA_NOT_MMIO = 44;
static const uint8_t P9A_MCC_USTLFIR_CHANA_MMIO_IN_LOL_MODE = 45;
static const uint8_t P9A_MCC_USTLFIR_CHANB_MMIO_IN_LOL_MODE = 46;
static const uint8_t P9A_MCC_USTLFIR_CHANA_BAD_DATA_FIX = 47;
static const uint8_t P9A_MCC_USTLFIR_CHANB_BAD_DATA_FIX = 48;
static const uint8_t P9A_MCC_USTLFIR_CHANA_EXCESS_DATA_ERROR = 49;
static const uint8_t P9A_MCC_USTLFIR_CHANB_EXCESS_DATA_ERROR = 50;
static const uint8_t P9A_MCC_USTLFIR_CHANA_BADCRC_DATA_NOT_VALID_ERROR = 51;
static const uint8_t P9A_MCC_USTLFIR_CHANB_BADCRC_DATA_NOT_VALID_ERROR = 52;
static const uint8_t P9A_MCC_USTLFIR_CHANA_FIFO_OVERFLOW_ERROR = 53;
static const uint8_t P9A_MCC_USTLFIR_CHANB_FIFO_OVERFLOW_ERROR = 54;
static const uint8_t P9A_MCC_USTLFIR_CHANA_INVALID_CMD_ERROR = 55;
static const uint8_t P9A_MCC_USTLFIR_CHANB_INVALID_CMD_ERROR = 56;
static const uint8_t P9A_MCC_USTLFIR_FATAL_REG_PARITY_ERROR = 57;
static const uint8_t P9A_MCC_USTLFIR_RECOV_REG_PARITY_ERROR = 58;
static const uint8_t P9A_MCC_USTLFIR_CHANA_INVALID_DL_DP_COMBO = 59;
static const uint8_t P9A_MCC_USTLFIR_CHANB_INVALID_DL_DP_COMBO = 60;
static const uint8_t P9A_MCC_USTLFIR_SPARE_61 = 61;
static const uint8_t P9A_MCC_FIR_INTERNAL_PARITY_ERROR = 62;
static const uint8_t P9A_MCC_FIR_INTERNAL_PARITY_ERROR_COPY = 63;

static const uint8_t P9A_MCC_USTLFAILMASK_RECOVER_ENABLE_MASK_0 = 0;
static const uint8_t P9A_MCC_USTLFAILMASK_RECOVER_ENABLE_MASK_1 = 1;
static const uint8_t P9A_MCC_USTLFAILMASK_RECOVER_ENABLE_MASK_2 = 2;
static const uint8_t P9A_MCC_USTLFAILMASK_RECOVER_ENABLE_MASK_3 = 3;
static const uint8_t P9A_MCC_USTLFAILMASK_RECOVER_ENABLE_MASK_4 = 4;
static const uint8_t P9A_MCC_USTLFAILMASK_RECOVER_ENABLE_MASK_5 = 5;
static const uint8_t P9A_MCC_USTLFAILMASK_RECOVER_ENABLE_MASK_6 = 6;
static const uint8_t P9A_MCC_USTLFAILMASK_RECOVER_ENABLE_MASK_7 = 7;
static const uint8_t P9A_MCC_USTLFAILMASK_RECOVER_ENABLE_MASK_8 = 8;
static const uint8_t P9A_MCC_USTLFAILMASK_RECOVER_ENABLE_MASK_9 = 9;
static const uint8_t P9A_MCC_USTLFAILMASK_RECOVER_ENABLE_MASK_10 = 10;

static const uint8_t P9A_MCC_USTLFAILMASK_CHECKSTOP_ENABLE_MASK_16 = 16;
static const uint8_t P9A_MCC_USTLFAILMASK_CHECKSTOP_ENABLE_MASK_17 = 17;
static const uint8_t P9A_MCC_USTLFAILMASK_CHECKSTOP_ENABLE_MASK_18 = 18;
static const uint8_t P9A_MCC_USTLFAILMASK_CHECKSTOP_ENABLE_MASK_19 = 19;
static const uint8_t P9A_MCC_USTLFAILMASK_CHECKSTOP_ENABLE_MASK_20 = 20;
static const uint8_t P9A_MCC_USTLFAILMASK_CHECKSTOP_ENABLE_MASK_21 = 21;
static const uint8_t P9A_MCC_USTLFAILMASK_CHECKSTOP_ENABLE_MASK_22 = 22;
static const uint8_t P9A_MCC_USTLFAILMASK_CHECKSTOP_ENABLE_MASK_23 = 23;
static const uint8_t P9A_MCC_USTLFAILMASK_CHECKSTOP_ENABLE_MASK_24 = 24;
static const uint8_t P9A_MCC_USTLFAILMASK_CHECKSTOP_ENABLE_MASK_25 = 25;
static const uint8_t P9A_MCC_USTLFAILMASK_CHECKSTOP_ENABLE_MASK_26 = 26;

static const uint8_t P9A_MCC_USTLFAILMASK_CHAN_FAIL_ENABLE_MASK_32 = 32;
static const uint8_t P9A_MCC_USTLFAILMASK_CHAN_FAIL_ENABLE_MASK_33 = 33;
static const uint8_t P9A_MCC_USTLFAILMASK_CHAN_FAIL_ENABLE_MASK_34 = 34;
static const uint8_t P9A_MCC_USTLFAILMASK_CHAN_FAIL_ENABLE_MASK_35 = 35;
static const uint8_t P9A_MCC_USTLFAILMASK_CHAN_FAIL_ENABLE_MASK_36 = 36;
static const uint8_t P9A_MCC_USTLFAILMASK_CHAN_FAIL_ENABLE_MASK_37 = 37;
static const uint8_t P9A_MCC_USTLFAILMASK_CHAN_FAIL_ENABLE_MASK_38 = 38;
static const uint8_t P9A_MCC_USTLFAILMASK_CHAN_FAIL_ENABLE_MASK_39 = 39;
static const uint8_t P9A_MCC_USTLFAILMASK_CHAN_FAIL_ENABLE_MASK_40 = 40;
static const uint8_t P9A_MCC_USTLFAILMASK_CHAN_FAIL_ENABLE_MASK_41 = 41;
static const uint8_t P9A_MCC_USTLFAILMASK_CHAN_FAIL_ENABLE_MASK_42 = 42;

static const uint8_t P9A_MCC_USTLFAILMASK_CHANNEL_FAIL_TYPE_DISABLE_48 = 48;
static const uint8_t P9A_MCC_USTLFAILMASK_CHANNEL_FAIL_TYPE_DISABLE_49 = 49;
static const uint8_t P9A_MCC_USTLFAILMASK_CHANNEL_FAIL_TYPE_DISABLE_50 = 50;
static const uint8_t P9A_MCC_USTLFAILMASK_CHANNEL_FAIL_TYPE_DISABLE_51 = 51;
static const uint8_t P9A_MCC_USTLFAILMASK_CHANNEL_FAIL_TYPE_DISABLE_52 = 52;
static const uint8_t P9A_MCC_USTLFAILMASK_CHANNEL_FAIL_TYPE_DISABLE_53 = 53;
static const uint8_t P9A_MCC_USTLFAILMASK_CHANNEL_FAIL_TYPE_DISABLE_54 = 54;
static const uint8_t P9A_MCC_USTLFAILMASK_CHANNEL_FAIL_TYPE_DISABLE_55 = 55;
static const uint8_t P9A_MCC_USTLFAILMASK_CHANNEL_FAIL_TYPE_DISABLE_56 = 56;
static const uint8_t P9A_MCC_USTLFAILMASK_CHANNEL_FAIL_TYPE_DISABLE_57 = 57;

#endif
50 changes: 39 additions & 11 deletions src/import/chips/p9/procedures/hwp/memory/p9a_omi_init.C
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2018,2019 */
/* Contributors Listed Below - COPYRIGHT 2018,2020 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand All @@ -32,16 +32,15 @@
// *HWP Level: 2
// *HWP Consumed by: HB

#include <fapi2.H>
#include <lib/fir/p9a_fir_traits.H>
#include <lib/fir/p9a_fir.H>
#include <p9a_omi_init.H>
#include <p9a_omi_init_scom.H>
#include <p9a_mc_scom_addresses.H>
#include <p9a_mc_scom_addresses_fld.H>

///
/// @brief Run initfile to enable templates and set pacing.
///
/// @param[in] i_target p9a channel to work on
///
/// @return fapi2:ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
///
fapi2::ReturnCode p9a_omi_init_scominit(const fapi2::Target<fapi2::TARGET_TYPE_MCC>& i_target)
Expand All @@ -63,9 +62,7 @@ fapi2::ReturnCode p9a_omi_init_scominit(const fapi2::Target<fapi2::TARGET_TYPE_M

///
/// @brief Check and enable supported templates
///
/// @param[in] i_target p9a channel to work on
///
/// @return fapi2:ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
///
fapi2::ReturnCode p9a_omi_init_enable_templates(const fapi2::Target<fapi2::TARGET_TYPE_MCC>& i_target)
Expand Down Expand Up @@ -106,9 +103,7 @@ fapi_try_exit:

///
/// @brief Enable ibm buffer chip low latency mode
///
/// @param[in] i_target p9a channel to work on
///
/// @return fapi2:ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
///
fapi2::ReturnCode p9a_omi_init_enable_lol(const fapi2::Target<fapi2::TARGET_TYPE_MCC>& i_target)
Expand Down Expand Up @@ -146,18 +141,51 @@ fapi_try_exit:
return fapi2::current_err;
}

// Putting unmask function in mss::unmask for consistency with p9/EXPL/etc.
namespace mss
{

namespace unmask
{

///
/// @brief Finalize the OMI
/// @brief Initialize Axone DSTLFIR mask bits after p9a omi init
/// @param[in] i_target MCC target to find targets to initialize
/// @return fapi2:ReturnCode FAPI2_RC_SUCCESS if success, else error code
///
/// @param[in] i_target p9a channel to work on
fapi2::ReturnCode after_p9a_omi_init(const fapi2::Target<fapi2::TARGET_TYPE_MCC>& i_target)
{
// Get parent MC from MCC to do necessary OMI FIR unmasks
const auto& l_mc = mss::find_target<fapi2::TARGET_TYPE_MC>(i_target);
FAPI_TRY(after_p9a_omi_init_omi_fir_helper(l_mc));

// Set all bits on MCC DSTLFIR per FIR XML spec
FAPI_TRY(after_p9a_omi_init_dstlfir_helper(i_target));

// Set all bits on MCC USTLFIR per FIR XML spec
FAPI_TRY(after_p9a_omi_init_ustlfir_helper(i_target));

fapi_try_exit:

FAPI_DBG("Exiting with return code : 0x%08X...", (uint64_t) fapi2::current_err);
return fapi2::current_err;
}

} // end unmask ns

} // end mss ns

///
/// @brief Finalize the OMI
/// @param[in] i_target p9a channel to work on
/// @return fapi2:ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
///
fapi2::ReturnCode p9a_omi_init(const fapi2::Target<fapi2::TARGET_TYPE_MCC>& i_target)
{
FAPI_TRY(p9a_omi_init_scominit(i_target));
FAPI_TRY(p9a_omi_init_enable_templates(i_target));
FAPI_TRY(p9a_omi_init_enable_lol(i_target));
FAPI_TRY(mss::unmask::after_p9a_omi_init(i_target));

fapi_try_exit:

Expand Down
6 changes: 3 additions & 3 deletions src/import/chips/p9/procedures/hwp/memory/p9a_omi_init.H
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2018 */
/* Contributors Listed Below - COPYRIGHT 2018,2020 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand Down Expand Up @@ -33,8 +33,8 @@
// *HWP Consumed by: HB


#ifndef __P9A_OMI_INIT_H_
#define __P9A_OMI_INIT_H_
#ifndef _P9A_OMI_INIT_H_
#define _P9A_OMI_INIT_H_

#include <fapi2.H>

Expand Down
5 changes: 4 additions & 1 deletion src/import/chips/p9/procedures/hwp/memory/p9a_omi_init.mk
Expand Up @@ -5,7 +5,7 @@
#
# OpenPOWER HostBoot Project
#
# Contributors Listed Below - COPYRIGHT 2018
# Contributors Listed Below - COPYRIGHT 2018,2020
# [+] International Business Machines Corp.
#
#
Expand All @@ -23,5 +23,8 @@
#
# IBM_PROLOG_END_TAG
# Makefile for p9a_omi_init HWP

PROCEDURE=p9a_omi_init
$(eval $(call ADD_MODULE_INCDIR,$(PROCEDURE),$(ROOTPATH)/chips/p9a/procedures/hwp/memory/))
$(eval $(call ADD_MODULE_INCDIR,$(PROCEDURE),$(ROOTPATH)))
$(call BUILD_PROCEDURE)

0 comments on commit 8e19c8c

Please sign in to comment.