Skip to content

Commit

Permalink
p9_mss_setup_bars - Setup MCFIR mask
Browse files Browse the repository at this point in the history
Change-Id: Ie1642c615ba461b3ce19770cd52025aef8447d36
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/36564
Reviewed-by: Marc Gollub <gollub@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: CHRISTINA L. GRAVES <clgraves@us.ibm.com>
Reviewed-by: Joseph J. McGill <jmcgill@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/36611
Reviewed-by: Hostboot Team <hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
  • Loading branch information
ibmthi authored and dcrowell77 committed Feb 27, 2017
1 parent 04cd54e commit 0dbc286
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 2 deletions.
73 changes: 73 additions & 0 deletions src/import/chips/p9/procedures/hwp/nest/p9_mss_setup_bars.C
Expand Up @@ -1075,6 +1075,74 @@ fapi2::ReturnCode writeMCBarData(
return fapi2::current_err;
}


///
/// @brief Unmask FIR before opening BARs
///
/// @param[in] i_mcBarDataPair Target pair <target, data>
///
/// @return FAPI2_RC_SUCCESS if success, else error code.
///
template<fapi2::TargetType T>
fapi2::ReturnCode unmaskMCFIR(
const std::vector<std::pair<fapi2::Target<T>, mcsBarData_t>>& i_mcBarDataPair);

template<> // TARGET_TYPE_MCS
fapi2::ReturnCode unmaskMCFIR(
const std::vector<std::pair<fapi2::Target<fapi2::TARGET_TYPE_MCS>, mcsBarData_t>>& i_mcBarDataPair)
{
FAPI_DBG("Entering");
fapi2::ReturnCode l_rc;
fapi2::buffer<uint64_t> l_mcfiraction;
fapi2::buffer<uint64_t> l_mcfirmask_and;

// Setup MC Fault Isolation Action1 register buffer
l_mcfiraction.setBit<MCS_MCFIR_MC_INTERNAL_RECOVERABLE_ERROR>();

// Setup FIR bits in MC Fault Isolation Mask Register buffer
l_mcfirmask_and.flush<1>();
l_mcfirmask_and.clearBit<MCS_MCFIR_MC_INTERNAL_RECOVERABLE_ERROR>();
l_mcfirmask_and.clearBit<MCS_MCFIR_MC_INTERNAL_NONRECOVERABLE_ERROR>();
l_mcfirmask_and.clearBit<MCS_MCFIR_POWERBUS_PROTOCOL_ERROR>();
l_mcfirmask_and.clearBit<MCS_MCFIR_MULTIPLE_BAR>();
l_mcfirmask_and.clearBit<MCS_MCFIR_INVALID_ADDRESS>();
l_mcfirmask_and.clearBit<MCS_MCFIR_COMMAND_LIST_TIMEOUT>();

for (auto l_pair : i_mcBarDataPair)
{
fapi2::Target<fapi2::TARGET_TYPE_MCS> l_target = l_pair.first;
char l_targetStr[fapi2::MAX_ECMD_STRING_LEN];
fapi2::toString(l_target, l_targetStr, sizeof(l_targetStr));
FAPI_INF("Unmask FIR for MCS target: %s", l_targetStr);

// Write MC FIR action1
FAPI_TRY(fapi2::putScom(l_target, MCS_MCFIRACT1, l_mcfiraction),
"Error from putScom (MCS_MCFIRACT1)");

// Write mask
FAPI_TRY(fapi2::putScom(l_target, MCS_MCFIRMASK_AND, l_mcfirmask_and),
"Error from putScom (MCS_MCFIRMASK_AND)");

} // Data pair loop

fapi_try_exit:
FAPI_DBG("Exit");
return fapi2::current_err;
}

template<> // TARGET_TYPE_MI
fapi2::ReturnCode unmaskMCFIR(
const std::vector<std::pair<fapi2::Target<fapi2::TARGET_TYPE_MI>, mcsBarData_t>>& i_mcBarDataPair)
{
FAPI_DBG("Entering");
fapi2::ReturnCode l_rc;

// Add code for MI

FAPI_DBG("Exit");
return fapi2::current_err;
}

///
/// @brief p9_mss_setup_bars procedure entry point
/// See doxygen in p9_mss_setup_bars.H
Expand Down Expand Up @@ -1139,6 +1207,11 @@ fapi2::ReturnCode p9_mss_setup_bars(
"buildMCBarData() returns error, l_rc 0x%.8X",
(uint64_t)fapi2::current_err);

// Unmask MC FIRs
FAPI_TRY(unmaskMCFIR(l_mcsBarDataPair),
"unmaskMCFIR() returns error, l_rc 0x%.8X",
(uint64_t)fapi2::current_err);

// Write data to MCS
FAPI_TRY(writeMCBarData(l_mcsBarDataPair),
"writeMCBarData() returns error, l_rc 0x%.8X",
Expand Down
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2015,2016 */
/* Contributors Listed Below - COPYRIGHT 2015,2017 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand Down Expand Up @@ -134,7 +134,11 @@ revert_mcs_hb_dcbz_config(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_t
FAPI_TRY(fapi2::putScom(i_target, MCS_MCMODE1_ARR[i_mcs], l_mcmode1),
"Error from putScom (MCS%d_MCMODE1)", i_mcs);

// MCFIRMASK -- don't remask FIR (per Joe, Marc)
// Re-mask MCFIR. We want to ensure all MCSs are masked
// until the BARs are opened later during IPL.
l_mcfirmask.flush<1>();
FAPI_TRY(fapi2::putScom(i_target, MCS_MCFIRMASK, l_mcfirmask),
"Error from putScom (MCS_MCFIRMASK)");
}

fapi_try_exit:
Expand Down

0 comments on commit 0dbc286

Please sign in to comment.