summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/test
diff options
context:
space:
mode:
authorMike Jones <mjjones@us.ibm.com>2013-05-17 13:46:41 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-06-06 10:21:40 -0500
commit66474f4f93fd10ad3b35ed89cecc3d6b11e99eed (patch)
treed4eead386bbfce426e554bd35a105410689d5b9a /src/usr/hwpf/test
parent3d8ff73f2435dda59135776a751d692779b045bb (diff)
downloadblackbird-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.H114
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.
*
*/
OpenPOWER on IntegriCloud