summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures/hwp/memory/lib/fir/memdiags_fir.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/memory/lib/fir/memdiags_fir.C')
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/fir/memdiags_fir.C175
1 files changed, 0 insertions, 175 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/fir/memdiags_fir.C b/src/import/chips/p9/procedures/hwp/memory/lib/fir/memdiags_fir.C
deleted file mode 100644
index f4ab6727c..000000000
--- a/src/import/chips/p9/procedures/hwp/memory/lib/fir/memdiags_fir.C
+++ /dev/null
@@ -1,175 +0,0 @@
-/* IBM_PROLOG_BEGIN_TAG */
-/* This is an automatically generated prolog. */
-/* */
-/* $Source: src/import/chips/p9/procedures/hwp/memory/lib/fir/memdiags_fir.C $ */
-/* */
-/* OpenPOWER HostBoot Project */
-/* */
-/* Contributors Listed Below - COPYRIGHT 2016,2019 */
-/* [+] 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 memdiags_fir.C
-/// @brief Subroutines for memdiags/prd FIR
-///
-// *HWP HWP Owner: Stephen Glancy <sglancy@us.ibm.com>
-// *HWP HWP Backup: Marc Gollub <gollub@us.ibm.com>
-// *HWP Team: Memory
-// *HWP Level: 3
-// *HWP Consumed by: FSP:HB
-
-#include <lib/shared/nimbus_defaults.H>
-#include <fapi2.H>
-#include <p9_mc_scom_addresses.H>
-#include <p9_mc_scom_addresses_fld.H>
-
-#include <generic/memory/lib/utils/scom.H>
-#include <generic/memory/lib/utils/find.H>
-#include <lib/fir/fir.H>
-#include <lib/fir/memdiags_fir.H>
-#include <lib/mc/port.H>
-#include <lib/workarounds/mcbist_workarounds.H>
-
-using fapi2::TARGET_TYPE_MCBIST;
-using fapi2::TARGET_TYPE_MCA;
-
-namespace mss
-{
-
-namespace unmask
-{
-
-///
-/// @brief Unmask and setup actions for memdiags related FIR
-/// @param[in] i_target the fapi2::Target MCBIST
-/// @return fapi2::ReturnCode FAPI2_RC_SUCCESS iff ok
-///
-template<>
-fapi2::ReturnCode after_memdiags( const fapi2::Target<TARGET_TYPE_MCBIST>& i_target )
-{
- fapi2::ReturnCode l_rc;
- fapi2::buffer<uint64_t> dsm0_buffer;
- fapi2::buffer<uint64_t> l_mnfg_buffer;
- uint64_t rd_tag_delay = 0;
- uint64_t wr_done_delay = 0;
- fapi2::buffer<uint64_t> l_aue_buffer;
- fapi2::ATTR_CHIP_EC_FEATURE_HW414700_Type l_checkstop_flag;
- constexpr uint64_t MNFG_THRESHOLDS_ATTR = 63;
-
- // Broadcast mode workaround for UEs causing out of sync
- FAPI_TRY(mss::workarounds::mcbist::broadcast_out_of_sync(i_target, mss::ON));
-
- for (const auto& p : mss::find_targets<TARGET_TYPE_MCA>(i_target))
- {
- fir::reg<MCA_FIR> l_ecc64_fir_reg(p, l_rc);
- FAPI_TRY(l_rc, "unable to create fir::reg for %d", MCA_FIR);
-
- fir::reg<MCA_MBACALFIRQ> l_cal_fir_reg(p, l_rc);
- FAPI_TRY(l_rc, "unable to create fir::reg for %d", MCA_MBACALFIRQ);
-
- // Read out the wr_done and rd_tag delays and find min
- // and set the RCD Protect Time to this value
- FAPI_TRY (mss::read_dsm0q_register(p, dsm0_buffer) );
- mss::get_wrdone_delay(dsm0_buffer, wr_done_delay);
- mss::get_rdtag_delay(dsm0_buffer, rd_tag_delay);
- const auto rcd_protect_time = std::min(wr_done_delay, rd_tag_delay);
- FAPI_TRY (mss::change_rcd_protect_time(p, rcd_protect_time) );
-
- l_ecc64_fir_reg.checkstop<MCA_FIR_MAINLINE_AUE>()
- .recoverable_error<MCA_FIR_MAINLINE_UE>()
- .checkstop<MCA_FIR_MAINLINE_IAUE>()
- .recoverable_error<MCA_FIR_MAINLINE_IUE>();
-
- l_cal_fir_reg.recoverable_error<MCA_MBACALFIRQ_PORT_FAIL>();
-
- // If ATTR_CHIP_EC_FEATURE_HW414700 is enabled set checkstops
- auto l_chip_target = mss::find_target<fapi2::TARGET_TYPE_PROC_CHIP>(i_target);
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_HW414700, l_chip_target, l_checkstop_flag) );
-
- // If the system is running DD2 chips override some recoverable firs with checkstop
- // Due to a known hardware defect with DD2 certain errors are not handled properly
- // As a result, these firs are marked as checkstop for DD2 to avoid any mishandling
- if (l_checkstop_flag)
- {
- l_ecc64_fir_reg.checkstop<MCA_FIR_MAINLINE_UE>()
- .checkstop<MCA_FIR_MAINLINE_RCD>();
- l_cal_fir_reg.checkstop<MCA_MBACALFIRQ_PORT_FAIL>();
- }
-
- // If MNFG FLAG Threshhold is enabled skip IUE unflagging
- FAPI_TRY ( mss::mnfg_flags(l_mnfg_buffer) );
-
- if ( !(l_mnfg_buffer.getBit<MNFG_THRESHOLDS_ATTR>()) )
- {
- l_ecc64_fir_reg.recoverable_error<MCA_FIR_MAINTENANCE_IUE>();
- }
-
- FAPI_TRY(l_ecc64_fir_reg.write(), "unable to write fir::reg %d", MCA_FIR);
- FAPI_TRY(l_cal_fir_reg.write(), "unable to write fir::reg %d", MCA_MBACALFIRQ);
-
- // Change Maint AUE and IAUE to checkstop without unmasking
- // Normal setup modifies masked bits in addition to setting checkstop
- // This causes issues if error has occured, manually scoming to avoid this
- FAPI_TRY( mss::getScom(p, MCA_ACTION1, l_aue_buffer) );
- l_aue_buffer.clearBit<MCA_FIR_MAINTENANCE_AUE>();
- l_aue_buffer.clearBit<MCA_FIR_MAINTENANCE_IAUE>();
- FAPI_TRY( mss::putScom(p, MCA_ACTION1, l_aue_buffer) );
-
- // Note: We also want to include the following setup RCD recovery and port fail
- FAPI_TRY( mss::change_port_fail_disable(p, mss::LOW) );
- FAPI_TRY( mss::change_rcd_recovery_disable(p, mss::LOW) );
- }
-
- return fapi2::FAPI2_RC_SUCCESS;
-
-fapi_try_exit:
- return fapi2::current_err;
-}
-
-///
-/// @brief Unmask and setup actions for scrub related FIR
-/// @param[in] i_target the fapi2::Target MCBIST
-/// @return fapi2::ReturnCode FAPI2_RC_SUCCESS iff ok
-///
-template<>
-fapi2::ReturnCode after_background_scrub( const fapi2::Target<TARGET_TYPE_MCBIST>& i_target )
-{
- for (const auto& p : mss::find_targets<TARGET_TYPE_MCA>(i_target))
- {
- fapi2::ReturnCode l_rc;
- fir::reg<MCA_FIR> l_ecc64_fir_reg(p, l_rc);
- FAPI_TRY(l_rc, "unable to create fir::reg for %d", MCA_FIR);
-
- l_ecc64_fir_reg.recoverable_error<MCA_FIR_MAINLINE_MPE_RANK_0_TO_7,
- MCA_FIR_MAINLINE_MPE_RANK_0_TO_7_LEN>()
- .recoverable_error<MCA_FIR_MAINLINE_NCE>()
- .recoverable_error<MCA_FIR_MAINLINE_TCE>()
- .recoverable_error<MCA_FIR_MAINLINE_IMPE>()
- .recoverable_error<MCA_FIR_MAINTENANCE_IMPE>();
-
- FAPI_TRY(l_ecc64_fir_reg.write(), "unable to write fir::reg %d", MCA_FIR);
- }
-
- return fapi2::FAPI2_RC_SUCCESS;
-
-fapi_try_exit:
- return fapi2::current_err;
-}
-
-}
-}
OpenPOWER on IntegriCloud