Skip to content

Commit e904aae

Browse files
stermoledcrowell77
authored andcommitted
Add workaround for Nimbus symbol mark performance hw bug
This is the HWP portion of the fix for HW474117. When a symbol mark is placed, it activates the WAT bit to force exit-0 bypass disable in the ecc checker. It also masks the FIR attention bit for the WAT. Change-Id: I0516e19a623880d9ed659b2e7e0a89c6facb95cc CQ:SW453101 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/74813 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/74831 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
1 parent c00d44a commit e904aae

File tree

4 files changed

+39
-14
lines changed

4 files changed

+39
-14
lines changed

src/import/chips/p9/procedures/hwp/memory/lib/mc/port.C

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
/* */
66
/* OpenPOWER HostBoot Project */
77
/* */
8-
/* Contributors Listed Below - COPYRIGHT 2016,2018 */
8+
/* Contributors Listed Below - COPYRIGHT 2016,2019 */
99
/* [+] International Business Machines Corp. */
1010
/* */
1111
/* */
@@ -38,6 +38,7 @@
3838
#include <lib/shared/mss_const.H>
3939
#include <generic/memory/lib/utils/scom.H>
4040
#include <lib/ecc/ecc.H>
41+
#include <lib/workarounds/mca_workarounds.H>
4142

4243
namespace mss
4344
{
@@ -358,6 +359,9 @@ fapi2::ReturnCode place_symbol_mark(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>
358359
FAPI_TRY( mss::ecc::set_fwms(l_mca, i_rank, l_galois, mss::ecc::fwms::mark_type::SYMBOL,
359360
mss::ecc::fwms::mark_region::MRANK, l_addr) );
360361

362+
// Apply workaround for HW474117 if we place a symbol mark
363+
FAPI_TRY( mss::workarounds::disable_bypass(l_mca) );
364+
361365
fapi_try_exit:
362366
return fapi2::current_err;
363367
}

src/import/chips/p9/procedures/hwp/memory/lib/workarounds/mca_workarounds.C

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
/* */
66
/* OpenPOWER HostBoot Project */
77
/* */
8-
/* Contributors Listed Below - COPYRIGHT 2017,2018 */
8+
/* Contributors Listed Below - COPYRIGHT 2017,2019 */
99
/* [+] International Business Machines Corp. */
1010
/* */
1111
/* */
@@ -175,6 +175,25 @@ fapi_try_exit:
175175
return fapi2::current_err;
176176
}
177177

178+
///
179+
/// @brief Disable bypass on port with symbol mark placed
180+
/// @param[in] i_target the fapi2 target of the port
181+
/// @return fapi2::ReturnCode FAPI2_RC_SUCCESS if ok
182+
/// @note The workaround for HW474117 applies to all EC versions, so no switch is necessary
183+
///
184+
fapi2::ReturnCode disable_bypass( const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target )
185+
{
186+
fapi2::buffer<uint64_t> l_mca_dbgr_buffer;
187+
188+
// Trigger WAT logic to 'disable bypass' for the given port: set DBGR[8]
189+
FAPI_TRY( mss::getScom(i_target, MCA_DBGR, l_mca_dbgr_buffer) );
190+
l_mca_dbgr_buffer.setBit<MCA_DBGR_ECC_WAT_ENABLE>();
191+
FAPI_TRY( mss::putScom(i_target, MCA_DBGR, l_mca_dbgr_buffer) );
192+
193+
fapi_try_exit:
194+
return fapi2::current_err;
195+
}
196+
178197
} // ns workarounds
179198

180199
} // ns mss

src/import/chips/p9/procedures/hwp/memory/lib/workarounds/mca_workarounds.H

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
/* */
66
/* OpenPOWER HostBoot Project */
77
/* */
8-
/* Contributors Listed Below - COPYRIGHT 2017 */
8+
/* Contributors Listed Below - COPYRIGHT 2017,2019 */
99
/* [+] International Business Machines Corp. */
1010
/* */
1111
/* */
@@ -71,6 +71,13 @@ fapi2::ReturnCode disable_cid_parity(const fapi2::Target<fapi2::TARGET_TYPE_MCA>
7171
///
7272
fapi2::ReturnCode str_non_tsv_parity(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target);
7373

74+
///
75+
/// @brief Disable bypass on port with symbol mark placed
76+
/// @param[in] i_target the fapi2 target of the port
77+
/// @return fapi2::ReturnCode FAPI2_RC_SUCCESS if ok
78+
///
79+
fapi2::ReturnCode disable_bypass( const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target );
80+
7481
} // ns workarounds
7582

7683
} // ns mss

src/import/chips/p9/procedures/hwp/memory/lib/workarounds/mcbist_workarounds.C

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
/* */
66
/* OpenPOWER HostBoot Project */
77
/* */
8-
/* Contributors Listed Below - COPYRIGHT 2016,2018 */
8+
/* Contributors Listed Below - COPYRIGHT 2016,2019 */
99
/* [+] International Business Machines Corp. */
1010
/* */
1111
/* */
@@ -147,28 +147,23 @@ fapi2::ReturnCode end_of_rank( const fapi2::Target<TARGET_TYPE_MCBIST>& i_target
147147
///
148148
/// @brief WAT debug attention
149149
/// For Nimbus DD1 the MCBIST engine uses the WAT debug bit as a workaround
150+
/// For Nimbus DD2 the WAT debug bit is used for a different workaround
150151
/// @param[in] i_target the fapi2 target of the mcbist
151152
/// @return fapi2::ReturnCode FAPI2_RC_SUCCESS if ok
152153
///
153154
fapi2::ReturnCode wat_debug_attention( const fapi2::Target<fapi2::TARGET_TYPE_MCBIST>& i_target )
154155
{
155156
// MCBIST attentions are already special attention
156-
if (mss::chip_ec_feature_mss_wat_debug_attn(i_target))
157-
{
158-
fapi2::ReturnCode l_rc;
159-
fir::reg<MCBIST_MCBISTFIRQ> mcbist_fir_register(i_target, l_rc);
160-
FAPI_TRY(l_rc, "unable to create fir::reg for %d", MCBIST_MCBISTFIRQ);
157+
fapi2::ReturnCode l_rc;
158+
fir::reg<MCBIST_MCBISTFIRQ> mcbist_fir_register(i_target, l_rc);
159+
FAPI_TRY(l_rc, "unable to create fir::reg for %d", MCBIST_MCBISTFIRQ);
161160

162-
FAPI_TRY(mcbist_fir_register.attention<MCBIST_MCBISTFIRQ_WAT_DEBUG_ATTN>().write());
163-
}
164-
165-
return fapi2::FAPI2_RC_SUCCESS;
161+
FAPI_TRY(mcbist_fir_register.attention<MCBIST_MCBISTFIRQ_WAT_DEBUG_ATTN>().write());
166162

167163
fapi_try_exit:
168164
return fapi2::current_err;
169165
}
170166

171-
172167
///
173168
/// @brief BROADCAST OUT OF SYNC workaround
174169
/// A UE noise window is triggered by UE/AUEs causing an out of sync error

0 commit comments

Comments
 (0)