diff options
author | Dhruvaraj S <dhruvaraj@in.ibm.com> | 2015-08-04 04:30:06 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-08-14 09:42:36 -0500 |
commit | 28e0a7e2733d28efa4f4d77be2350b6acaa448ad (patch) | |
tree | 5dee0523e39552f77995a9739d65db0b3048e56b /src | |
parent | b23def57b3b0acb0265114838c8dfd47cffa543b (diff) | |
download | talos-hostboot-28e0a7e2733d28efa4f4d77be2350b6acaa448ad.tar.gz talos-hostboot-28e0a7e2733d28efa4f4d77be2350b6acaa448ad.zip |
Mimimum hw check during resource recovery should be at system level
During the minimum hw check for resource recovery, check for the
master processor or cores in master processors at system level
instead of node level, current code looking at the availability
in first node and doing a recovery if not available in first node.
Change-Id: I527c04e4e62214f3db126ad00bab9964b4eca795
CQ:SW311913
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/19518
Tested-by: Jenkins Server
Tested-by: Jenkins OP Build CI
Tested-by: Jenkins OP HW
Reviewed-by: STEPHEN M. CPREK <smcprek@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/include/usr/hwas/common/hwas.H | 4 | ||||
-rw-r--r-- | src/usr/hwas/common/deconfigGard.C | 4 | ||||
-rw-r--r-- | src/usr/hwas/common/hwas.C | 24 |
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); |