summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures/hwp/io
diff options
context:
space:
mode:
authorSumit Kumar <sumit_kumar@in.ibm.com>2016-01-27 00:57:27 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-10-11 22:36:55 -0400
commit5f5036753835bb6972661988a19408782a8658e8 (patch)
tree5dda5a3386dc82b55c3d76e54fe3d3b79e724c36 /src/import/chips/p9/procedures/hwp/io
parent865ed6cc78d1f685c10998c0c7be04fa150a9d3f (diff)
downloadtalos-hostboot-5f5036753835bb6972661988a19408782a8658e8.tar.gz
talos-hostboot-5f5036753835bb6972661988a19408782a8658e8.zip
Erepair HWP p9_io_erepair procedure
- Added clock group parameter in api to identify the higher/lower order bus width of XBUS-X0 & X1 - Added AccessorHwpFuncs Change-Id: Id00219cc437e4949f2bcbdb239d46d9e1db36ed0 Original-Change-Id: Ieb9b1072ed73b26b321ec16f0742271f48aff810 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/10587 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/48244 Tested-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/io')
-rwxr-xr-xsrc/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.H276
1 files changed, 276 insertions, 0 deletions
diff --git a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.H b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.H
new file mode 100755
index 000000000..28e976aaf
--- /dev/null
+++ b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.H
@@ -0,0 +1,276 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.H $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2015,2017 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+///
+/// @file p9_io_erepairAccessorHwpFuncs.H
+/// @brief FW Team utility functions that access fabric and memory eRepair data.
+///
+//----------------------------------------------------------------------------
+
+
+#ifndef P9_IO_EREPAIRACCESSORHWPFUNCS_H_
+#define P9_IO_EREPAIRACCESSORHWPFUNCS_H_
+
+#include <fapi2.H>
+#include <algorithm>
+
+const uint8_t EREPAIR_MAX_CENTAUR_PER_MCS = 1;
+
+typedef fapi2::ReturnCode (*getLanes_t)(
+ const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
+ fapi2::TARGET_TYPE_OBUS |
+ fapi2::TARGET_TYPE_MEMBUF_CHIP |
+ fapi2::TARGET_TYPE_MCS_CHIPLET |
+ fapi2::TARGET_TYPE_MCS > &i_tgtHandle,
+ const uint8_t i_clkGroup,
+ std::vector<uint8_t>& o_txFailLanes,
+ std::vector<uint8_t>& o_rxFailLanes);
+
+typedef fapi2::ReturnCode (*setLanes_t)(
+ const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
+ fapi2::TARGET_TYPE_OBUS |
+ fapi2::TARGET_TYPE_MEMBUF_CHIP |
+ fapi2::TARGET_TYPE_MCS_CHIPLET |
+ fapi2::TARGET_TYPE_MCS > &i_tgtHandle,
+ const uint8_t i_clkGroup,
+ const std::vector<uint8_t>& i_txFailLanes,
+ const std::vector<uint8_t>& i_rxFailLanes);
+
+/**
+ * @brief FW Team Utility function that gets eRepair data from the VPD
+ * This function gets the eRepair data from both the Field VPD
+ * and the Manufacturing VPD.
+ *
+ * @param[in] i_endp_target Reference to X-Bus or O-Bus or MCS or memBuf Target
+ * @param[in] i_clkGroup Specifies clock group 0:[XOA, X1A,..] 1:[X0B, X1B,..]
+ * @param[out] o_txFailLanes Reference to a Vector that will contain the fail
+ * lanes read from the VPD for Drive side
+ * @param[out] o_rxFailLanes Reference to a Vector that will contain the fail
+ * lanes read from the VPD for Receive side
+ * @return ReturnCode
+ *
+ */
+fapi2::ReturnCode erepairGetFailedLanes(
+ const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
+ fapi2::TARGET_TYPE_OBUS |
+ fapi2::TARGET_TYPE_MEMBUF_CHIP |
+ fapi2::TARGET_TYPE_MCS_CHIPLET |
+ fapi2::TARGET_TYPE_MCS > &i_endp_target,
+ const uint8_t i_clkGroup,
+ std::vector<uint8_t>& o_txFailLanes,
+ std::vector<uint8_t>& o_rxFailLanes);
+
+/**
+ * @brief FW Team Utility function that gets eRepair data
+ *
+ * This is a wrapper function for the Accessor HWP which reads failed lane
+ * numbers from the Field VPD
+ *
+ * @param[in] i_endp_target Reference to X-Bus or O-Bus or MCS or memBuf Target
+ * @param[in] i_clkGroup Specifies clock group 0:[XOA, X1A,..] 1:[X0B, X1B,..]
+ * @param[out] o_txFailLanes Reference to a Vector that will contain the fail
+ * lanes read from the Field VPD for Drive side
+ * @param[out] o_rxFailLanes Reference to a Vector that will contain the fail
+ * lanes read from the Field VPD for Receive side
+ * @return ReturnCode
+ *
+ */
+fapi2::ReturnCode erepairGetFieldFailedLanes(
+ const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
+ fapi2::TARGET_TYPE_OBUS |
+ fapi2::TARGET_TYPE_MEMBUF_CHIP |
+ fapi2::TARGET_TYPE_MCS_CHIPLET |
+ fapi2::TARGET_TYPE_MCS > &i_endp_target,
+ const uint8_t i_clkGroup,
+ std::vector<uint8_t>& o_txFailLanes,
+ std::vector<uint8_t>& o_rxFailLanes);
+
+/**
+ * @brief FW Team Utility function that gets eRepair data
+ *
+ * This is a wrapper function for the Accessor HWP which reads failed lane
+ * numbers from the Manufacturing VPD
+ *
+ * @param[in] i_endp_target Reference to X-Bus or O-Bus or MCS or memBuf Target
+ * @param[in] i_clkGroup Specifies clock group 0:[XOA, X1A,..] 1:[X0B, X1B,..]
+ * @param[out] o_txFailLanes Reference to a Vector that will contain the fail
+ * lanes read from the Mnfg VPD for Drive side
+ * @param[out] o_rxFailLanes Reference to a Vector that will contain the fail
+ * lanes read from the Mnfg VPD for Receive side
+ * @return ReturnCode
+ *
+ */
+fapi2::ReturnCode erepairGetMnfgFailedLanes(
+ const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
+ fapi2::TARGET_TYPE_OBUS |
+ fapi2::TARGET_TYPE_MEMBUF_CHIP |
+ fapi2::TARGET_TYPE_MCS_CHIPLET |
+ fapi2::TARGET_TYPE_MCS > &i_endp_target,
+ const uint8_t i_clkGroup,
+ std::vector<uint8_t>& o_txFailLanes,
+ std::vector<uint8_t>& o_rxFailLanes);
+
+/**
+ * @brief FW Team Utility function that sets eRepair data in the VPD.
+ * This functions sets the eRepair data to either the Field VPD
+ * or the Manufacturing VPD depending on whether the IPL was done
+ * in normal mode or Manufacturing mode.
+ * It writes eRepair data to the VPD of both the endpoint targets
+ * passed as arguments.
+ *
+ * @param[in] i_txEndp_target Reference to X-Bus or O-Bus or MCS or memBuf
+ * Target. This is the peer target of
+ * i_rxEndp_target
+ * @param[in] i_rxEndp_target Reference to X-Bus or O-Bus or MCS or memBuf
+ * Target. This is the target on which the
+ * badlanes were found
+ * @param[in] i_rxFailLanes Vector that will contain the fail lanes
+ * to be written to VPD for Receive side
+ * @param[in] i_clkGroup Specifies clock group 0:[XOA, X1A,..] 1:[X0B, X1B,..]
+ * @param[out] o_thresholdExceed If TRUE, indicates that the eRepair threshold
+ * has exceeded, FALSE otherwise.
+ *
+ * @return ReturnCode
+ */
+fapi2::ReturnCode erepairSetFailedLanes(
+ const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
+ fapi2::TARGET_TYPE_OBUS |
+ fapi2::TARGET_TYPE_MEMBUF_CHIP |
+ fapi2::TARGET_TYPE_MCS_CHIPLET |
+ fapi2::TARGET_TYPE_MCS > &i_txEndp_target,
+ const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
+ fapi2::TARGET_TYPE_OBUS |
+ fapi2::TARGET_TYPE_MEMBUF_CHIP |
+ fapi2::TARGET_TYPE_MCS_CHIPLET |
+ fapi2::TARGET_TYPE_MCS > &i_rxEndp_target,
+ const std::vector<uint8_t>& i_rxFailLanes,
+ const uint8_t i_clkGroup,
+ bool& o_thresholdExceed);
+
+/**
+ * @brief FW Team Utility function that sets eRepair data in Field VPD
+ *
+ * This is a wrapper function for the Accessor HWP which writes failed lane
+ * numbers to the Field VPD
+ *
+ * @param[in] i_endp_target Reference to X-Bus or O-Bus or MCS or memBuf Target
+ * @param[in] i_clkGroup Specifies clock group 0:[XOA, X1A,..] 1:[X0B, X1B,..]
+ * @param[in] i_txFailLanes Vector that will contain the fail lane
+ * to be written to Field VPD for Drive side
+ * @param[in] i_rxFailLanes Vector that will contain the fail lanes
+ * to be written to Field VPD for Receive side
+ *
+ * @return ReturnCode
+ */
+fapi2::ReturnCode erepairSetFieldFailedLanes(
+ const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
+ fapi2::TARGET_TYPE_OBUS |
+ fapi2::TARGET_TYPE_MEMBUF_CHIP |
+ fapi2::TARGET_TYPE_MCS_CHIPLET |
+ fapi2::TARGET_TYPE_MCS > &i_endp_target,
+ const uint8_t i_clkGroup,
+ const std::vector<uint8_t>& i_txFailLanes,
+ const std::vector<uint8_t>& i_rxFailLanes);
+
+/**
+ * @brief FW Team Utility function that sets eRepair data in Manufacturing VPD
+ *
+ * This is a wrapper function for the Accessor HWP which writes failed lane
+ * numbers to the Manufacturing VPD
+ *
+ * @param[in] i_endp_target Reference to X-Bus or O-Bus or MCS or memBuf Target
+ * @param[in] i_clkGroup Specifies clock group 0:[XOA, X1A,..] 1:[X0B, X1B,..]
+ * @param[in] i_txFailLanes Vector that will contain the fail lane
+ * to be written to Mnfg VPD for Drive side
+ * @param[in] i_rxFailLanes Vector that will contain the fail lanes
+ * to be written to Mnfg VPD for Receive side
+ *
+ * @return ReturnCode
+ */
+fapi2::ReturnCode erepairSetMnfgFailedLanes(
+ const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
+ fapi2::TARGET_TYPE_OBUS |
+ fapi2::TARGET_TYPE_MEMBUF_CHIP |
+ fapi2::TARGET_TYPE_MCS_CHIPLET |
+ fapi2::TARGET_TYPE_MCS > &i_endp_target,
+ const uint8_t i_clkGroup,
+ const std::vector<uint8_t>& i_txFailLanes,
+ const std::vector<uint8_t>& i_rxFailLanes);
+
+/**
+ * @brief Function which retrieves the lanes that need to be restored for the
+ * given end point targets
+ *
+ * This function is called by the iStep dispatcher during the Restore Repair
+ * iStep for Fabric buses and DMI buses. The caller need to make sure that the
+ * first and fourth arguments are the endpoint targets of a Fabric bus or
+ * DMI bus.
+ * It calls the wrapper functions of Accessor HWP to read the fail lane data
+ * recorded in the VPD on both the ends and verifies that there are matching
+ * records on both the ends. If matching fail lanes are not found, the
+ * corresponding fail lane data is invalidated using the wrapper Accessor HWP
+ * that writes data to the VPD.
+ *
+ * @param [in] i_endp1_target Reference to X-Bus or O-Bus or MCS Target
+ * @param [in] i_endp2_target Reference to X-Bus or O-Bus or MCS Target
+ * @param[in] i_clkGroup Specifies clock group 0:[XOA, X1A,..] 1:[X0B, X1B,..]
+ * @param [out] o_endp1_txFaillanes Reference to vector that will have the
+ * fail lane numbers that need to be restored
+ * for the Tx side of the target passed
+ * as first param
+ * @param [out] o_endp1_rxFaillanes Reference to vector that will have the
+ * fail lane numbers that need to be restored
+ * for the Rx side of the target passed
+ * as first param
+ * @param [out] o_endp2_txFaillanes Reference to vector that will have the
+ * fail lane numbers that need to be restored
+ * for the Tx side of the target passed
+ * as fourth param
+ * @param [out] o_endp2_rxFaillanes Reference to vector that will have the
+ * fail lane numbers that need to be restored
+ * for the Rx side of the target passed
+ * as fourth param
+ *
+ * @return ReturnCode
+ *
+ */
+
+fapi2::ReturnCode erepairGetRestoreLanes(
+ const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
+ fapi2::TARGET_TYPE_OBUS |
+ fapi2::TARGET_TYPE_MEMBUF_CHIP |
+ fapi2::TARGET_TYPE_MCS_CHIPLET |
+ fapi2::TARGET_TYPE_MCS > &i_endp1_target,
+ const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
+ fapi2::TARGET_TYPE_OBUS |
+ fapi2::TARGET_TYPE_MEMBUF_CHIP |
+ fapi2::TARGET_TYPE_MCS_CHIPLET |
+ fapi2::TARGET_TYPE_MCS > &i_endp2_target,
+ const uint8_t i_clkGroup,
+ std::vector<uint8_t>& o_endp1_txFaillanes,
+ std::vector<uint8_t>& o_endp1_rxFaillanes,
+ std::vector<uint8_t>& o_endp2_txFaillanes,
+ std::vector<uint8_t>& o_endp2_rxFaillanes);
+
+#endif
OpenPOWER on IntegriCloud