summaryrefslogtreecommitdiffstats
path: root/src/usr/ibscom/test
diff options
context:
space:
mode:
authorAdam Muhle <armuhle@us.ibm.com>2013-02-26 08:14:03 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-05-08 09:25:51 -0500
commit2deb848cf616c4c815a37988fe2c8c422b885e3e (patch)
tree3058f40318b2094fb5a84453df8edb946f230fa3 /src/usr/ibscom/test
parent8e8dbe99d13d923536353afd96b9b003382b7f2c (diff)
downloadtalos-hostboot-2deb848cf616c4c815a37988fe2c8c422b885e3e.tar.gz
talos-hostboot-2deb848cf616c4c815a37988fe2c8c422b885e3e.zip
IBSCOM error path support
This commit updates IBSCOM to have error path support. It also updates the good-path test cases since there is limited good path support in simics. Full enablement will be done later. Change-Id: I5f9d66165db119473f606303a1026c8c71988785 RTC: 34743 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/3972 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/ibscom/test')
-rw-r--r--src/usr/ibscom/test/ibscomtest.H187
1 files changed, 127 insertions, 60 deletions
diff --git a/src/usr/ibscom/test/ibscomtest.H b/src/usr/ibscom/test/ibscomtest.H
index 189f78049..e6be9f7c8 100644
--- a/src/usr/ibscom/test/ibscomtest.H
+++ b/src/usr/ibscom/test/ibscomtest.H
@@ -5,7 +5,7 @@
/* */
/* IBM CONFIDENTIAL */
/* */
-/* COPYRIGHT International Business Machines Corp. 2012 */
+/* COPYRIGHT International Business Machines Corp. 2012,2013 */
/* */
/* p1 */
/* */
@@ -47,14 +47,11 @@ class IBscomTest: public CxxTest::TestSuite
/**
* @brief inband scom test #1
- * Write value and read back to verify
+ * Write values and read back to verify
*/
void test_IBscom(void)
{
- //TODO Enable and improve test cases RTC: 52900
- return;
-
uint64_t fails = 0;
uint64_t total = 0;
errlHndl_t l_err = NULL;
@@ -88,77 +85,146 @@ class IBscomTest: public CxxTest::TestSuite
}
l_testTarget = *(centaur_list.begin());
- uint64_t addr = 0x03010E03;
- uint64_t orig_data = 0;
- uint64_t data = 0x12345678FEEDB0B0;
+ TRACDCOMP(g_trac_ibscom,
+ "IBscomTest::test_IBscom> Read orignal data from Centaur");
+
+
+ const uint64_t addrs[] = {0x0201164F, 0x0301069A};
+ uint64_t orig_data[2] = {0};
+ uint64_t new_data[] = {0x1234567ABABABA00, 0xFEEDB0B0FEDCBA00};
+ uint64_t read_data[2] = {0};
+ uint64_t read_data_fsi[2] = {0};
size_t op_size = sizeof(uint64_t);
//Save of initial register content
- l_err = deviceRead( l_testTarget,
- &orig_data,
- op_size,
- DEVICE_SCOM_ADDRESS(addr) );
- if( l_err )
+ for(uint32_t i=0; i<2; i++)
{
- TRACFCOMP(g_trac_ibscom,
- "IBscomTest::test_IBscom> Orig Read: Error from device : addr=0x%X, RC=%X",
- addr, l_err->reasonCode() );
- TS_FAIL( "test_IBscom1> ERROR : Unexpected error log from read1" );
- fails++;
- errlCommit(l_err,IBSCOM_COMP_ID);
+ op_size = sizeof(uint64_t);
+ l_err = deviceRead( l_testTarget,
+ &orig_data[i],
+ op_size,
+ DEVICE_SCOM_ADDRESS(addrs[i]) );
+ if( l_err )
+ {
+ TRACFCOMP(g_trac_ibscom,"IBscomTest::test_IBscom> Orig Read: Error from device : addr=0x%X, RC=%X",
+ addrs[i], l_err->reasonCode() );
+ TS_FAIL( "test_IBscom1> ERROR : Unexpected error log from saving original data." );
+ fails++;
+ errlCommit(l_err,IBSCOM_COMP_ID);
+ }
+ total++;
+
}
- l_err = deviceOp( DeviceFW::WRITE,
- l_testTarget,
- &data,
- op_size,
- DEVICE_IBSCOM_ADDRESS(addr) );
- if( l_err )
+ //Write in some new data
+ for(uint32_t i=0; i<2; i++)
{
- TRACFCOMP(g_trac_ibscom,
- "IBscomTest::test_IBscom> Write: Error from device : addr=0x%X, RC=%X",
- addr, l_err->reasonCode() );
- TS_FAIL( "ScomTest::test_IBscom> ERROR : Error log from write1" );
- fails++;
- errlCommit(l_err,IBSCOM_COMP_ID);
+ TRACDCOMP(g_trac_ibscom,"IBscomTest::test_IBscom> Write new pattern: 0x%.16X", new_data[i]);
+
+ op_size = sizeof(uint64_t);
+ l_err = deviceOp( DeviceFW::WRITE,
+ l_testTarget,
+ &new_data[i],
+ op_size,
+ DEVICE_IBSCOM_ADDRESS(addrs[i]) );
+ if( l_err )
+ {
+ TRACFCOMP(g_trac_ibscom,"IBscomTest::test_IBscom> Write: Error from device : addr=0x%X, RC=%X",
+ addrs[i], l_err->reasonCode() );
+ TS_FAIL( "ScomTest::test_IBscom> ERROR : Error log from IBSCOM Write" );
+ fails++;
+ errlCommit(l_err,IBSCOM_COMP_ID);
+ }
+
+ total++;
}
- total++;
-
- l_err = deviceOp( DeviceFW::READ,
- l_testTarget,
- &data,
- op_size,
- DEVICE_IBSCOM_ADDRESS(addr) );
- if( l_err )
+ //Read the data back with IBSCOM
+ for(uint32_t i=0; i<2; i++)
{
- TRACFCOMP(g_trac_ibscom,
- "IBscomTest::test_IBscom> Read: Error from device : addr=0x%X, RC=%X",
- addr, l_err->reasonCode() );
- TS_FAIL( "test_IBscom> ERROR : Error log from read2" );
- fails++;
- errlCommit(l_err,IBSCOM_COMP_ID);
+ TRACDCOMP(g_trac_ibscom,
+ "IBscomTest::test_IBscom> Read data back");
+
+ //reset size
+ op_size = sizeof(uint64_t);
+ l_err = deviceOp( DeviceFW::READ,
+ l_testTarget,
+ &read_data[i],
+ op_size,
+ DEVICE_IBSCOM_ADDRESS(addrs[i]) );
+ if( l_err )
+ {
+ TRACFCOMP(g_trac_ibscom,"IBscomTest::test_IBscom> Read: Error from device : addr=0x%X, RC=%X",
+ addrs[i], l_err->reasonCode() );
+ TS_FAIL( "test_IBscom> ERROR : Error log from IBSCOM read" );
+ fails++;
+ errlCommit(l_err,IBSCOM_COMP_ID);
+ }
+
+ if(new_data[i] != read_data[i])
+ {
+ TS_FAIL( "test_IBscom> ERROR : Data miss-match on IBSCOM read-back check." );
+
+ TRACFCOMP(g_trac_ibscom,"IBscomTest::test_IBscom>ERROR: addr=0x%.8x: Write data=0x%.16X, IBSCOM read data=0x%.16X",
+ addrs[i], new_data[i], read_data[i]);
+ fails++;
+ }
+
+ total++;
}
- total++;
+ //Read the data back with FSISCOM
+ for(uint32_t i=0; i<2; i++)
+ {
+ TRACDCOMP(g_trac_ibscom,
+ "IBscomTest::test_IBscom> Read data back");
+
+ //reset size
+ op_size = sizeof(uint64_t);
+ l_err = deviceOp( DeviceFW::READ,
+ l_testTarget,
+ &read_data_fsi[i],
+ op_size,
+ DEVICE_FSISCOM_ADDRESS(addrs[i]) );
+ if( l_err )
+ {
+ TRACFCOMP(g_trac_ibscom, "IBscomTest::test_IBscom> Read: Error from device : addr=0x%X, RC=%X",
+ addrs[i], l_err->reasonCode() );
+ TS_FAIL( "test_IBscom> ERROR : Error log from FSI Read" );
+ fails++;
+ errlCommit(l_err,IBSCOM_COMP_ID);
+ }
+
+ if(new_data[i] != read_data_fsi[i])
+ {
+ TS_FAIL( "test_IBscom> ERROR : Data miss-match on FSI read-back check." );
+
+ TRACFCOMP(g_trac_ibscom, "IBscomTest::test_IBscom>ERROR: addr=0x%.8x: Write data=0x%.16X, FSI read data=0x%.16X",
+ addrs[i], new_data[i], read_data_fsi[i]);
+ fails++;
+ }
+ total++;
+ }
//Restore original data.
- l_err = deviceWrite( l_testTarget,
- &orig_data,
- op_size,
- DEVICE_SCOM_ADDRESS(addr) );
-
- if( l_err )
+ for(uint32_t i=0; i<2; i++)
{
- TRACFCOMP(g_trac_ibscom,
- "IBscomTest::test_IBscom> Write Orig Data: Error from device : addr=0x%X, RC=%X",
- addr, l_err->reasonCode() );
- TS_FAIL( "test_IBscom> ERROR : Error log from write2" );
- fails++;
- errlCommit(l_err,IBSCOM_COMP_ID);
+ op_size = sizeof(uint64_t);
+ l_err = deviceWrite( l_testTarget,
+ &orig_data[i],
+ op_size,
+ DEVICE_SCOM_ADDRESS(addrs[i]) );
+
+ if( l_err )
+ {
+ TRACFCOMP(g_trac_ibscom,"IBscomTest::test_IBscom> Write Orig Data: Error from device : addr=0x%X, RC=%X",
+ addrs[i], l_err->reasonCode() );
+ TS_FAIL( "test_IBscom> ERROR : Error log from write2" );
+ fails++;
+ errlCommit(l_err,IBSCOM_COMP_ID);
+ }
}
-
TS_TRACE("test_IBscom runs successfully!");
TRACFCOMP(g_trac_ibscom,
"IBscomTest::test_IBscom> %d/%d fails",
@@ -167,7 +233,8 @@ class IBscomTest: public CxxTest::TestSuite
return;
}
-
+ //TODO RTC: 68733: Add error path test cases when simics support
+ //is available
};
OpenPOWER on IntegriCloud