summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf
diff options
context:
space:
mode:
authorZane Shelley <zshelle@us.ibm.com>2018-07-16 21:59:41 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2018-07-18 21:28:28 -0400
commit1ff70a1f246d98e03e3b3862d9ec96e5e9a80a73 (patch)
treeeed3363193990cd60829fcccda5e45d5bbf858d8 /src/usr/diag/prdf
parentc2b1cfab3f5913669a1a3f0eec1cffb3b0a44e59 (diff)
downloadtalos-hostboot-1ff70a1f246d98e03e3b3862d9ec96e5e9a80a73.tar.gz
talos-hostboot-1ff70a1f246d98e03e3b3862d9ec96e5e9a80a73.zip
PRD: no deconfig during checkstop, delayed deconfig during TI
Change-Id: I8d86925883aff73a139571661db6f832f418f656 CQ: SW418420 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/62599 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com> Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com> Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com> Reviewed-by: Matt Derksen <mderkse1@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/62815 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src/usr/diag/prdf')
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/prdfRasServices_common.C28
-rw-r--r--src/usr/diag/prdf/prdfErrlUtil.H6
2 files changed, 20 insertions, 14 deletions
diff --git a/src/usr/diag/prdf/common/plat/prdfRasServices_common.C b/src/usr/diag/prdf/common/plat/prdfRasServices_common.C
index 50b140300..882114d1c 100755
--- a/src/usr/diag/prdf/common/plat/prdfRasServices_common.C
+++ b/src/usr/diag/prdf/common/plat/prdfRasServices_common.C
@@ -393,27 +393,35 @@ errlHndl_t ErrDataService::GenerateSrcPfa( ATTENTION_TYPE i_attnType,
//--------------------------------------------------------------------------
HWAS::DeconfigEnum deconfigPolicy = HWAS::NO_DECONFIG;
- bool deferDeconfig = false;
- if ( HWAS::GARD_NULL != gardPolicy )
+ // NOTE: If gardPolicy is HWAS::GARD_Fatal don't deconfig. The system will
+ // reboot and the garded part will be deconfigured early in the next
+ // IPL. This avoids problems where a deconfig will make the part
+ // unavailable for a dump.
+ // NOTE: No deconfigs (via hardware callouts) are allowed at runtime.
+
+ if ( HWAS::GARD_Predictive == gardPolicy )
{
#if !defined(__HOSTBOOT_MODULE) // FSP only
- // Change the deconfig state based the gard type. This is only required
- // to control what the FSP does during the reconfig loop.
- deconfigPolicy = HWSV::SvrError::isInHwReconfLoop() ? HWAS::DECONFIG
- : HWAS::NO_DECONFIG;
+ // If we are within the reconfig loop, we can do a deconfig. Otherwise,
+ // treat it as if the error happened a runtime. Note that this must be
+ // a delayed deconfig to ensure we don't take an parts out from
+ // underneath us during analysis.
+ if ( HWSV::SvrError::isInHwReconfLoop() )
+ deconfigPolicy = HWAS::DELAYED_DECONFIG;
#elif !defined(__HOSTBOOT_RUNTIME) // Hostboot only
- // Deferred Deconfig should be used throughout all of Hostboot (both
- // checkForIplAttns() and MDIA).
- deconfigPolicy = HWAS::DECONFIG;
- deferDeconfig = true;
+ // Must do a delayed deconfig to trigger a reconfig loop at the end of
+ // the istep.
+ deconfigPolicy = HWAS::DELAYED_DECONFIG;
#endif
}
+ bool deferDeconfig = ( HWAS::DELAYED_DECONFIG == deconfigPolicy );
+
//--------------------------------------------------------------------------
// Get the HCDB diagnostics policy.
//--------------------------------------------------------------------------
diff --git a/src/usr/diag/prdf/prdfErrlUtil.H b/src/usr/diag/prdf/prdfErrlUtil.H
index ed90a0553..6da0d9b7d 100644
--- a/src/usr/diag/prdf/prdfErrlUtil.H
+++ b/src/usr/diag/prdf/prdfErrlUtil.H
@@ -170,8 +170,7 @@
i_severity, i_diag_need) \
io_errl->addHwCallout(i_target, \
(const HWAS::callOutPriority)i_priority, \
- (i_deconfigState == HWAS::DECONFIG ? \
- HWAS::DELAYED_DECONFIG : i_deconfigState), \
+ i_deconfigState, \
(const HWAS::GARD_ErrorType)i_gardErrType); \
(void)(i_diag_need)
@@ -183,8 +182,7 @@
io_errl->addClockCallout(i_target, \
i_clockType, \
(const HWAS::callOutPriority)i_priority, \
- (i_deconfigState == HWAS::DECONFIG ? \
- HWAS::DELAYED_DECONFIG : i_deconfigState), \
+ i_deconfigState, \
i_gardErrType);
/**
OpenPOWER on IntegriCloud