From 63a8b58f12b7127eafebd3cd5a716ecfe3d924d6 Mon Sep 17 00:00:00 2001 From: Joachim Fenkes Date: Fri, 1 Feb 2019 10:43:02 +0100 Subject: p9_tod_setup: Workaround for HW480181 Initialize the remote sync checker tolerance to the widest possible value to make sure we drop out of any persistent fail state before we start the slave TOD in p9_tod_init. p9_tod_init will set the tolerance back to a sane value. Change-Id: Ia51e1fda9612c17a0a82246d153fa30b0293804f Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/71186 Tested-by: FSP CI Jenkins Tested-by: HWSV CI Tested-by: Hostboot CI Tested-by: Jenkins Server Reviewed-by: Joseph J. McGill Reviewed-by: Kevin F. Reick Reviewed-by: Jennifer A. Stofer Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/71227 Tested-by: Jenkins OP Build CI Reviewed-by: Daniel M. Crowell --- src/import/chips/p9/procedures/hwp/nest/p9_tod_setup.C | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/import/chips/p9/procedures/hwp') diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_tod_setup.C b/src/import/chips/p9/procedures/hwp/nest/p9_tod_setup.C index df7ef4895..1c7b2c6c3 100644 --- a/src/import/chips/p9/procedures/hwp/nest/p9_tod_setup.C +++ b/src/import/chips/p9/procedures/hwp/nest/p9_tod_setup.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2018 */ +/* Contributors Listed Below - COPYRIGHT 2015,2019 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -42,6 +42,8 @@ //-------------------------------------------------------------------------- #include +const uint64_t M_PATH_CTRL_REG_CLEAR_VALUE = 0x0000003F00000000; +const uint64_t S_PATH_CTRL_REG_CLEAR_VALUE = 0x0000003F00000000; /// @brief MPIPL specific steps to clear the previous topology, this should be // called only during MPIPL @@ -66,8 +68,8 @@ fapi2::ReturnCode mpipl_clear_tod_node( fapi2::buffer l_rx_ttype_ctrl_reg = 0; fapi2::buffer l_tx_ttype5_reg = 0; fapi2::buffer l_tod_load_reg = 0; - fapi2::buffer l_m_path_ctrl_reg = 0; - fapi2::buffer l_s_path_ctrl_reg = 0; + fapi2::buffer l_m_path_ctrl_reg = M_PATH_CTRL_REG_CLEAR_VALUE; + fapi2::buffer l_s_path_ctrl_reg = S_PATH_CTRL_REG_CLEAR_VALUE; FAPI_INF("MPIPL: stop step checkers"); //Stop step checkers @@ -171,6 +173,13 @@ fapi2::ReturnCode clear_tod_node( 0x0ULL), "Error from putScom (0x%08X)!", l_port_ctrl_check_reg); + // Workaround for HW480181: Init remote sync checker tolerance to maximum; + // will be closed down by tod_init later. + FAPI_TRY(fapi2::putScom(*(i_tod_node->i_target), + PERV_TOD_S_PATH_CTRL_REG, + S_PATH_CTRL_REG_CLEAR_VALUE), + "Error from putScom (0x%08X)!", l_port_ctrl_check_reg); + // TOD is cleared for this node; if it has children, start clearing // their registers -- cgit v1.2.1