diff options
| author | Thi Tran <thi@us.ibm.com> | 2016-06-11 08:18:13 -0500 |
|---|---|---|
| committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-06-14 10:14:51 -0400 |
| commit | d41f09f156a711db1db217c1ff9fbcd8a5eb30c5 (patch) | |
| tree | b433597d502d4b0c8c98b7a991789b2fdc72b204 /src | |
| parent | 440b56312ec87a28849b7ccb7f63c3ff7d611d11 (diff) | |
| download | blackbird-hostboot-d41f09f156a711db1db217c1ff9fbcd8a5eb30c5.tar.gz blackbird-hostboot-d41f09f156a711db1db217c1ff9fbcd8a5eb30c5.zip | |
p9_htm_setup (L2) - Part 1: New files to be mirrored to HB
Change-Id: Iab4b62756d514d9d5ea6b9ff72f71a3726137f1c
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/25687
Tested-by: Hostboot CI
Tested-by: Jenkins Server
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: Joseph J. McGill <jmcgill@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/25688
Tested-by: FSP CI Jenkins
Reviewed-by: Thi N. Tran <thi@us.ibm.com>
Diffstat (limited to 'src')
12 files changed, 320 insertions, 1185 deletions
diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_htm_adu_ctrl.C b/src/import/chips/p9/procedures/hwp/nest/p9_htm_adu_ctrl.C new file mode 100644 index 000000000..afccf4e5e --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/nest/p9_htm_adu_ctrl.C @@ -0,0 +1,55 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: chips/p9/procedures/hwp/nest/p9_htm_adu_ctrl.C $ */ +/* */ +/* IBM CONFIDENTIAL */ +/* */ +/* EKB Project */ +/* */ +/* COPYRIGHT 2016 */ +/* [+] International Business Machines Corp. */ +/* */ +/* */ +/* 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. */ +/* */ +/* IBM_PROLOG_END_TAG */ +/// ---------------------------------------------------------------------------- +/// @file p9_htm_adu_ctrl.C +/// +/// @brief Provides ADU control functions that help with HTM collection actions. +/// +///---------------------------------------------------------------------------- +/// *HWP HWP Owner : Joe McGill <jmcgill@us.ibm.com> +/// *HWP FW Owner : Thi Tran <thi@us.ibm.com> +/// *HWP Team : Nest +/// *HWP Level : 1 +/// *HWP Consumed by : HB +///---------------------------------------------------------------------------- + +//------------------------------------------------------------------------------ +// Includes +//------------------------------------------------------------------------------ +#include <p9_htm_adu_ctrl.H> +#include <p9_adu_coherent_utils.H> + +//------------------------------------------------------------------------------ +// Constants +//------------------------------------------------------------------------------ +const uint32_t P9_HTM_START_MAX_STATUS_POLLS = 100; // Status time-out + +/// +/// See doxygen in p9_htm_adu_ctrl.H +/// +fapi2::ReturnCode aduNHTMControl( + const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target, + const uint64_t i_addr) +{ + FAPI_DBG("Entering"); + fapi2::ReturnCode l_rc; + + FAPI_DBG("Exiting"); + return fapi2::current_err; +} diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_htm_adu_ctrl.H b/src/import/chips/p9/procedures/hwp/nest/p9_htm_adu_ctrl.H new file mode 100644 index 000000000..0b8192200 --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/nest/p9_htm_adu_ctrl.H @@ -0,0 +1,57 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: chips/p9/procedures/hwp/nest/p9_htm_adu_ctrl.H $ */ +/* */ +/* IBM CONFIDENTIAL */ +/* */ +/* EKB Project */ +/* */ +/* COPYRIGHT 2016 */ +/* [+] International Business Machines Corp. */ +/* */ +/* */ +/* 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. */ +/* */ +/* IBM_PROLOG_END_TAG */ +/// ---------------------------------------------------------------------------- +/// @file p9_htm_adu_ctrl.H +/// +/// @brief Provides ADU control functions that help with HTM collection actions. +/// +/// ---------------------------------------------------------------------------- +/// *HWP HWP Owner : Joe McGill <jmcgill@us.ibm.com> +/// *HWP FW Owner : Thi Tran <thi@us.ibm.com> +/// *HWP Team : Nest +/// *HWP Level : 1 +/// *HWP Consumed by : HB +/// ---------------------------------------------------------------------------- + +#ifndef _P9_HTM_ADU_CTRL_H_ +#define _P9_HTM_ADU_CTRL_H_ + +//------------------------------------------------------------------------------ +// Includes +//------------------------------------------------------------------------------ +#include <fapi2.H> + +//------------------------------------------------------------------------------ +// Function prototypes +//------------------------------------------------------------------------------ +/// +/// @brief Use ADU to trigger start/stop globally the NHTM engines +/// +/// @param[in] i_target Reference to target +/// @param[in] i_address Address of PMISC command that should have +/// the start/stop/pause bits set accordingly. +/// +/// +/// @return FAPI2_RC_SUCCESS if success, else error code. +/// +fapi2::ReturnCode aduNHTMControl( + const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target, + const uint64_t i_addr); + +#endif // _P9_HTM_ADU_CTRL_H_ diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_htm_adu_ctrl.mk b/src/import/chips/p9/procedures/hwp/nest/p9_htm_adu_ctrl.mk new file mode 100644 index 000000000..04d421f6d --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/nest/p9_htm_adu_ctrl.mk @@ -0,0 +1,21 @@ +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: chips/p9/procedures/hwp/nest/p9_htm_adu_ctrl.mk $ +# +# IBM CONFIDENTIAL +# +# EKB Project +# +# COPYRIGHT 2016 +# [+] International Business Machines Corp. +# +# +# 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. +# +# IBM_PROLOG_END_TAG +PROCEDURE=p9_htm_adu_ctrl +OBJS+=p9_adu_coherent_utils.o +$(call BUILD_PROCEDURE) diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_htm_def.H b/src/import/chips/p9/procedures/hwp/nest/p9_htm_def.H new file mode 100644 index 000000000..7188f9082 --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/nest/p9_htm_def.H @@ -0,0 +1,42 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: chips/p9/procedures/hwp/nest/p9_htm_def.H $ */ +/* */ +/* IBM CONFIDENTIAL */ +/* */ +/* EKB Project */ +/* */ +/* COPYRIGHT 2016 */ +/* [+] International Business Machines Corp. */ +/* */ +/* */ +/* 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. */ +/* */ +/* IBM_PROLOG_END_TAG */ +/// ---------------------------------------------------------------------------- +/// @file p9_htm_def.H +/// +/// @brief Common definitions for HTM related values in P9 +/// +/// ---------------------------------------------------------------------------- +/// *HWP HWP Owner : Joe McGill <jmcgill@us.ibm.com> +/// *HWP FW Owner : Thi Tran <thi@us.ibm.com> +/// *HWP Team : Nest +/// *HWP Level : 1 +/// *HWP Consumed by : HB +/// ---------------------------------------------------------------------------- +#ifndef _P9_HTM_DEF_H_ +#define _P9_HTM_DEF_H_ + +//---------------------------------------------------------------------------- +// Include +//---------------------------------------------------------------------------- +#include <p9_misc_scom_addresses.H> +#include <p9_misc_scom_addresses_fld.H> +#include <p9_quad_scom_addresses.H> +#include <p9_quad_scom_addresses_fld.H> + +#endif // _P9_HTM_DEF_H_ diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_htm_reset.C b/src/import/chips/p9/procedures/hwp/nest/p9_htm_reset.C new file mode 100644 index 000000000..8e606292e --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/nest/p9_htm_reset.C @@ -0,0 +1,55 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: chips/p9/procedures/hwp/nest/p9_htm_reset.C $ */ +/* */ +/* IBM CONFIDENTIAL */ +/* */ +/* EKB Project */ +/* */ +/* COPYRIGHT 2016 */ +/* [+] International Business Machines Corp. */ +/* */ +/* */ +/* 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. */ +/* */ +/* IBM_PROLOG_END_TAG */ +/// ---------------------------------------------------------------------------- +/// @file p9_htm_reset.H +/// +/// @brief Reset the HTM engines on a processor chip +/// +///---------------------------------------------------------------------------- +/// *HWP HWP Owner : Joe McGill <jmcgill@us.ibm.com> +/// *HWP FW Owner : Thi Tran <thi@us.ibm.com> +/// *HWP Team : Nest +/// *HWP Level : 1 +/// *HWP Consumed by : HB +///---------------------------------------------------------------------------- + +//------------------------------------------------------------------------------ +// Includes +//------------------------------------------------------------------------------ +#include <p9_htm_reset.H> +#include <p9_htm_def.H> +#include <p9_htm_adu_ctrl.H> + +extern "C" { + +/// +/// @brief p9_htm_reset procedure entry point +/// See doxygen in p9_htm_reset.H +/// + fapi2::ReturnCode p9_htm_reset( + const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target) + { + FAPI_DBG("Entering"); + fapi2::ReturnCode l_rc; + + FAPI_DBG("Exiting"); + return fapi2::current_err; + } + +} // extern "C" diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_htm_reset.H b/src/import/chips/p9/procedures/hwp/nest/p9_htm_reset.H new file mode 100644 index 000000000..683f8b4ef --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/nest/p9_htm_reset.H @@ -0,0 +1,64 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: chips/p9/procedures/hwp/nest/p9_htm_reset.H $ */ +/* */ +/* IBM CONFIDENTIAL */ +/* */ +/* EKB Project */ +/* */ +/* COPYRIGHT 2016 */ +/* [+] International Business Machines Corp. */ +/* */ +/* */ +/* 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. */ +/* */ +/* IBM_PROLOG_END_TAG */ +/// ---------------------------------------------------------------------------- +/// @file p9_htm_reset.H +/// +/// @brief Reset the HTM engines on a processor chip +/// +/// ---------------------------------------------------------------------------- +/// *HWP HWP Owner : Joe McGill <jmcgill@us.ibm.com> +/// *HWP FW Owner : Thi Tran <thi@us.ibm.com> +/// *HWP Team : Nest +/// *HWP Level : 1 +/// *HWP Consumed by : HB +/// ---------------------------------------------------------------------------- + +#ifndef _P9_HTM_RESET_H_ +#define _P9_HTM_RESET_H_ + +//------------------------------------------------------------------------------ +// Includes +//------------------------------------------------------------------------------ +#include <fapi2.H> + +// Function pointer typedef definition for HWP call support +typedef fapi2::ReturnCode (*p9_htm_reset_FP_t)( + const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>&); + +//------------------------------------------------------------------------------ +// Function prototypes +//------------------------------------------------------------------------------ +/// +/// @brief p9_htm_reset procedure +/// +/// This HWP is to reset the HTM engines. +/// +/// @param[in] i_target Reference to TARGET_TYPE_PROC_CHIP target +/// +/// @return FAPI2_RC_SUCCESS if success, else error code. +/// +extern "C" +{ + + fapi2::ReturnCode p9_htm_reset( + const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target); + +} // extern "C" + +#endif // _P9_HTM_RESET_H_ diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_htm_reset.mk b/src/import/chips/p9/procedures/hwp/nest/p9_htm_reset.mk new file mode 100644 index 000000000..7733a131f --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/nest/p9_htm_reset.mk @@ -0,0 +1,22 @@ +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: chips/p9/procedures/hwp/nest/p9_htm_reset.mk $ +# +# IBM CONFIDENTIAL +# +# EKB Project +# +# COPYRIGHT 2016 +# [+] International Business Machines Corp. +# +# +# 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. +# +# IBM_PROLOG_END_TAG +PROCEDURE=p9_htm_reset +OBJS+=p9_htm_adu_ctrl.o +OBJS+=p9_adu_coherent_utils.o +$(call BUILD_PROCEDURE) diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_htm_setup.C b/src/import/chips/p9/procedures/hwp/nest/p9_htm_setup.C index 12e40eb22..a893ef318 100755 --- a/src/import/chips/p9/procedures/hwp/nest/p9_htm_setup.C +++ b/src/import/chips/p9/procedures/hwp/nest/p9_htm_setup.C @@ -7,7 +7,7 @@ /* */ /* EKB Project */ /* */ -/* COPYRIGHT 2015 */ +/* COPYRIGHT 2015,2016 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -37,8 +37,6 @@ // Includes //------------------------------------------------------------------------------ #include <p9_htm_setup.H> -#include <p9_misc_scom_addresses.H> -#include <p9_quad_scom_addresses.H> extern "C" { @@ -48,708 +46,6 @@ extern "C" { ///---------------------------------------------------------------------------- /// -/// @brief Read the HTM BAR address and size and assign the -/// HTM trace output memory address accordingly. -/// -/// @param[in] i_target Reference to Processor Chip target -/// @param[in] i_htmModeRegAddr The base HTM Mode Register address -/// @param[out] o_scomData HTM_MEM reg data to program the -/// mem addr/size bits. Other bits -/// are preserved. -/// -/// @return FAPI2_RC_SUCCESS if success, else error code. -/// - fapi2::ReturnCode setMemBaseSize( - const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target, - const uint64_t i_htmModeRegAddr, - fapi2::buffer<uint64_t>& o_scomData) - { - FAPI_INF("setupHTMGeneric"); - fapi2::ReturnCode l_rc; - - uint64_t l_memBaseAddr[NUM_OF_HTM_REGIONS] = { 0 }; - uint64_t l_memBaseSize[NUM_OF_HTM_REGIONS] = { 0 }; - htm_size_t l_htmSize[NUM_OF_HTM_REGIONS] = { HTM_512M_OR_16M }; - bool l_smallMemSize[NUM_OF_HTM_REGIONS] = { true }; - - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_HTM_BAR_BASE_ADDR, i_target, - l_memBaseAddr), - "setMemBaseSize: Error getting ATTR_PROC_HTM_BAR_BASE_ADDR, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_HTM_BAR_SIZES, i_target, - l_memBaseSize), - "setMemBaseSize: Error getting ATTR_PROC_HTM_BAR_SIZES, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - - // Determine if mem size should be small or large - for (uint8_t ii = 0; ii < NUM_OF_HTM_REGIONS; ii++) - { - switch (l_memBaseSize[ii]) - { - case fapi2::ENUM_ATTR_PROC_HTM_BAR_SIZES_16_MB: - case fapi2::ENUM_ATTR_PROC_HTM_BAR_SIZES_512_MB: - l_htmSize[ii] = HTM_512M_OR_16M; - break; - - case fapi2::ENUM_ATTR_PROC_HTM_BAR_SIZES_32_MB: - case fapi2::ENUM_ATTR_PROC_HTM_BAR_SIZES_1_GB: - l_htmSize[ii] = HTM_1G_OR_32M; - break; - - case fapi2::ENUM_ATTR_PROC_HTM_BAR_SIZES_64_MB: - case fapi2::ENUM_ATTR_PROC_HTM_BAR_SIZES_2_GB: - l_htmSize[ii] = HTM_2G_OR_64M; - break; - - case fapi2::ENUM_ATTR_PROC_HTM_BAR_SIZES_128_MB: - case fapi2::ENUM_ATTR_PROC_HTM_BAR_SIZES_4_GB: - l_htmSize[ii] = HTM_4G_OR_128M; - break; - - case fapi2::ENUM_ATTR_PROC_HTM_BAR_SIZES_256_MB: - case fapi2::ENUM_ATTR_PROC_HTM_BAR_SIZES_8_GB: - l_htmSize[ii] = HTM_8G_OR_256M; - break; - - case fapi2::ENUM_ATTR_PROC_HTM_BAR_SIZES_16_GB: - l_htmSize[ii] = HTM_16G_OR_512M; - break; - - case fapi2::ENUM_ATTR_PROC_HTM_BAR_SIZES_32_GB: - l_htmSize[ii] = HTM_32G_OR_1G; - break; - - case fapi2::ENUM_ATTR_PROC_HTM_BAR_SIZES_64_GB: - l_htmSize[ii] = HTM_64G_OR_2G; - break; - - case fapi2::ENUM_ATTR_PROC_HTM_BAR_SIZES_128_GB: - l_htmSize[ii] = HTM_128G_OR_4G; - break; - - case fapi2::ENUM_ATTR_PROC_HTM_BAR_SIZES_256_GB: - l_htmSize[ii] = HTM_256G_OR_8G; - break; - - default: - FAPI_ASSERT(false, - fapi2::HTM_SETUP_PROC_BAR_SIZE() - .set_PROC_BAR_SIZE(l_memBaseSize[ii]), - "setMemBaseSize: Invalid proc BAR size value: " - "0x%016llX", l_memBaseSize[ii]); - break; - } - - // If memsize >= 512MB, set small memory size to false - if (l_memBaseSize[ii] >= fapi2::ENUM_ATTR_PROC_HTM_BAR_SIZES_512_MB) - { - l_smallMemSize[ii] = false; - } - } - - // Assign HTM trace base address/size - // PU_HTM0_HTM_MODE --> HTM region 0 - // PU_HTM1_HTM_MODE --> HTM region 1 - // - // TODO: How to assign for Core HTM traces? - - if (i_htmModeRegAddr == PU_HTM0_HTM_MODE) - { - // Right shift (24) PROC HTM Bar Base addr in order to fit - // into bits 8:39 (i.e. drop 24 bits) - o_scomData.insertFromRight<HTM_MEM_TRC_MEM_BASE_ADDR, - HTM_MEM_TRC_MEM_BASE_ADDR_LEN> - (l_memBaseAddr[0] >> 24); - o_scomData.insertFromRight<HTM_MEM_TRC_MEM_SIZE, - HTM_MEM_TRC_MEM_SIZE_LEN> - (l_htmSize[0]); - - if (l_smallMemSize[0] == true) - { - o_scomData.setBit<HTM_MEM_TRC_MEM_SIZE_SMALL>(); - } - else - { - o_scomData.clearBit<HTM_MEM_TRC_MEM_SIZE_SMALL>(); - } - } - else if (i_htmModeRegAddr == PU_HTM1_HTM_MODE) - { - // Right shift (24) PROC HTM Bar Base addr in order to fit - // into bits 8:39 (i.e. drop 24 bits) - o_scomData.insertFromRight<HTM_MEM_TRC_MEM_BASE_ADDR, - HTM_MEM_TRC_MEM_BASE_ADDR_LEN> - (l_memBaseAddr[1] >> 24); - - o_scomData.insertFromRight<HTM_MEM_TRC_MEM_SIZE, - HTM_MEM_TRC_MEM_SIZE_LEN> - (l_htmSize[1]); - - if (l_smallMemSize[1] == true) - { - o_scomData.setBit<HTM_MEM_TRC_MEM_SIZE_SMALL>(); - } - else - { - o_scomData.clearBit<HTM_MEM_TRC_MEM_SIZE_SMALL>(); - } - } - else - { - // TODO: Need to setup CORE base addresses and mem sizes - } - - fapi_try_exit: - return fapi2::current_err; - } - -/// -/// @brief Common registers to setup for all HTM trace types. -/// The registers are: HTM_MEM, HTM_CTRL -/// -/// @param[in] i_target Reference to Processor Chip target -/// @param[in] i_htmModeRegAddr The base HTM Mode Register address -/// -/// @return FAPI2_RC_SUCCESS if success, else error code. -/// - // TODO: - // See review comments in: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/#/c/21527/ - // Need to templating for different targets (proc for NHTM, Core for CHTM - fapi2::ReturnCode setupHTMGeneric( - const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target, - const uint64_t i_htmModeRegAddr) - { - FAPI_INF("setupHTMGeneric"); - fapi2::ReturnCode l_rc; - fapi2::buffer<uint64_t> l_scomData; - uint8_t l_attrValue_uint8 = 0; - - // First, make sure the HTM status is in the correct state - FAPI_TRY(fapi2::getScom(i_target, i_htmModeRegAddr + HTM_STAT, - l_scomData), - "setupHTMGeneric: getScom returns error: Addr 0x%016llX, " - "l_rc 0x%.8X", i_htmModeRegAddr + HTM_STAT, - (uint64_t)fapi2::current_err); - - // HTM must be in "Complete", "Repair", or "Blank" state - FAPI_ASSERT( (l_scomData == 0) || - (l_scomData & (HTM_STAT_COMPLETE | HTM_STAT_REPAIR)), - fapi2::PROC_HTM_CTRL_BAD_STATE() - .set_HTM_STATUS_REG(l_scomData) - .set_TARGET(i_target), - "setupHTMGeneric: Can not setup HTM with current HTM state " - "0x%016llX", l_scomData); - - // ---------------- Setup HTM_MEM reg -----------------/ - l_scomData = 0; - - // Note: MEM_ALLOC must switch from 0->1 for this setup to complete - - // Set MEM_SCOPE - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_MEM_SCOPE, i_target, - l_attrValue_uint8), - "setupHTMGeneric: Error getting ATTR_HTMSC_MEM_SCOPE, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - l_scomData.insertFromRight<HTM_MEM_TRC_MEM_SCOPE, - HTM_MEM_TRC_MEM_SCOPE_LEN> - (l_attrValue_uint8); - - // Set MEM_PRIORITY - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_MEM_PRIORITY, i_target, - l_attrValue_uint8), - "setupHTMGeneric: Error getting ATTR_HTMSC_MEM_PRIORITY, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - - if (l_attrValue_uint8 == fapi2::ENUM_ATTR_HTMSC_MEM_PRIORITY_LOW) - { - l_scomData.clearBit<HTM_MEM_TRC_MEM_PRIORITY>(); // LOW - } - else - { - l_scomData.setBit<HTM_MEM_TRC_MEM_PRIORITY>(); // HIGH - } - - // Set MEM_BASE, MEM_SIZE, and MEM_SIZE_SMALL - FAPI_TRY(setMemBaseSize(i_target, i_htmModeRegAddr, l_scomData), - "setupHTMGeneric: setMemBaseSize() returns an error, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - - // Display HTM_MEM value to write to HW - FAPI_INF("setupHTMGeneric: HTM_MEM reg setup: 0x%016llX", l_scomData); - - // Write config data into HTM_MEM - FAPI_TRY(fapi2::putScom(i_target, i_htmModeRegAddr + HTM_MEM, - l_scomData), - "setupHTMGeneric: putScom returns error (1): " - "Addr 0x%016llX, l_rc 0x%.8X", - i_htmModeRegAddr + HTM_MEM, - (uint64_t)fapi2::current_err); - - // Set HTM_MEM configured bit (transition from 0 --> 1) - l_scomData.setBit<HTM_MEM_TRC_MEM_ALLOC>(); - FAPI_TRY(fapi2::putScom(i_target, i_htmModeRegAddr + HTM_MEM, - l_scomData), - "setupHTMGeneric: putScom returns error (2): " - "Addr 0x%016llX, l_rc 0x%.8X", - i_htmModeRegAddr + HTM_MEM, - (uint64_t)fapi2::current_err); - - - // ---------------- Setup HTM_CTRL reg -----------------/ - l_scomData = 0; - - // Set CTRL_TRIG - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_CTRL_TRIG, i_target, - l_attrValue_uint8), - "setupHTMGeneric: Error getting ATTR_HTMSC_CTRL_TRIG, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - l_scomData.insertFromRight<HTM_CTRL_TRIG_CTRL, - HTM_CTRL_TRIG_CTRL_LEN>(l_attrValue_uint8); - - // Set CTRL_MARK - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_CTRL_MARK, i_target, - l_attrValue_uint8), - "setupHTMGeneric: Error getting ATTR_HTMSC_CTRL_MARK, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - l_scomData.insertFromRight<HTM_CTRL_MARKER_CTRL, - HTM_CTRL_MARKER_CTRL_LEN>(l_attrValue_uint8); - - // Set CTRL_DBG0_STOP - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_CTRL_DBG0_STOP, i_target, - l_attrValue_uint8), - "setupHTMGeneric: Error getting ATTR_HTMSC_CTRL_DBG0_STOP, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - - if (l_attrValue_uint8 == fapi2::ENUM_ATTR_HTMSC_CTRL_DBG0_STOP_DISABLE) - { - l_scomData.clearBit<HTM_CTRL_STOP_ON_DBG_TRIG0>(); - } - else - { - l_scomData.setBit<HTM_CTRL_STOP_ON_DBG_TRIG0>(); - } - - // Set CTRL_DBG1_STOP - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_CTRL_DBG1_STOP, i_target, - l_attrValue_uint8), - "setupHTMGeneric: Error getting ATTR_HTMSC_CTRL_DBG1_STOP, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - - if (l_attrValue_uint8 == fapi2::ENUM_ATTR_HTMSC_CTRL_DBG1_STOP_DISABLE) - { - l_scomData.clearBit<HTM_CTRL_STOP_ON_DBG_TRIG1>(); - } - else - { - l_scomData.setBit<HTM_CTRL_STOP_ON_DBG_TRIG1>(); - } - - // Set CTRL_RUN_STOP - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_CTRL_RUN_STOP, i_target, - l_attrValue_uint8), - "setupHTMGeneric: Error getting ATTR_HTMSC_CTRL_RUN_STOP, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - - if (l_attrValue_uint8 == fapi2::ENUM_ATTR_HTMSC_CTRL_RUN_STOP_DISABLE) - { - l_scomData.clearBit<HTM_CTRL_TRC_RUN_TRIG_ACTION>(); - } - else - { - l_scomData.setBit<HTM_CTRL_TRC_RUN_TRIG_ACTION>(); - } - - // Set CTRL_OTHER_DBG0_STOP - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_CTRL_OTHER_DBG0_STOP, i_target, - l_attrValue_uint8), - "setupHTMGeneric: Error getting ATTR_HTMSC_CTRL_OTHER_DBG0_STOP, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - - if (l_attrValue_uint8 == fapi2::ENUM_ATTR_HTMSC_CTRL_OTHER_DBG0_STOP_DISABLE) - { - l_scomData.clearBit<HTM_CTRL_STOP_ON_OTHER_DBG_TRIG0>(); - } - else - { - l_scomData.setBit<HTM_CTRL_STOP_ON_OTHER_DBG_TRIG0>(); - } - - // Set CTRL_XSTOP_STOP - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_CTRL_XSTOP_STOP, i_target, - l_attrValue_uint8), - "setupHTMGeneric: Error getting ATTR_HTMSC_CTRL_XSTOP_STOP, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - - if (l_attrValue_uint8 == fapi2::ENUM_ATTR_HTMSC_CTRL_XSTOP_STOP_DISABLE) - { - l_scomData.clearBit<HTM_CTRL_STOP_ON_CHIPLET_XSTOP>(); - } - else - { - l_scomData.setBit<HTM_CTRL_STOP_ON_CHIPLET_XSTOP>(); - } - - // Display HTM_CTRL reg setup value - FAPI_INF("setupHTMGeneric: HTM_CTRL reg setup: 0x%016llX", l_scomData); - - // Write data to HTM_CTRL - FAPI_TRY(fapi2::putScom(i_target, i_htmModeRegAddr + HTM_CTRL, - l_scomData), - "setupHTMGeneric:: putScom returns error: " - "Addr 0x%016llX, l_rc 0x%.8X", - i_htmModeRegAddr + HTM_CTRL, - (uint64_t)fapi2::current_err); - - fapi_try_exit: - return fapi2::current_err; - } - -/// -/// @brief Specific registers to setup for Nest HTM FABRIC. -/// The registers are: NHTM_TTYPE_FILT, NHTM_FILT, and HTM_MODE -/// -/// @param[in] i_target Reference to Processor Chip target -/// @param[in] i_htmModeRegAddr The base HTM Mode Register address -/// -/// @return FAPI2_RC_SUCCESS if success, else error code. -/// - fapi2::ReturnCode setupHtmFabric( - const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target, - const uint64_t i_htmModeRegAddr) - - { - FAPI_INF("setupHtmFabric"); - fapi2::ReturnCode l_rc; - fapi2::buffer<uint64_t> l_scomData; - uint8_t l_attrValue_uint8 = 0; - uint32_t l_attrValue_uint32 = 0; - - - // ---------- Setup NHTM_TTYPE_FILT reg ------------ - l_scomData = 0; - - // Set TTYPEFILT_PAT - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_TTYPEFILT_PAT, i_target, - l_attrValue_uint8), - "setupHtmFabric: Error getting ATTR_HTMSC_TTYPEFILT_PAT, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - l_scomData.insertFromRight<NHTM_TTYPE_FILT_TTYPE_PATTERN, - NHTM_TTYPE_FILT_TTYPE_PATTERN_LEN> - (l_attrValue_uint8); - - // Set TSIZEFILT_PAT - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_TSIZEFILT_PAT, i_target, - l_attrValue_uint8), - "setupHtmFabric: Error getting ATTR_HTMSC_TSIZEFILT_PAT, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - l_scomData.insertFromRight<NHTM_TTYPE_FILT_TSIZE_PATTERN, - NHTM_TTYPE_FILT_TSIZE_PATTERN_LEN> - (l_attrValue_uint8); - - // Set TTYPEFILT_MASK - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_TTYPEFILT_MASK, i_target, - l_attrValue_uint8), - "setupHtmFabric: Error getting ATTR_HTMSC_TTYPEFILT_MASK, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - l_scomData.insertFromRight<NHTM_TTYPE_FILT_TTYPE_MASK, - NHTM_TTYPE_FILT_TTYPE_MASK_LEN> - (l_attrValue_uint8); - - // Set TSIZEFILT_MASK - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_TSIZEFILT_MASK, i_target, - l_attrValue_uint8), - "setupHtmFabric: Error getting ATTR_HTMSC_TSIZEFILT_MASK, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - l_scomData.insertFromRight<NHTM_TTYPE_FILT_TSIZE_MASK, - NHTM_TTYPE_FILT_TSIZE_MASK_LEN> - (l_attrValue_uint8); - - // Set TTYPEFILT_INVERT - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_TTYPEFILT_INVERT, i_target, - l_attrValue_uint8), - "setupHtmFabric: Error getting ATTR_HTMSC_TTYPEFILT_INVERT, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - - if (l_attrValue_uint8 == fapi2::ENUM_ATTR_HTMSC_TTYPEFILT_INVERT_MATCH) - { - l_scomData.clearBit<NHTM_TTYPE_FILT_TTYPEFILT_INV>(); - } - else - { - l_scomData.setBit<NHTM_TTYPE_FILT_TTYPEFILT_INV>(); - } - - // Set CRESPFILT_INVERT - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_CRESPFILT_INVERT, i_target, - l_attrValue_uint8), - "setupHtmFabric: Error getting ATTR_HTMSC_CRESPFILT_INVERT, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - - if (l_attrValue_uint8 == fapi2::ENUM_ATTR_HTMSC_CRESPFILT_INVERT_MATCH) - { - l_scomData.clearBit<NHTM_TTYPE_FILT_CRESPFILT_INV>(); - } - else - { - l_scomData.setBit<NHTM_TTYPE_FILT_CRESPFILT_INV>(); - } - - // Display NHTM_TTYPE_FILT reg setup value - FAPI_INF("setupHtmFabric: NHTM_TTYPE_FILT reg setup: 0x%016llX", - l_scomData); - - // Write HW - FAPI_TRY(fapi2::putScom(i_target, i_htmModeRegAddr + NHTM_TTYPE_FILT, - l_scomData), - "setupHtmFabric: putScom returns error: " - "Addr 0x%016llX, l_rc 0x%.8X", - i_htmModeRegAddr + NHTM_TTYPE_FILT, - (uint64_t)fapi2::current_err); - - // ------------------ Setup NHTM_FILT reg ------------------ - l_scomData = 0; - - // Set HTMSC_FILT_PAT - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_FILT_PAT, i_target, - l_attrValue_uint32), - "setupHtmFabric: Error getting ATTR_HTMSC_FILT_PAT, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - l_scomData.insertFromRight<NHTM_FILT_FILTER_PATTERN, - NHTM_FILT_FILTER_PATTERN_LEN> - (l_attrValue_uint32); - - // Set HTMSC_FILT_CRESP_PAT - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_FILT_CRESP_PAT, i_target, - l_attrValue_uint8), - "setupHtmFabric: Error getting ATTR_HTMSC_FILT_CRESP_PAT, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - l_scomData.insertFromRight<NHTM_FILT_FILTER_CRESP_PATTERN, - NHTM_FILT_FILTER_CRESP_PATTERN_LEN> - (l_attrValue_uint8); - - // Set HTMSC_FILT_MASK - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_FILT_MASK, i_target, - l_attrValue_uint32), - "setupHtmFabric: Error getting ATTR_HTMSC_FILT_MASK, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - l_scomData.insertFromRight<NHTM_FILT_FILTER_MASK, - NHTM_FILT_FILTER_MASK_LEN> - (l_attrValue_uint32); - - // Set HTMSC_FILT_CRESP_MASK - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_FILT_CRESP_MASK, i_target, - l_attrValue_uint8), - "setupHtmFabric: Error getting ATTR_HTMSC_FILT_CRESP_MASK, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - l_scomData.insertFromRight<NHTM_FILT_FILTER_CRESP_MASK, - NHTM_FILT_FILTER_CRESP_MASK_LEN> - (l_attrValue_uint8); - - // Display NHTM_TTYPE_FILT reg setup value - FAPI_INF("setupHtmFabric: NHTM_FILT reg setup: 0x%016llX", - l_scomData); - - // Write HW - FAPI_TRY(fapi2::putScom(i_target, i_htmModeRegAddr + NHTM_FILT, - l_scomData), - "setupHtmFabric: putScom returns error: " - "Addr 0x%016llX, l_rc 0x%.8X", - i_htmModeRegAddr + NHTM_FILT, - (uint64_t)fapi2::current_err); - - // -------------- Setup HTM_MODE reg ----------------- - l_scomData = 0; - - // Enable HTM - l_scomData.setBit<HTM_MODE_TRACE_ENABLE>(); - - // CONTENT_SEL - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_MODE_CONTENT_SEL, i_target, - l_attrValue_uint8), - "setupHtmFabric: Error getting ATTR_HTMSC_MODE_CONTENT_SEL, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - l_scomData.insertFromRight<HTM_MODE_CONTENT_SEL, - HTM_MODE_CONTENT_SEL_LEN> - (l_attrValue_uint8); - - // CAPTURE - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_MODE_CAPTURE, i_target, - l_attrValue_uint32), - "setupHtmFabric: Error getting ATTR_HTMSC_MODE_CAPTURE, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - l_scomData.insertFromRight<HTM_MODE_CAPTURE, - HTM_MODE_CAPTURE_LEN> - (l_attrValue_uint32); - - // WRAP mode - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_MODE_WRAP, i_target, - l_attrValue_uint8), - "setupHtmFabric: Error getting ATTR_HTMSC_MODE_WRAP, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - - if (l_attrValue_uint8 == fapi2::ENUM_ATTR_HTMSC_MODE_WRAP_DISABLE) - { - l_scomData.clearBit<HTM_MODE_WRAP_MODE>(); - } - else - { - l_scomData.setBit<HTM_MODE_WRAP_MODE>(); - } - - // DISABLE_TSTAMPS mode - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_MODE_DIS_TSTAMP, i_target, - l_attrValue_uint8), - "setupHtmFabric: Error getting ATTR_HTMSC_MODE_DIS_TSTAMP, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - - if (l_attrValue_uint8 == fapi2::ENUM_ATTR_HTMSC_MODE_DIS_TSTAMP_DISABLE) - { - l_scomData.setBit<HTM_MODE_DISABLE_TSTAMPS>(); - } - else - { - l_scomData.clearBit<HTM_MODE_DISABLE_TSTAMPS>(); - } - - // SINGLE_TSTAMPS mode - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_MODE_SINGLE_TSTAMP, i_target, - l_attrValue_uint8), - "setupHtmFabric: Error getting ATTR_HTMSC_MODE_SINGLE_TSTAMP, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - - if (l_attrValue_uint8 == fapi2::ENUM_ATTR_HTMSC_MODE_SINGLE_TSTAMP_DISABLE) - { - l_scomData.clearBit<HTM_MODE_SINGLE_TSTAMPS>(); - } - else - { - l_scomData.setBit<HTM_MODE_SINGLE_TSTAMPS>(); - } - - // MARKERS_ONLY mode - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_MODE_MARKERS_ONLY, i_target, - l_attrValue_uint8), - "setupHtmFabric: Error getting ATTR_HTMSC_MODE_MARKERS_ONLY, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - - if (l_attrValue_uint8 == - fapi2::ENUM_ATTR_HTMSC_MODE_MARKERS_ONLY_DISABLE) - { - l_scomData.clearBit<HTM_MODE_MARKERS_ONLY>(); - } - else - { - l_scomData.setBit<HTM_MODE_MARKERS_ONLY>(); - } - - // DISABLE_GROUP_SCOPE mode - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_MODE_DIS_FORCE_GROUP_SCOPE, - i_target, l_attrValue_uint8), - "setupHtmFabric: Error getting " - "ATTR_HTMSC_MODE_DIS_FORCE_GROUP_SCOPE, l_rc 0x%.8X", - (uint64_t)fapi2::current_err); - - if (l_attrValue_uint8 == - fapi2::ENUM_ATTR_HTMSC_MODE_DIS_FORCE_GROUP_SCOPE_DISABLE) - { - l_scomData.clearBit<HTM_MODE_DISABLE_FORCE_GRP_SCOPE>(); - } - else - { - l_scomData.setBit<HTM_MODE_DISABLE_FORCE_GRP_SCOPE>(); - } - - // SYNC_STAMP_FORCE mode - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_MODE_SYNC_STAMP_FORCE, i_target, - l_attrValue_uint8), - "setupHtmFabric: Error getting ATTR_HTMSC_MODE_SYNC_STAMP_FORCE, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - l_scomData.insertFromRight<HTM_MODE_SYNC_STAMP_FORCE, - HTM_MODE_SYNC_STAMP_FORCE_LEN> - (l_attrValue_uint8); - - // WRITETOIO mode - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_MODE_WRITETOIO, - i_target, l_attrValue_uint8), - "setupHtmFabric: Error getting ATTR_HTMSC_MODE_WRITETOIO, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - - if (l_attrValue_uint8 == fapi2::ENUM_ATTR_HTMSC_MODE_WRITETOIO_DISABLE) - { - l_scomData.clearBit<HTM_MODE_WRITETOIO>(); - } - else - { - l_scomData.setBit<HTM_MODE_WRITETOIO>(); - } - - // VGTARGET mode - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_HTMSC_MODE_VGTARGET, i_target, - l_attrValue_uint32), - "setupHtmFabric: Error getting ATTR_HTMSC_MODE_VGTARGET, " - "l_rc 0x%.8X", (uint64_t)fapi2::current_err); - l_scomData.insertFromRight<HTM_MODE_VGTARGET, - HTM_MODE_VGTARGET_LEN> - (l_attrValue_uint32); - - // Display HTM_MODE reg setup value - FAPI_INF("setupHtmFabric: HTM_MODE reg setup: 0x%016llX", l_scomData); - - // Write HW - FAPI_TRY(fapi2::putScom(i_target, i_htmModeRegAddr, l_scomData), - "setupHtmFabric: putScom returns error: " - "Addr 0x%016llX, l_rc 0x%.8X", - i_htmModeRegAddr, (uint64_t)fapi2::current_err); - - fapi_try_exit: - return fapi2::current_err; - } - - -/// -/// @brief Specific registers to setup for Core HTM CORE. -/// The registers are: TODO: list registers -/// -/// @param[in] i_target Reference to Processor Chip target -/// @param[in] i_htmModeRegAddr The base HTM Mode Register address -/// -/// @return FAPI2_RC_SUCCESS if success, else error code. -/// - - fapi2::ReturnCode setupHtmCore( - const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target, - const uint64_t i_htmModeRegAddr) - { - FAPI_INF("setupHtmCore"); - fapi2::ReturnCode l_rc; - - // TODO: Implement setupHtmCore when information is available. - - return fapi2::current_err; - } - -/// -/// @brief Specific HTM setup for Core HTM_LLAT -/// -/// @param[in] i_target Reference to Processor Chip target -/// @param[in] i_htmModeRegAddr The base HTM Mode Register address -/// -/// @return FAPI2_RC_SUCCESS if success, else error code. -/// - fapi2::ReturnCode setupHtmLlat( - const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target, - const uint64_t i_htmModeRegAddr) - { - FAPI_INF("setupHtmLlat"); - fapi2::ReturnCode l_rc; - - // TODO: Implement setupHtmLlat when information is available. - - return fapi2::current_err; - } - -/// /// @brief p9_htm_setup procedure entry point /// See doxygen in p9_htm_setup.H /// @@ -758,102 +54,7 @@ extern "C" { { FAPI_DBG("Entering p9_htm_setup"); fapi2::ReturnCode l_rc; - uint8_t l_nhtm_trace_type = 0; - uint8_t l_chtm_trace_type = 0; - auto l_modeRegList = std::vector<uint64_t>(); - - // Get NTHM trace option - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_NHTM_TRACE_TYPE, i_target, - l_nhtm_trace_type), - "p9_htm_setup: Error getting ATTR_NHTM_TRACE_TYPE, l_rc 0x%.8X", - (uint64_t)fapi2::current_err); - - // Get CTHM trace option - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHTM_TRACE_TYPE, i_target, - l_chtm_trace_type), - "p9_htm_setup: Error getting ATTR_CHTM_TRACE_TYPE, l_rc 0x%.8X", - (uint64_t)fapi2::current_err); - - // Display enabled HTM trace types - FAPI_INF("p9_htm_setup: NHTM type: 0x%.8X, CHTM type: 0x%.8X", - l_nhtm_trace_type, l_chtm_trace_type); - - // If no HTM trace collection is enabled, exit. - if ( (l_nhtm_trace_type == fapi2::ENUM_ATTR_NHTM_TRACE_TYPE_DISABLE) && - (l_chtm_trace_type == fapi2::ENUM_ATTR_CHTM_TRACE_TYPE_DISABLE) ) - { - FAPI_INF("p9_htm_setup: HTM traces are disabled."); - return l_rc; - } - - // ------------------------------------------------------ - // HTM is enabled, proceed with setup HTM - // ------------------------------------------------------ - - // --- Make a list of HTM_MODE register addresses to be setup --- - if (l_nhtm_trace_type != fapi2::ENUM_ATTR_NHTM_TRACE_TYPE_DISABLE) - { - l_modeRegList.push_back(PU_HTM0_HTM_MODE); - l_modeRegList.push_back(PU_HTM1_HTM_MODE); - } - - if (l_chtm_trace_type != fapi2::ENUM_ATTR_CHTM_TRACE_TYPE_DISABLE) - { - //TODO: Need to handle CHTM trace targets. - // See review comments in: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/#/c/21527/ - } - - // --------- Do setup for each register in list ---------------------- - for (auto itr = l_modeRegList.begin(); itr != l_modeRegList.end(); - ++itr) - { - // Setup generic registers - FAPI_TRY(setupHTMGeneric(i_target, (*itr)), - "p9_htm_setup: setupHTMGeneric returns an error, RegAddr " - "0x%016llX, l_rc 0x%.8X", (*itr), (uint64_t)fapi2::current_err); - - // Specific setup for Nest HTM FABRIC - if (l_nhtm_trace_type == fapi2::ENUM_ATTR_NHTM_TRACE_TYPE_FABRIC) - { - FAPI_TRY(setupHtmFabric(i_target, (*itr)), - "p9_htm_setup: setupHtmFabric returns an error, l_rc 0x%.8X", - (uint64_t)fapi2::current_err); - } - else // Other Nest HTM trace type are not yet supported - { - FAPI_ASSERT(false, fapi2::NHTM_TRACE_TYPE_NOT_SUPPORTED() - .set_NHTM_TRACE_TYPE(l_nhtm_trace_type), - "p9_htm_setup: Nest HTM trace type is not supported: " - "0x%.8X", l_nhtm_trace_type); - } - - // Specific setup for Core HTM - if (l_chtm_trace_type == fapi2::ENUM_ATTR_CHTM_TRACE_TYPE_CORE) - { - FAPI_TRY(setupHtmCore(i_target, (*itr)), - "p9_htm_setup: setupHtmCore returns an error, l_rc 0x%.8X", - (uint64_t)fapi2::current_err); - } - - // Specific setup for CHTM_LLAT - else if (l_chtm_trace_type == - fapi2::ENUM_ATTR_CHTM_TRACE_TYPE_LLAT) - { - FAPI_TRY(setupHtmLlat(i_target, (*itr)), - "p9_htm_setup: setupHtmLlat returns an error, l_rc 0x%.8X", - (uint64_t)fapi2::current_err); - } - // The rest of Core HTM trace types are not yet supported - else - { - FAPI_ASSERT(false, fapi2::CHTM_TRACE_TYPE_NOT_SUPPORTED() - .set_CHTM_TRACE_TYPE(l_chtm_trace_type), - "p9_htm_setup: Core HTM trace type is not supported: " - "0x%.8X", l_chtm_trace_type); - } - } - fapi_try_exit: FAPI_DBG("Exiting p9_htm_setup"); return fapi2::current_err; } diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_htm_setup.H b/src/import/chips/p9/procedures/hwp/nest/p9_htm_setup.H index 17f18b5b1..c7cbf57a0 100755 --- a/src/import/chips/p9/procedures/hwp/nest/p9_htm_setup.H +++ b/src/import/chips/p9/procedures/hwp/nest/p9_htm_setup.H @@ -7,7 +7,7 @@ /* */ /* EKB Project */ /* */ -/* COPYRIGHT 2015 */ +/* COPYRIGHT 2015,2016 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -45,200 +45,6 @@ typedef fapi2::ReturnCode (*p9_htm_setup_FP_t)( const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>&); -//---------------------------------------------------------------------------- -// Constant definitions -//---------------------------------------------------------------------------- -const uint8_t NUM_OF_HTM_REGIONS = 2; - -//----------------- -// Register offsets -//----------------- -// Register offsets from HTM Collection Mode Register, for NHTM and CHTM -const uint32_t HTM_MODE = 0x0; -const uint32_t HTM_MEM = 0x1; -const uint32_t HTM_STAT = 0x2; -const uint32_t HTM_LAST = 0x3; -const uint32_t HTM_TRIG = 0x4; -const uint32_t HTM_CTRL = 0x5; - -// Register offsets from HTM Collection Mode Register, for NHTM only -const uint32_t NHTM_FILT = 0x6; -const uint32_t NHTM_TTYPE_FILT = 0x7; -const uint32_t NHTM_CFG = 0x8; - -// Register offsets from HTM Collection Mode Register, for CHTM only -const uint32_t CHTM_IMA_STAT = 0xA; -const uint32_t CHTM_PDBAR = 0xB; - -//-------------------------------------------------------- -// HTM_MODE definitions -//-------------------------------------------------------- -// Bit definitions for HTM_MODE -const uint32_t HTM_MODE_TRACE_ENABLE = 0; -const uint32_t HTM_MODE_CONTENT_SEL = 1; -const uint32_t HTM_MODE_CAPTURE = 4; -const uint32_t HTM_MODE_WRAP_MODE = 13; -const uint32_t HTM_MODE_DISABLE_TSTAMPS = 14; -const uint32_t HTM_MODE_SINGLE_TSTAMPS = 15; -const uint32_t HTM_MODE_MARKERS_ONLY = 17; -const uint32_t HTM_MODE_DISABLE_FORCE_GRP_SCOPE = 18; -const uint32_t HTM_MODE_SYNC_STAMP_FORCE = 19; -const uint32_t HTM_MODE_WRITETOIO = 22; -const uint32_t HTM_MODE_VGTARGET = 24; - -// Bit len definitions -const uint32_t HTM_MODE_CONTENT_SEL_LEN = 2; -const uint32_t HTM_MODE_CAPTURE_LEN = 9; -const uint32_t HTM_MODE_SYNC_STAMP_FORCE_LEN = 3; -const uint32_t HTM_MODE_VGTARGET_LEN = 16; - -// Bit data values -const uint32_t HTM_MODE_CONTENT_SEL_CHTM_CORE = 0; -const uint32_t HTM_MODE_CONTENT_SEL_CHTM_LLAT = 1; -const uint32_t HTM_MODE_CONTENT_SEL_CHTM_OHA = 2; -const uint32_t HTM_MODE_CONTENT_SEL_CHTM_MEM = 3; - -//-------------------------------------------------------- -// HTM_MEM definitions -//-------------------------------------------------------- -const uint32_t HTM_MEM_TRC_MEM_ALLOC = 0; // Bit 0 -const uint32_t HTM_MEM_TRC_MEM_SCOPE = 1; // Bits 1:3 -const uint32_t HTM_MEM_TRC_MEM_PRIORITY = 4; // Bit 4 -const uint32_t HTM_MEM_TRC_MEM_SIZE_SMALL = 5; // Bit 5 -const uint32_t HTM_MEM_TRC_MEM_BASE_ADDR = 8; // Bits 8:39 -const uint32_t HTM_MEM_TRC_MEM_SIZE = 40; // Bits 40:48 - -// MEM_SCOPE definitions -const uint32_t HTM_MEM_TRC_MEM_SCOPE_LEN = 3; // Bits 1:3 - -// MEM_PRIORITY definitions -const uint32_t HTM_MEM_TRC_MEM_PRIORITY_LOW = 0; -const uint32_t HTM_MEM_TRC_MEM_PRIORITY_HIGH = 1; - -// MEM_BASE_ADDR definitions -const uint32_t HTM_MEM_TRC_MEM_BASE_ADDR_LEN = 32; - -// MEM_SIZE definitions -const uint32_t HTM_MEM_TRC_MEM_SIZE_LEN = 9; - -//-------------------------------------------------------- -// HTM_STAT definitions -//-------------------------------------------------------- -// Bit definitions for HTM_STAT -const uint32_t HTM_STAT_PURGE_IN_PROG = 0; -const uint32_t HTM_STAT_PURGE_DONE = 1; -const uint32_t HTM_STAT_CRESP_OV = 2; -const uint32_t HTM_STAT_REPAIR = 3; -const uint32_t HTM_STAT_BUF_WAIT = 4; -const uint32_t HTM_STAT_TRIG_DROPPED = 5; -const uint32_t HTM_STAT_ADDR_ERROR = 6; -const uint32_t HTM_STAT_REC_DROPPED = 7; -const uint32_t HTM_STAT_INIT = 8; -const uint32_t HTM_STAT_PREREQ = 9; -const uint32_t HTM_STAT_READY = 10; -const uint32_t HTM_STAT_TRACING = 11; -const uint32_t HTM_STAT_PAUSED = 12; -const uint32_t HTM_STAT_FLUSH = 13; -const uint32_t HTM_STAT_COMPLETE = 14; -const uint32_t HTM_STAT_ENABLE = 15; -const uint32_t HTM_STAT_STAMP = 16; -const uint32_t HTM_STAT_SCOM_ERROR = 17; -const uint32_t HTM_STAT_PARITY_ERROR = 18; -const uint32_t HTM_STAT_INVALID_CRESP = 18; - -//-------------------------------------------------------- -// HTM_CTRL definitions -//-------------------------------------------------------- -// Bit definitions for HTM_CTRL -const uint32_t HTM_CTRL_TRIG_CTRL = 0; -const uint32_t HTM_CTRL_MARKER_CTRL = 4; -const uint32_t HTM_CTRL_STOP_ON_DBG_TRIG0 = 6; -const uint32_t HTM_CTRL_STOP_ON_DBG_TRIG1 = 7; -const uint32_t HTM_CTRL_TRC_RUN_TRIG_ACTION = 8; -const uint32_t HTM_CTRL_STOP_ON_OTHER_DBG_TRIG0 = 9; -const uint32_t HTM_CTRL_STOP_ON_CHIPLET_XSTOP = 13; - -// Bit len definitions -const uint32_t HTM_CTRL_TRIG_CTRL_LEN = 2; -const uint32_t HTM_CTRL_MARKER_CTRL_LEN = 2; - -//-------------------------------------------------------- -// NHTM_TTYPE_FILT definitions -//-------------------------------------------------------- -// TODO: Verify p9_scomdef is correct (i.e. start from bit 1 instead of 0) -// Bit definitions for NHTM_TTYPE_FILT -const uint32_t NHTM_TTYPE_FILT_TTYPE_PATTERN = 1; -const uint32_t NHTM_TTYPE_FILT_TSIZE_PATTERN = 8; -const uint32_t NHTM_TTYPE_FILT_TTYPE_MASK = 17; -const uint32_t NHTM_TTYPE_FILT_TSIZE_MASK = 24; -const uint32_t NHTM_TTYPE_FILT_TTYPEFILT_INV = 32; -const uint32_t NHTM_TTYPE_FILT_CRESPFILT_INV = 33; - - -// Bit len definitions -const uint32_t NHTM_TTYPE_FILT_TTYPE_PATTERN_LEN = 7; -const uint32_t NHTM_TTYPE_FILT_TSIZE_PATTERN_LEN = 8; -const uint32_t NHTM_TTYPE_FILT_TTYPE_MASK_LEN = 7; -const uint32_t NHTM_TTYPE_FILT_TSIZE_MASK_LEN = 8; - -//-------------------------------------------------------- -// NHTM_FILT definitions -//-------------------------------------------------------- -// Bit definitions for NHTM_FILT -const uint32_t NHTM_FILT_FILTER_PATTERN = 0; -const uint32_t NHTM_FILT_FILTER_CRESP_PATTERN = 27; -const uint32_t NHTM_FILT_FILTER_MASK = 32; -const uint32_t NHTM_FILT_FILTER_CRESP_MASK = 59; - -// Bit len definitions -const uint32_t NHTM_FILT_FILTER_PATTERN_LEN = 23; -const uint32_t NHTM_FILT_FILTER_CRESP_PATTERN_LEN = 5; -const uint32_t NHTM_FILT_FILTER_MASK_LEN = 22; -const uint32_t NHTM_FILT_FILTER_CRESP_MASK_LEN = 5; - -// Bit data values -const uint32_t NHTM_FILT_FILTER_MASK_VAL = 0x3FFFFF; - -//-------------------------------------------------------- -// HTM_TRIG definitions -//-------------------------------------------------------- -// Bit definitions for HTM_TRIG -const uint32_t HTM_TRIG_START = 0; -const uint32_t HTM_TRIG_STOP = 1; -const uint32_t HTM_TRIG_PAUSE = 2; -const uint32_t HTM_TRIG_RESET = 4; -const uint32_t HTM_TRIG_MARK_VALID = 5; -const uint32_t HTM_TRIG_MARK_TYPE = 6; -const uint32_t HTM_TRIG_MARK_TYPE_LEN = 10; - -//-------------------------------------------------------- -// EQ_NCU_MODE_REG definitions (0x1001100A) -//-------------------------------------------------------- - -// NCU_MODE_REG bit definitions for EQ_NCU_MODE_REG -const uint32_t NCU_MODE_REG_HTM_ENABLE = 0; //TODO: Does't exist in P9 -const uint32_t NCU_MODE_REG_HTM_QUEUE_LIMIT = 0; -const uint32_t NCU_MODE_REG_IMA_ENABLE = 4; //TODO: Does't exist in P9 - -// Bit len definitions -const uint32_t NCU_MODE_REG_HTM_QUEUE_LIMIT_LEN = 2; - -// Size selected via HTM_MEM.MEM_SIZE_SMALL (bit 13) -enum htm_size_t -{ - HTM_512M_OR_16M = 0x0, - HTM_1G_OR_32M = 0x1, - HTM_2G_OR_64M = 0x3, - HTM_4G_OR_128M = 0x7, - HTM_8G_OR_256M = 0xF, - HTM_16G_OR_512M = 0x1F, - HTM_32G_OR_1G = 0x3F, - HTM_64G_OR_2G = 0x7F, - HTM_128G_OR_4G = 0xFF, - HTM_256G_OR_8G = 0x1FF -}; - - //------------------------------------------------------------------------------ // Function prototypes //------------------------------------------------------------------------------ diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_htm_start.C b/src/import/chips/p9/procedures/hwp/nest/p9_htm_start.C index a44b8f4e9..b7c70f0ae 100755 --- a/src/import/chips/p9/procedures/hwp/nest/p9_htm_start.C +++ b/src/import/chips/p9/procedures/hwp/nest/p9_htm_start.C @@ -7,7 +7,7 @@ /* */ /* EKB Project */ /* */ -/* COPYRIGHT 2015 */ +/* COPYRIGHT 2015,2016 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -37,95 +37,9 @@ // Includes //------------------------------------------------------------------------------ #include <p9_htm_start.H> -#include <p9_htm_setup.H> -#include <p9_misc_scom_addresses.H> -#include <p9_quad_scom_addresses.H> extern "C" { - -/// -/// @brief Start HTM collection -/// -/// @param[in] i_target Reference to Processor Chip target -/// @param[in] i_htmModeRegAddr The associated HTM Mode Register -/// -/// @return FAPI2_RC_SUCCESS if success, else error code. -/// - fapi2::ReturnCode startHTM( - const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target, - const uint64_t i_htmModeRegAddr) - { - FAPI_INF("startHTM"); - fapi2::ReturnCode l_rc; - fapi2::buffer<uint64_t> l_scomData(0); - uint32_t l_htmPendingActionCount = 0; - bool l_htmReady = false; - - // Verify HTM is in "Complete" state - FAPI_TRY(fapi2::getScom(i_target, i_htmModeRegAddr + HTM_STAT, l_scomData), - "startHTM: getScom returns error (1): Addr " - "0x%016llX, l_rc 0x%.8X", - i_htmModeRegAddr + HTM_STAT, - (uint64_t)fapi2::current_err); - - FAPI_ASSERT( (l_scomData & HTM_STAT_COMPLETE), - fapi2::PROC_HTM_CTRL_BAD_STATE() - .set_HTM_STATUS_REG(l_scomData) - .set_TARGET(i_target), - "startHTM: HTM is not in Complete state, can't reset " - "HTM_STAT 0x%016llX", l_scomData); - - - // Trigger START - l_scomData = 0; - l_scomData.setBit<HTM_TRIG_RESET>(); - FAPI_TRY(fapi2::putScom(i_target, i_htmModeRegAddr + HTM_TRIG, l_scomData), - "startHTM: putScom returns error: " - "Addr 0x%016llX, l_rc 0x%.8X", - i_htmModeRegAddr + HTM_TRIG, - (uint64_t)fapi2::current_err); - - // Waiting for Ready state - FAPI_INF("startHTM: Waiting for action to complete..."); - l_htmReady = false; - - while (l_htmPendingActionCount < PROC_HTM_CTRL_TIMEOUT_COUNT) - { - FAPI_TRY(fapi2::delay(PROC_HTM_CTRL_HW_NS_DELAY, - PROC_HTM_CTRL_SIM_CYCLE_DELAY), - "startHTM: fapi delay returns an error, l_rc 0x%.8X", - (uint64_t)fapi2::current_err); - - // Check ready bit - FAPI_TRY(fapi2::getScom(i_target, i_htmModeRegAddr + HTM_STAT, l_scomData), - "startHTM: getScom returns error (2): " - "Addr 0x%016llX, l_rc 0x%.8X", - i_htmModeRegAddr + HTM_STAT, - (uint64_t)fapi2::current_err); - - if (l_scomData & HTM_STAT_READY) - { - l_htmReady = true; - FAPI_INF("startHTM: HTM is ready."); - break; - } - - // "Complete" is not asserted yet; increment timeout and check again - l_htmPendingActionCount++; - } - - // Error out if Ready state is not set - FAPI_ASSERT( (l_htmReady == true), fapi2::PROC_HTM_CTRL_TIMEOUT() - .set_DELAY_COUNT(l_htmPendingActionCount) - .set_HTM_STATUS_REG(l_scomData), - "startHTM: Timeout waiting for Ready state, Count 0x%.8X, " - "HTM_STAT 0x%016llX", l_htmPendingActionCount, l_scomData ); - - fapi_try_exit: - return fapi2::current_err; - } - /// /// @brief p9_htm_start procedure entry point /// See doxygen in p9_htm_start.H @@ -134,61 +48,8 @@ extern "C" { const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target) { FAPI_DBG("Entering p9_htm_start"); - fapi2::ReturnCode l_rc; - uint8_t l_nhtm_trace_type = 0; - uint8_t l_chtm_trace_type = 0; - auto l_modeRegList = std::vector<uint64_t>(); - - - // Get NTHM trace option - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_NHTM_TRACE_TYPE, i_target, - l_nhtm_trace_type), - "p9_htm_start: Error getting ATTR_NHTM_TRACE_TYPE, l_rc 0x%.8X", - (uint64_t)fapi2::current_err); - - // Get CTHM trace option - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHTM_TRACE_TYPE, i_target, - l_chtm_trace_type), - "p9_htm_start: Error getting ATTR_CHTM_TRACE_TYPE, l_rc 0x%.8X", - (uint64_t)fapi2::current_err); - - // Display enabled HTM trace types - FAPI_INF("p9_htm_start: NHTM type: 0x%.8X, CHTM type: 0x%.8X", - l_nhtm_trace_type, l_chtm_trace_type); - - // If no HTM trace collection is enabled, exit. - if ( (l_nhtm_trace_type == fapi2::ENUM_ATTR_NHTM_TRACE_TYPE_DISABLE) && - (l_chtm_trace_type == fapi2::ENUM_ATTR_CHTM_TRACE_TYPE_DISABLE) ) - { - FAPI_INF("p9_htm_start: HTM traces are disabled."); - return l_rc; - } - - // --------- Get the registers for Nest HTM ---------------------- - if (l_nhtm_trace_type != fapi2::ENUM_ATTR_NHTM_TRACE_TYPE_DISABLE) - { - l_modeRegList.push_back(PU_HTM0_HTM_MODE); - l_modeRegList.push_back(PU_HTM1_HTM_MODE); - } - - // --------- Get the register for Core HTM ---------------------- - if (l_chtm_trace_type != fapi2::ENUM_ATTR_CHTM_TRACE_TYPE_DISABLE) - { - l_modeRegList.push_back(EQ_HTM_MODE); - } - - // --------- Start HTM ---------------------- - for (auto itr = l_modeRegList.begin(); itr != l_modeRegList.end(); - ++itr) - { - FAPI_TRY( startHTM(i_target, (*itr)), - "p9_htm_start: startHTM() returns error: Addr 0x%016llX, " - "l_rc 0x%.8X", - (*itr), (uint64_t)fapi2::current_err ); - } - fapi_try_exit: FAPI_DBG("Exiting p9_htm_start"); return fapi2::current_err; } diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_htm_start.H b/src/import/chips/p9/procedures/hwp/nest/p9_htm_start.H index ec055411b..2f6a8b808 100755 --- a/src/import/chips/p9/procedures/hwp/nest/p9_htm_start.H +++ b/src/import/chips/p9/procedures/hwp/nest/p9_htm_start.H @@ -7,7 +7,7 @@ /* */ /* EKB Project */ /* */ -/* COPYRIGHT 2015 */ +/* COPYRIGHT 2015,2016 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -45,17 +45,6 @@ typedef fapi2::ReturnCode (*p9_htm_start_FP_t)( const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>&); -//---------------------------------------------------------------------------- -// Constant definitions -//---------------------------------------------------------------------------- - -// Timeout count for HTM control -const uint32_t PROC_HTM_CTRL_TIMEOUT_COUNT = 20; - -// HTM operations delay times for HW/sim -const uint32_t PROC_HTM_CTRL_HW_NS_DELAY = 50000; -const uint32_t PROC_HTM_CTRL_SIM_CYCLE_DELAY = 50000; - //------------------------------------------------------------------------------ // Function prototypes //------------------------------------------------------------------------------ diff --git a/src/import/chips/p9/procedures/xml/error_info/p9_htm_start_errors.xml b/src/import/chips/p9/procedures/xml/error_info/p9_htm_start_errors.xml deleted file mode 100644 index 07afde2e1..000000000 --- a/src/import/chips/p9/procedures/xml/error_info/p9_htm_start_errors.xml +++ /dev/null @@ -1,38 +0,0 @@ -<!-- IBM_PROLOG_BEGIN_TAG --> -<!-- This is an automatically generated prolog. --> -<!-- --> -<!-- $Source: chips/p9/procedures/xml/error_info/p9_htm_start_errors.xml $ --> -<!-- --> -<!-- IBM CONFIDENTIAL --> -<!-- --> -<!-- EKB Project --> -<!-- --> -<!-- COPYRIGHT 2015 --> -<!-- [+] International Business Machines Corp. --> -<!-- --> -<!-- --> -<!-- 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. --> -<!-- --> -<!-- IBM_PROLOG_END_TAG --> -<!-- File: p9_htm_start_errors.xml. --> -<!-- Error definitions for p9_htm_start HWP. --> - -<hwpErrors> - -<hwpError> - <rc>RC_PROC_HTM_CTRL_TIMEOUT</rc> - <description> - HTM state machine change did not complete in allotted time. - </description> - <ffdc>DELAY_COUNT</ffdc> - <ffdc>HTM_STATUS_REG</ffdc> - <callout> - <procedure>CODE</procedure> - <priority>LOW</priority> - </callout> - <!-- TODO: Add deconfigure/HW callout --> -</hwpError> - -</hwpErrors> |

