summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2017-02-28 10:31:51 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-03-10 17:39:55 -0500
commit2e7437135df82d44f4c099840c5da6767ce01f48 (patch)
treebefa11d4300854207a6c335f63131457c4ae4591
parent83bbce773e36e1d460d1324668c9de81c6a808ac (diff)
downloadtalos-hostboot-2e7437135df82d44f4c099840c5da6767ce01f48.tar.gz
talos-hostboot-2e7437135df82d44f4c099840c5da6767ce01f48.zip
Avoid potential pnor deadlock for xscom errors
The problem we have here is if we get an xscom fail in the act of loading one of the HWAS code pages after the point where HWAS has been loaded at least once, or even that an HWAS code page is not present in memory when we take an XSCOM error. Change-Id: I1acf6586886ecd5f05575769405808a2a590df27 RTC: 130367 Backport: yes Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/37191 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Reviewed-by: Richard J. Knight <rjknight@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Marshall J. Wilks <mjwilks@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
-rw-r--r--src/usr/errl/errlentry.C14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/usr/errl/errlentry.C b/src/usr/errl/errlentry.C
index 8f430a70b..eeebfb68e 100644
--- a/src/usr/errl/errlentry.C
+++ b/src/usr/errl/errlentry.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2011,2016 */
+/* Contributors Listed Below - COPYRIGHT 2011,2017 */
/* [+] Google Inc. */
/* [+] International Business Machines Corp. */
/* */
@@ -549,9 +549,19 @@ void ErrlEntry::addHwCallout(const TARGETING::Target *i_target,
"addHwCallout(\"MASTER_PROC_SENTINEL\" 0x%x 0x%x 0x%x)",
i_target, i_priority, i_deconfigState, i_gardErrorType);
#endif
+
+ //need to override deconfig value to avoid possible deadlocks
+ // in pnor
+ HWAS::DeconfigEnum l_deconfigState = i_deconfigState;
+ if( i_deconfigState == HWAS::DELAYED_DECONFIG )
+ {
+ TRACFCOMP( g_trac_errl, "addHwCallout> Forcing delayed deconfig to standard deconfig on sentinel" );
+ l_deconfigState = HWAS::DECONFIG;
+ }
+
ErrlUserDetailsCallout(
&HWAS::TARGET_IS_SENTINEL, sizeof(HWAS::TARGET_IS_SENTINEL),
- i_priority, i_deconfigState, i_gardErrorType).addToLog(this);
+ i_priority, l_deconfigState, i_gardErrorType).addToLog(this);
}
else
{ // we got a non MASTER_SENTINEL target, therefore the targeting
OpenPOWER on IntegriCloud