summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoshua Hannan <jlhannan@us.ibm.com>2016-09-16 15:59:26 -0500
committerChristian R. Geddes <crgeddes@us.ibm.com>2016-09-28 17:57:44 -0400
commit4d0306e4803ef8cff2b275ccdf879c8ebc096826 (patch)
tree5ceffb7d50f3d7fe078dcec5d5a4d38b86355765
parent0b67e6ec69a48a9ea75f29e54bf7cf85dbb793f1 (diff)
downloadtalos-hostboot-4d0306e4803ef8cff2b275ccdf879c8ebc096826.tar.gz
talos-hostboot-4d0306e4803ef8cff2b275ccdf879c8ebc096826.zip
HW386071 defect workaround
Change-Id: Ie934cb2042a0e3a186c89f9c5497292848aefefc Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/29870 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: CHRISTINA L. GRAVES <clgraves@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/30432 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_mpipl_chip_cleanup.C20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_mpipl_chip_cleanup.C b/src/import/chips/p9/procedures/hwp/nest/p9_mpipl_chip_cleanup.C
index 5566ea7ae..038b63a09 100644
--- a/src/import/chips/p9/procedures/hwp/nest/p9_mpipl_chip_cleanup.C
+++ b/src/import/chips/p9/procedures/hwp/nest/p9_mpipl_chip_cleanup.C
@@ -77,6 +77,9 @@ extern "C"
{
const uint8_t MAX_MCD_DIRS = 2; //Max of 2 MCD Directories (even and odd)
fapi2::buffer<uint64_t> fsi_data[MAX_MCD_DIRS];
+ fapi2::buffer<uint64_t> w_data(0x00030001);
+ fapi2::buffer<uint64_t> r_data;
+ const uint64_t C_INT_VC_VSD_TABLE_DATA(0x5013202);
const uint64_t ARY_MCD_RECOVERY_CTRL_REGS_ADDRS[MAX_MCD_DIRS] =
{
PU_BANK0_MCD_REC, //MCD even recovery control register address
@@ -88,6 +91,23 @@ extern "C"
"Odd" //Ptr to char string "Odd" for odd MCD
};
+
+ // HW386071: INT unit has a defect that might result in fake ecc errors. Have to do these four writes and reads to scom registers
+ FAPI_TRY(fapi2::putScom(i_target, PU_INT_VC_VSD_TABLE_ADDR, w_data),
+ "putScom error selecting address 1");
+
+ FAPI_TRY(fapi2::getScom(i_target, C_INT_VC_VSD_TABLE_DATA, r_data),
+ "getScom error reading from address 1");
+
+ w_data.clearBit<63>();
+ FAPI_TRY(fapi2::putScom(i_target, PU_INT_VC_VSD_TABLE_ADDR, w_data),
+ "putScom error selecting address 0");
+
+ w_data.flush<0>();
+ FAPI_TRY(fapi2::putScom(i_target, C_INT_VC_VSD_TABLE_DATA, w_data),
+ "putScom error writing to address 0");
+ // HW386071
+
//Verify MCD recovery was previously disabled for even and odd slices
//If not, this is an error condition
for (uint8_t counter = 0; counter < MAX_MCD_DIRS; counter++)
OpenPOWER on IntegriCloud