diff options
author | Zane Shelley <zshelle@us.ibm.com> | 2018-07-16 21:59:41 -0500 |
---|---|---|
committer | Zane C. Shelley <zshelle@us.ibm.com> | 2018-07-18 21:28:28 -0400 |
commit | 1ff70a1f246d98e03e3b3862d9ec96e5e9a80a73 (patch) | |
tree | eed3363193990cd60829fcccda5e45d5bbf858d8 /src/usr/diag/prdf | |
parent | c2b1cfab3f5913669a1a3f0eec1cffb3b0a44e59 (diff) | |
download | talos-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-x | src/usr/diag/prdf/common/plat/prdfRasServices_common.C | 28 | ||||
-rw-r--r-- | src/usr/diag/prdf/prdfErrlUtil.H | 6 |
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); /** |