diff options
author | Dan Crowell <dcrowell@us.ibm.com> | 2017-02-28 10:31:51 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-03-10 17:39:55 -0500 |
commit | 2e7437135df82d44f4c099840c5da6767ce01f48 (patch) | |
tree | befa11d4300854207a6c335f63131457c4ae4591 /src/usr/errl | |
parent | 83bbce773e36e1d460d1324668c9de81c6a808ac (diff) | |
download | talos-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>
Diffstat (limited to 'src/usr/errl')
-rw-r--r-- | src/usr/errl/errlentry.C | 14 |
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 |