summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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