diff options
author | Richard J. Knight <rjknight@us.ibm.com> | 2018-03-05 18:35:40 -0600 |
---|---|---|
committer | William G. Hoffa <wghoffa@us.ibm.com> | 2018-04-12 16:31:07 -0400 |
commit | 0fbaeccfec9bfc60e37dad4a7660040862b1e2ac (patch) | |
tree | d366b7f579db62549f71e59ff75b3dd5029a7e6e /src/usr/hwas/common/deconfigGard.C | |
parent | 9964a274521177f062debb85fbd2e7b3022847be (diff) | |
download | talos-hostboot-0fbaeccfec9bfc60e37dad4a7660040862b1e2ac.tar.gz talos-hostboot-0fbaeccfec9bfc60e37dad4a7660040862b1e2ac.zip |
Add deconfigTargetAtRuntime interface
-PRD will call this function in response to a core unit
checkstop detected by PHYP.
The new function will mark the core as non-functional
and call a hardware procdure to update the multicast
groups for cores and chiplets. The procedure
will also update the OCC core configuration status
and the quad core status registers which reflect the
number of enable cores/quad in the system at runtime.
Change-Id: Ia7fc3f47dc1fee1f84d877d3d56b609d1aee1b17
RTC:188918
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/55154
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Richard Ward <rward15@us.ibm.com>
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Diffstat (limited to 'src/usr/hwas/common/deconfigGard.C')
-rw-r--r-- | src/usr/hwas/common/deconfigGard.C | 69 |
1 files changed, 67 insertions, 2 deletions
diff --git a/src/usr/hwas/common/deconfigGard.C b/src/usr/hwas/common/deconfigGard.C index 805915f5a..ad7cc1ecd 100644 --- a/src/usr/hwas/common/deconfigGard.C +++ b/src/usr/hwas/common/deconfigGard.C @@ -978,7 +978,7 @@ errlHndl_t DeconfigGard::deconfigureTarget( do { // Do not deconfig Target if we're NOT being asked to force AND - // the is System is at runtime + // the System is at runtime if ((i_deconfigRule == NOT_AT_RUNTIME) && platSystemIsAtRuntime()) { @@ -2015,7 +2015,13 @@ void DeconfigGard::_deconfigureByAssoc( // no action break; } // switch - } // !i_Runkime + } // !i_Runtime + else + { + HWAS_INF("_deconfigureByAssoc() - system is at runtime" + " skipping all association checks beyond" + " the CHILD"); + } HWAS_DBG("_deconfigureByAssoc exiting: %.8X", get_huid(&i_target)); } // _deconfigByAssoc @@ -2871,5 +2877,64 @@ bool DeconfigGard::anyChildFunctional(Target & i_parent) return retVal; } //anyChildFunctional +#ifdef __HOSTBOOT_MODULE +/******************************************************************************/ +// deconfigureTargetAtRuntime +/******************************************************************************/ +errlHndl_t DeconfigGard::deconfigureTargetAtRuntime( + TARGETING::ConstTargetHandle_t const i_pTarget, + const DeconfigGard::DeconfigureFlags i_deconfigureAction, + const errlHndl_t i_deconfigErrl) + +{ + + errlHndl_t l_errl = nullptr; + + uint32_t deconfigReason = + (i_deconfigErrl) ? + i_deconfigErrl->eid() : DeconfigGard::DECONFIGURED_BY_PRD; + + HWAS_INF(">>>deconfigureTargetAtRuntime() - " + "Input Target HUID:0x%08X Deconfig Action" + " 0x%08X Deconfig Reason :0x%08X", + get_huid(i_pTarget),i_deconfigureAction, + deconfigReason); + +#ifdef __HOSTBOOT_RUNTIME + + l_errl = platDeconfigureTargetAtRuntime( + i_pTarget, + i_deconfigureAction, + i_deconfigErrl + ); +#else + HWAS_ERR("deconfigureTargetAtRuntime() - " + "called outside of hbrt context"); + /*@ + * @errortype + * @moduleid MOD_RUNTIME_DECONFIG + * @reasoncode RC_NOT_AT_RUNTIME + * @userdata1 HUID of the target + * @userdata2 deconfig reason - either error log id, or + * DeconfigGard::DECONFIGURED_BY_PRD + * + * @devdesc deconfigureTargetAtRuntime is currently only + * supported in hostboot runtime, this error + * indicates the function was called outside of + * the hostboot runtime context. + * @custdesc Host firmware encountered an + * internal error + */ + + l_errl = hwasError( + ERRORLOG::ERRL_SEV_UNRECOVERABLE, + MOD_RUNTIME_DECONFIG,RC_NOT_AT_RUNTIME, + get_huid(i_pTarget),deconfigReason + ); +#endif + HWAS_INF(">>>deconfigureTargetAtRuntime()" ); + return l_errl ; +} +#endif } // namespace HWAS |