From 5ce2333d7d4ac137d389ed5c1ce58795d791ff01 Mon Sep 17 00:00:00 2001 From: Nick Bofferding Date: Mon, 16 Jul 2018 17:37:14 -0500 Subject: Secure Boot: Clear XBUS FIR bits after SMP enabled Previously, XBUS link training kept track of bad lanes before and after the link training procedure, so as to clear FIR bits for old problems. This violates secure boot restrictions, so this change relocates the FIR bit clearing to after the SMP has been built Change-Id: I8f180801d98d693beb04a890936bb07f9c977dfb CQ: SW437852 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/62629 Reviewed-by: ILYA SMIRNOV Reviewed-by: Michael Baiocchi Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Tested-by: FSP CI Jenkins Reviewed-by: Nicholas E. Bofferding Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/63093 --- src/usr/isteps/istep10/call_proc_build_smp.C | 60 ++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 13 deletions(-) (limited to 'src/usr') diff --git a/src/usr/isteps/istep10/call_proc_build_smp.C b/src/usr/isteps/istep10/call_proc_build_smp.C index e8b39ed57..b3ce48516 100644 --- a/src/usr/isteps/istep10/call_proc_build_smp.C +++ b/src/usr/isteps/istep10/call_proc_build_smp.C @@ -22,23 +22,24 @@ /* permissions and limitations under the License. */ /* */ /* IBM_PROLOG_END_TAG */ -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include // targeting support -#include -#include -#include -#include +#include +#include +#include +#include -#include -#include -#include +#include +#include +#include +#include //@TODO RTC:150562 - Remove when BAR setting handled by INTRRP #include @@ -210,6 +211,39 @@ void* call_proc_build_smp (void *io_pArgs) } } + // Clear XBUS FIR bits for bad lanes that existed prior to + // link training + TARGETING::TargetHandleList xbusTargets; + getChildChiplets(xbusTargets, *curproc, TYPE_XBUS); + for(auto pXbusTarget : xbusTargets) + { + TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, + "Calling p9_io_xbus_erepair_cleanup HWP for XBUS with " + "HUID of 0x%08X", + TARGETING::get_huid(pXbusTarget)); + + const fapi2::Target + fapi2_xbus(pXbusTarget); + + FAPI_INVOKE_HWP(l_errl, + p9_io_xbus_erepair_cleanup, + fapi2_xbus); + if(l_errl) + { + TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, ERR_MRK + "ERROR : Call to p9_io_xbus_erepair_cleanup HWP " + "for XBUS with HUID of 0x%08X failed. " + "PLID=0x%08X, EID=0x%08X, Reason=0x%04X", + TARGETING::get_huid(pXbusTarget), + l_errl->plid(), + l_errl->eid(), + l_errl->reasonCode()); + ErrlUserDetailsTarget(pXbusTarget).addToLog(l_errl); + l_StepError.addErrorDetails(l_errl); + errlCommit(l_errl,HWPF_COMP_ID); + } + } + ++curproc; } -- cgit v1.2.3