diff options
author | Mike Jones <mjjones@us.ibm.com> | 2013-05-17 13:46:41 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-06-06 10:21:40 -0500 |
commit | 66474f4f93fd10ad3b35ed89cecc3d6b11e99eed (patch) | |
tree | d4eead386bbfce426e554bd35a105410689d5b9a /src/usr/hwpf/test | |
parent | 3d8ff73f2435dda59135776a751d692779b045bb (diff) | |
download | blackbird-hostboot-66474f4f93fd10ad3b35ed89cecc3d6b11e99eed.tar.gz blackbird-hostboot-66474f4f93fd10ad3b35ed89cecc3d6b11e99eed.zip |
Retrieve attributes from VSPD AM Centaur VPD fields
Create a HWP accessor to retrieve Address Mirroring Data attributes from cvpd
record VSPD keyword AM.
Change-Id: I1b994814407d0747021c869515d8e08a6d02f7e5
RTC: 50574
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/4781
Reviewed-by: Brian H. Horton <brianh@linux.ibm.com>
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/hwpf/test')
-rw-r--r-- | src/usr/hwpf/test/fapiwinkletest.H | 114 |
1 files changed, 113 insertions, 1 deletions
diff --git a/src/usr/hwpf/test/fapiwinkletest.H b/src/usr/hwpf/test/fapiwinkletest.H index 6a164f402..d0ec9b9ac 100644 --- a/src/usr/hwpf/test/fapiwinkletest.H +++ b/src/usr/hwpf/test/fapiwinkletest.H @@ -47,6 +47,7 @@ #include <getMvpdRing.H> #include <setMvpdRing.H> #include <mvpd_accessors/getMBvpdPhaseRotatorData.H> +#include <mvpd_accessors/getMBvpdAddrMirrorData.H> #include <errl/errlmanager.H> #include <errl/errlentry.H> @@ -188,6 +189,7 @@ public: { MBVPD_RECORD_VSPD, MBVPD_KEYWORD_LM}, { MBVPD_RECORD_VSPD, MBVPD_KEYWORD_MW}, { MBVPD_RECORD_VSPD, MBVPD_KEYWORD_MV}, + { MBVPD_RECORD_VSPD, MBVPD_KEYWORD_AM}, }; TS_TRACE( "testGetMBvpd entry" ); @@ -258,7 +260,7 @@ public: free( l_pRecord ); return; } -#if UNITTESTmft +#if UNITTESTfwt TRACFCOMP(g_trac_test,"testMBvpd:Record=%d,Keyword=%d", l_mbvpdRecords[i].record, l_mbvpdRecords[i].keyword); @@ -290,6 +292,116 @@ public: } /** + * @brief call getMBvpdAddrMirrorData to fetch memory buffer AM attributes + * + */ + void testGetAddrMirrorData() + { + fapi::ReturnCode l_fapirc( fapi::FAPI_RC_SUCCESS ); + getMBvpdAddrMirrorData_FP_t (l_getMBvpdAddrMirrorData) + = &getMBvpdAddrMirrorData; + + TS_TRACE( "testGetAddrMirrorData entry" ); + + TARGETING::TargetHandleList l_memBufList; + getAllChips(l_memBufList, TYPE_MEMBUF); + + TS_TRACE( "testGetAddrMirrorData l_memBufList.size()=%d", + l_memBufList.size() ); + // loop thru memory buffers +#if UNITTESTfwt + uint8_t l_mbNum = 0; // check them all in unit test +#else + uint8_t l_mbNum = (l_memBufList.size() > 0) ? l_memBufList.size()-1 : 0; +#endif + for (; l_mbNum < l_memBufList.size(); l_mbNum++ ) + { + TARGETING::TargetHandleList l_mbaList; + getChildAffinityTargets(l_mbaList,l_memBufList[l_mbNum], + CLASS_UNIT,TYPE_MBA,false); + + TS_TRACE( "testGetAddrMirrorData l_mbaBufList.size()=%d", + l_mbaList.size()); + + // loop thru all the mbas (should be 2) +#if UNITTESTfwt + uint8_t l_mbaNum = 0; // check them all in unit test +#else + uint8_t l_mbaNum = (l_mbaList.size() > 0) ? l_mbaList.size()-1:0 ; +#endif + for (; l_mbaNum < l_mbaList.size(); l_mbaNum++ ) + { + TARGETING::TargetHandleList l_dimmList; + + getChildAffinityTargets(l_dimmList,l_mbaList[l_mbaNum], + CLASS_LOGICAL_CARD,TYPE_DIMM,false); + TS_TRACE( "testGetAddrMirrorData l_dimmList.size()=%d", + l_dimmList.size()); + + // cast OUR type of target to a FAPI type of target. + fapi::Target l_fapi_mba_target( TARGET_TYPE_MBA_CHIPLET, + (const_cast<TARGETING::Target*>(l_mbaList[l_mbaNum]))); + + // verify HWP accessor + uint8_t l_val[2][2] = {{0xFF,0xFF},{0xFF,0xFF}}; + + l_fapirc = (*l_getMBvpdAddrMirrorData)(l_fapi_mba_target,l_val); + if (l_fapirc) + { + TS_FAIL( "fapiGetAddrMirrorData: HWP accessor fail rc=0x%x", + static_cast<uint32_t>(l_fapirc) ); + fapiLogError(l_fapirc); + } + else + { + TS_TRACE( "testGetAddrMirrorData accessor " + "(0x%02x,0x%02x),(0x%02x,0x%02x)", + l_val[0][0], l_val[0][1], l_val[1][0], l_val[1][1]); + } + + // loop thru all the DIMMs (should be 4) +#if UNITTESTfwt + uint8_t l_dimmNum = 0; // check them all in unit test +#else + uint8_t l_dimmNum = + (l_dimmList.size() > 0) ? l_dimmList.size()-1:0 ; +#endif + for (; l_dimmNum < l_dimmList.size(); l_dimmNum++ ) + { + uint8_t l_val = 0xFF; + + // dump physical path to target + EntityPath l_path; + l_path = l_dimmList[l_dimmNum]->getAttr<ATTR_PHYS_PATH>(); + l_path.dump(); + + // cast OUR type of target to a FAPI type of target. + fapi::Target l_fapi_dimm_target( + TARGET_TYPE_DIMM, + (const_cast<TARGETING::Target*>(l_dimmList[l_dimmNum]))); + + // verify getting all attributes + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_DRAM_ADDRESS_MIRRORING, + &l_fapi_dimm_target, + l_val); + TS_TRACE( "testGetAddrMirrorData attribute %d 0x%02x", + l_dimmNum,l_val); + } + if (l_fapirc) + { + TS_FAIL( "fapiGetAddrMirrorData: FAPI_ATTR_GET fail rc=0x%x", + static_cast<uint32_t>(l_fapirc) ); + fapiLogError(l_fapirc); + } + } + } + + TS_TRACE( "testGetAddrMirrorData exit" ); + + } + + + /** * @brief call fapiGetMBvpdField to fetch memory buffer vpd records. * */ |