summaryrefslogtreecommitdiffstats
path: root/src/usr/hwas/hostbootIstep.C
diff options
context:
space:
mode:
authorBrian Horton <brianh@linux.ibm.com>2013-05-03 09:58:27 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-06-03 11:15:36 -0500
commitcf0ce1fae5dbdb9586146bf21c3e56d3a21baa9d (patch)
tree463782a4d63f5740d0a93bb0a331523b615a2d7c /src/usr/hwas/hostbootIstep.C
parentcc5acf567b1c2d29b03e493b3a3c4a834d8f9928 (diff)
downloadtalos-hostboot-cf0ce1fae5dbdb9586146bf21c3e56d3a21baa9d.tar.gz
talos-hostboot-cf0ce1fae5dbdb9586146bf21c3e56d3a21baa9d.zip
only apply EX gard records on MPIPL.
hostboot istep 6.6 calls collectGard(), and this should be done with a predicate for EX targets only if it is during an MPIPL. Change-Id: Ia68661c10c0fdbfbdbb6ddcb6637b02216d52f66 RTC: 70939 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/4345 Tested-by: Jenkins Server Reviewed-by: MIKE J. JONES <mjjones@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwas/hostbootIstep.C')
-rw-r--r--src/usr/hwas/hostbootIstep.C57
1 files changed, 45 insertions, 12 deletions
diff --git a/src/usr/hwas/hostbootIstep.C b/src/usr/hwas/hostbootIstep.C
index 4e5b900de..9205e03fc 100644
--- a/src/usr/hwas/hostbootIstep.C
+++ b/src/usr/hwas/hostbootIstep.C
@@ -87,10 +87,7 @@ void* host_discover_targets( void *io_pArgs )
// Check whether we're in MPIPL mode
using namespace TARGETING;
Target* l_pTopLevel = NULL;
- uint8_t l_attrIsMpipl = 0;
-
- TargetService& l_targetService = targetService();
- l_targetService.getTopLevelTarget( l_pTopLevel );
+ targetService().getTopLevelTarget( l_pTopLevel );
if( l_pTopLevel == NULL )
{
@@ -111,20 +108,16 @@ void* host_discover_targets( void *io_pArgs )
}
else
{
- l_attrIsMpipl = l_pTopLevel->getAttr<ATTR_IS_MPIPL_HB> ();
-
- if (l_attrIsMpipl)
+ if (l_pTopLevel->getAttr<ATTR_IS_MPIPL_HB>())
{
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "MPIPL mode" );
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "MPIPL mode");
// Sync attributes from Fsp
errl = syncAllAttributesFromFsp();
}
else
{
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "Normal IPL mode" );
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "Normal IPL mode");
errl = discoverTargets();
}
@@ -143,8 +136,48 @@ void* host_gard( void *io_pArgs )
{
TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "host_gard entry" );
- errlHndl_t errl = collectGard();
+ errlHndl_t errl;
+
+ // Check whether we're in MPIPL mode
+ using namespace TARGETING;
+ Target* l_pTopLevel = NULL;
+ targetService().getTopLevelTarget( l_pTopLevel );
+
+ if( l_pTopLevel == NULL )
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "Top level handle was NULL" );
+
+ /*@
+ * @errortype
+ * @severity ERRORLOG::ERRL_SEV_UNRECOVERABLE
+ * @moduleid HWAS::MOD_HOST_GARD
+ * @reasoncode HWAS::RC_TOP_LEVEL_TARGET_NULL
+ * @devdesc Call to get top level targeting handle
+ * returned NULL
+ */
+ errl = hwasError( ERRORLOG::ERRL_SEV_UNRECOVERABLE,
+ HWAS::MOD_HOST_GARD,
+ HWAS::RC_TOP_LEVEL_TARGET_NULL );
+ }
+ else
+ {
+ if (l_pTopLevel->getAttr<ATTR_IS_MPIPL_HB>())
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "MPIPL mode");
+
+ // we only want EX units to be processed
+ TARGETING::PredicateCTM l_exFilter(TARGETING::CLASS_UNIT,
+ TARGETING::TYPE_EX);
+ errl = collectGard(&l_exFilter);
+ }
+ else
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "Normal IPL mode");
+ errl = collectGard();
+ }
+ }
TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "host_gard exit" );
return errl;
OpenPOWER on IntegriCloud