summaryrefslogtreecommitdiffstats
path: root/src/usr/errl/runtime
diff options
context:
space:
mode:
authorChristian Geddes <crgeddes@us.ibm.com>2018-06-27 12:42:57 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2018-06-28 22:53:11 -0400
commit62f32b295f6baa128b0eef166121b21d22f19bbc (patch)
tree016e47ad449e8577f5ea4d59f8c70f9fd867bcc8 /src/usr/errl/runtime
parentf2bdbd447c94c8be8a476e423fb017afdd48d497 (diff)
downloadtalos-hostboot-62f32b295f6baa128b0eef166121b21d22f19bbc.tar.gz
talos-hostboot-62f32b295f6baa128b0eef166121b21d22f19bbc.zip
Allow HWSV to handle gard callouts during runtime for FSP systems
There was a bug in the runtime code where if a errorlog was created and it had a deconfigure callout as well as a gard callout it would attempt to create a gard record for the callout. This caused PNOR reads which are not permitted in HBRT on systems with FSPs. Change-Id: Ie2e1019889e0087396acfa07c7ce93e24643f322 CQ: SW430100 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/61505 Tested-by: Jenkins Server <pfd-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> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/errl/runtime')
-rw-r--r--src/usr/errl/runtime/rt_errlmanager.C39
1 files changed, 23 insertions, 16 deletions
diff --git a/src/usr/errl/runtime/rt_errlmanager.C b/src/usr/errl/runtime/rt_errlmanager.C
index 2714659b7..1435401d6 100644
--- a/src/usr/errl/runtime/rt_errlmanager.C
+++ b/src/usr/errl/runtime/rt_errlmanager.C
@@ -36,6 +36,7 @@
#include <targeting/common/targetservice.H>
#include <pnor/pnorif.H>
#include <hwas/common/deconfigGard.H>
+#include <initservice/initserviceif.H> // spBaseServiceEnabled()
namespace ERRORLOG
{
@@ -357,27 +358,33 @@ bool rt_processCallout(errlHndl_t &io_errl,
}
- if ((pCalloutUD->type == HWAS::HW_CALLOUT) &&
- (pCalloutUD->gardErrorType != HWAS::GARD_NULL))
+ // Gard callouts are handled by the HWSV if there is an FSP
+ // if we attempt to create a gard record it requires us to read
+ // PNOR which we cannot do on FSP based machines
+ if(!INITSERVICE::spBaseServicesEnabled())
{
- TARGETING::Target *pTarget = NULL;
- uint8_t * l_uData = (uint8_t *)(pCalloutUD + 1);
- bool l_err = HWAS::retrieveTarget(l_uData, pTarget, io_errl);
+ if ((pCalloutUD->type == HWAS::HW_CALLOUT) &&
+ (pCalloutUD->gardErrorType != HWAS::GARD_NULL))
+ {
+ TARGETING::Target *pTarget = NULL;
+ uint8_t * l_uData = (uint8_t *)(pCalloutUD + 1);
+ bool l_err = HWAS::retrieveTarget(l_uData, pTarget, io_errl);
- if (!l_err)
- {
- errlHndl_t errl = HWAS::theDeconfigGard().platCreateGardRecord
- (pTarget,
- io_errl->eid(),
- pCalloutUD->gardErrorType);
- if (errl)
+ if (!l_err)
{
- TRACFCOMP( g_trac_errl, ERR_MRK
- "rt_processCallout: error from platCreateGardRecord");
- errlCommit(errl, HWAS_COMP_ID);
+ errlHndl_t errl = HWAS::theDeconfigGard().platCreateGardRecord
+ (pTarget,
+ io_errl->eid(),
+ pCalloutUD->gardErrorType);
+ if (errl)
+ {
+ TRACFCOMP( g_trac_errl, ERR_MRK
+ "rt_processCallout: error from platCreateGardRecord");
+ errlCommit(errl, HWAS_COMP_ID);
+ }
}
- }
+ }
}
return true;
}
OpenPOWER on IntegriCloud