diff options
author | Dean Sanner <dsanner@us.ibm.com> | 2016-08-10 12:20:36 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-09-25 18:44:00 -0400 |
commit | 51aa7d2be9897a31da51518dc964f09f688a275c (patch) | |
tree | a084abac54fbe8942148e4a7fb1ef8f48acbebc9 /src/usr/hwas/test | |
parent | 6eb84744ea7350eb566f3ddfd02d254a85ed4e08 (diff) | |
download | talos-hostboot-51aa7d2be9897a31da51518dc964f09f688a275c.tar.gz talos-hostboot-51aa7d2be9897a31da51518dc964f09f688a275c.zip |
Update Xbus hwas rules and call pcie_scominit for all procs
Change-Id: I10db2fecc8a4b5571f7a8f9551954c107a2ebf2a
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/28110
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Prachi Gupta <pragupta@us.ibm.com>
Reviewed-by: Martin Gloff <mgloff@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/hwas/test')
-rw-r--r-- | src/usr/hwas/test/hwas1test.H | 45 |
1 files changed, 32 insertions, 13 deletions
diff --git a/src/usr/hwas/test/hwas1test.H b/src/usr/hwas/test/hwas1test.H index 4ad8e49a8..a79828f06 100644 --- a/src/usr/hwas/test/hwas1test.H +++ b/src/usr/hwas/test/hwas1test.H @@ -57,7 +57,7 @@ const uint16_t pgDataAllGood[HWAS::VPD_CP00_PG_DATA_ENTRIES] = (uint16_t)HWAS::VPD_CP00_PG_N1_GOOD, (uint16_t)HWAS::VPD_CP00_PG_N2_GOOD, (uint16_t)HWAS::VPD_CP00_PG_N3_GOOD, - (uint16_t)HWAS::VPD_CP00_PG_XBUS_GOOD, + (uint16_t)HWAS::VPD_CP00_PG_XBUS_GOOD_CUMULUS, (uint16_t)HWAS::VPD_CP00_PG_MCxx_GOOD, (uint16_t)HWAS::VPD_CP00_PG_MCxx_GOOD, (uint16_t)HWAS::VPD_CP00_PG_OBUS_GOOD, @@ -296,9 +296,9 @@ public: TargetHandle_t pTarget = *pTarget_it; ATTR_MODEL_type l_model = pTarget->getAttr<ATTR_MODEL>(); uint16_t l_xbus = (MODEL_NIMBUS == l_model) - ? (uint16_t)(VPD_CP00_PG_XBUS_GOOD | - VPD_CP00_PG_XBUS_IOX_PAIR[0]) - : (uint16_t)VPD_CP00_PG_XBUS_GOOD; + ? (uint16_t)(VPD_CP00_PG_XBUS_GOOD_NIMBUS | + VPD_CP00_PG_XBUS_IOX[0]) + : (uint16_t)VPD_CP00_PG_XBUS_GOOD_CUMULUS; uint16_t l_obus12 = (MODEL_NIMBUS == l_model) ? (uint16_t)VPD_CP00_PG_RESERVED_GOOD : (uint16_t)VPD_CP00_PG_OBUS_GOOD; @@ -538,9 +538,11 @@ public: l_mask > 0; l_mask >>= 1) { - // NOTE: Single bits of XBUS matched pairs will be turned - // on or off individually while going through loop, - // thus creating and testing mismatched pairs. + // NOTE: Xbus doesn't have matched pairs anymore + // individual Xbus units (0x0400, 0x0200, and 0x0100) + // can be bad and chip is still functional. Any + // other bit being incorrect should cause full chip + // deconfig if (pgData[VPD_CP00_PG_XBUS_INDEX] & l_mask) { // Turn off a bit that should be on @@ -552,14 +554,31 @@ public: pgData[VPD_CP00_PG_XBUS_INDEX] |= l_mask; } - if (isChipFunctional(pTarget, pgData)) + if (((uint16_t)(VPD_CP00_PG_XBUS_PG_MASK)) & l_mask) { - TS_FAIL("testHWASisChipFunctional>" + //Chip should be functional + if (!isChipFunctional(pTarget, pgData)) + { + TS_FAIL("testHWASisChipFunctional>" + "functional = 0x%x, should be true, " + "XBUS = 0x%04x, mask = 0x%04x.", + isChipFunctional(pTarget, pgData), + pgData[VPD_CP00_PG_XBUS_INDEX], + l_mask); + } + } + else + { + //Chip should be non functional + if (isChipFunctional(pTarget, pgData)) + { + TS_FAIL("testHWASisChipFunctional>" "functional = 0x%x, should be false, " "XBUS = 0x%04x, mask = 0x%04x.", isChipFunctional(pTarget, pgData), pgData[VPD_CP00_PG_XBUS_INDEX], l_mask); + } } // Restore the "all good" data @@ -590,9 +609,9 @@ public: TargetHandle_t pTarget = *pTarget_it; ATTR_MODEL_type l_model = pTarget->getAttr<ATTR_MODEL>(); uint16_t l_xbus = (MODEL_NIMBUS == l_model) - ? (uint16_t)(VPD_CP00_PG_XBUS_GOOD | - VPD_CP00_PG_XBUS_IOX_PAIR[0]) - : (uint16_t)VPD_CP00_PG_XBUS_GOOD; + ? (uint16_t)(VPD_CP00_PG_XBUS_GOOD_NIMBUS | + VPD_CP00_PG_XBUS_IOX[0]) + : (uint16_t)VPD_CP00_PG_XBUS_GOOD_CUMULUS; uint16_t l_obus12 = (MODEL_NIMBUS == l_model) ? (uint16_t)VPD_CP00_PG_RESERVED_GOOD : (uint16_t)VPD_CP00_PG_OBUS_GOOD; @@ -758,7 +777,7 @@ public: TS_TRACE( "testHWASisDescFunctional: " "XBUS%d is not functional", l_chipUnit); pgData[VPD_CP00_PG_XBUS_INDEX] |= - (uint16_t)VPD_CP00_PG_XBUS_IOX_PAIR[l_chipUnit]; + (uint16_t)VPD_CP00_PG_XBUS_IOX[l_chipUnit]; if (isDescFunctional(pDesc, pgData)) { |