summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/usr/hwas/common/hwas.H4
-rw-r--r--src/usr/hwas/common/deconfigGard.C4
-rw-r--r--src/usr/hwas/common/hwas.C24
3 files changed, 21 insertions, 11 deletions
diff --git a/src/include/usr/hwas/common/hwas.H b/src/include/usr/hwas/common/hwas.H
index caae04a79..7c5a4202a 100644
--- a/src/include/usr/hwas/common/hwas.H
+++ b/src/include/usr/hwas/common/hwas.H
@@ -120,7 +120,7 @@ errlHndl_t restrictEXunits(
* Error logs will also be created for each hardware module that is not
* running.
*
- * @param[in] i_node node target to restrict hw check
+ * @param[in] i_nodeOrSys Level of HW check node or system
* @param[out] o_bootable Indicate whether the system is
* is bootable with current configuration.
* if o_bootable is not NULL an error for
@@ -129,7 +129,7 @@ errlHndl_t restrictEXunits(
* @return error log handle
*/
errlHndl_t checkMinimumHardware(
- const TARGETING::ConstTargetHandle_t i_node = NULL,
+ const TARGETING::ConstTargetHandle_t i_nodeOrSys = NULL,
bool *o_bootable = NULL);
/**
diff --git a/src/usr/hwas/common/deconfigGard.C b/src/usr/hwas/common/deconfigGard.C
index 5a06dd3bf..ce4a174ec 100644
--- a/src/usr/hwas/common/deconfigGard.C
+++ b/src/usr/hwas/common/deconfigGard.C
@@ -444,7 +444,7 @@ errlHndl_t DeconfigGard::deconfigureTargetsFromGardRecordsForIpl(
}
bool l_isSystemBootable = false;
- l_pErr = checkMinimumHardware(NULL,&l_isSystemBootable);
+ l_pErr = checkMinimumHardware(pSys,&l_isSystemBootable);
if (l_pErr)
{
HWAS_ERR("checkMinimumHardware returned an error");
@@ -525,7 +525,7 @@ errlHndl_t DeconfigGard::deconfigureTargetsFromGardRecordsForIpl(
break;
}
- l_pErr = checkMinimumHardware(NULL,&l_isSystemBootable);
+ l_pErr = checkMinimumHardware(pSys,&l_isSystemBootable);
if (l_pErr)
{
HWAS_ERR("checkMinimumHardware returned an error");
diff --git a/src/usr/hwas/common/hwas.C b/src/usr/hwas/common/hwas.C
index ad187d2c6..c4f63126c 100644
--- a/src/usr/hwas/common/hwas.C
+++ b/src/usr/hwas/common/hwas.C
@@ -748,7 +748,7 @@ void checkCriticalResources(uint32_t & io_commonPlid,
-errlHndl_t checkMinimumHardware(const TARGETING::ConstTargetHandle_t i_node,
+errlHndl_t checkMinimumHardware(const TARGETING::ConstTargetHandle_t i_nodeOrSys,
bool *o_bootable)
{
errlHndl_t l_errl = NULL;
@@ -776,7 +776,7 @@ errlHndl_t checkMinimumHardware(const TARGETING::ConstTargetHandle_t i_node,
// top 'starting' point - use first node if no i_node given (hostboot)
Target *pTop;
- if (i_node == NULL)
+ if (i_nodeOrSys == NULL)
{
Target *pSys;
targetService().getTopLevelTarget(pSys);
@@ -827,19 +827,29 @@ errlHndl_t checkMinimumHardware(const TARGETING::ConstTargetHandle_t i_node,
// top level has at least 1 node - and it's our node.
pTop = l_nodes[0];
- HWAS_INF("checkMinimumHardware: i_node = NULL, using %.8X",
+ HWAS_INF("checkMinimumHardware: i_nodeOrSys = NULL, using %.8X",
get_huid(pTop));
}
else
{
- pTop = const_cast<Target *>(i_node);
- HWAS_INF("checkMinimumHardware: i_node %.8X",
+ pTop = const_cast<Target *>(i_nodeOrSys);
+ HWAS_INF("checkMinimumHardware: i_nodeOrSys %.8X",
get_huid(pTop));
}
// check for functional Master Proc on this node
Target* l_pMasterProc = NULL;
- targetService().queryMasterProcChipTargetHandle(l_pMasterProc, pTop);
+
+ //Get master proc at system level or node level based on target type
+ if(pTop->getAttr<ATTR_TYPE>() == TYPE_SYS)
+ {
+ targetService().queryMasterProcChipTargetHandle(l_pMasterProc);
+ }
+ else
+ {
+ targetService().queryMasterProcChipTargetHandle(l_pMasterProc,
+ pTop);
+ }
if ((l_pMasterProc == NULL) || (!l_functional(l_pMasterProc)))
{
@@ -1111,7 +1121,7 @@ errlHndl_t checkMinimumHardware(const TARGETING::ConstTargetHandle_t i_node,
// if there is an issue, create and commit an error, and tie it to the
// the rest of them with the common plid.
HWAS::checkCriticalResources(l_commonPlid, pTop);
- platCheckMinimumHardware(l_commonPlid, i_node, o_bootable);
+ platCheckMinimumHardware(l_commonPlid, i_nodeOrSys, o_bootable);
}
while (0);
OpenPOWER on IntegriCloud