summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorThi Tran <thi@us.ibm.com>2016-06-11 08:18:13 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-06-14 10:14:51 -0400
commitd41f09f156a711db1db217c1ff9fbcd8a5eb30c5 (patch)
treeb433597d502d4b0c8c98b7a991789b2fdc72b204 /src
parent440b56312ec87a28849b7ccb7f63c3ff7d611d11 (diff)
downloadblackbird-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')
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_htm_adu_ctrl.C55
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_htm_adu_ctrl.H57
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_htm_adu_ctrl.mk21
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_htm_def.H42
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_htm_reset.C55
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_htm_reset.H64
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_htm_reset.mk22
-rwxr-xr-xsrc/import/chips/p9/procedures/hwp/nest/p9_htm_setup.C801
-rwxr-xr-xsrc/import/chips/p9/procedures/hwp/nest/p9_htm_setup.H196
-rwxr-xr-xsrc/import/chips/p9/procedures/hwp/nest/p9_htm_start.C141
-rwxr-xr-xsrc/import/chips/p9/procedures/hwp/nest/p9_htm_start.H13
-rw-r--r--src/import/chips/p9/procedures/xml/error_info/p9_htm_start_errors.xml38
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>
OpenPOWER on IntegriCloud