summaryrefslogtreecommitdiffstats
path: root/src/usr/fsi
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2013-08-12 10:42:41 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-09-13 13:09:17 -0500
commit907bd272887a4223e233091172a6a6e5f29cb05a (patch)
tree599d0e14d59908fdd8f1b06f202d87746ab8b122 /src/usr/fsi
parentb614caa4f28616bba6e27625e4430083f53679b8 (diff)
downloadtalos-hostboot-907bd272887a4223e233091172a6a6e5f29cb05a.tar.gz
talos-hostboot-907bd272887a4223e233091172a6a6e5f29cb05a.zip
FSI SCOM Error Handling
Change-Id: I1538fbf386d5480e473f3f0b049492d494412624 RTC: 35064 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/5825 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/fsi')
-rw-r--r--src/usr/fsi/fsidd.C359
-rw-r--r--src/usr/fsi/fsipres.C4
-rw-r--r--src/usr/fsi/test/fsiddtest.H46
3 files changed, 244 insertions, 165 deletions
diff --git a/src/usr/fsi/fsidd.C b/src/usr/fsi/fsidd.C
index 3cf150d20..4413ed129 100644
--- a/src/usr/fsi/fsidd.C
+++ b/src/usr/fsi/fsidd.C
@@ -46,11 +46,11 @@
// FSI : General driver traces
trace_desc_t* g_trac_fsi = NULL;
-TRAC_INIT(&g_trac_fsi, "FSI", KILOBYTE); //1K
+TRAC_INIT(&g_trac_fsi, FSI_COMP_NAME, KILOBYTE); //1K
// FSIR : Register reads and writes (should always use TRACS)
trace_desc_t* g_trac_fsir = NULL;
-TRAC_INIT(&g_trac_fsir, "FSIR", KILOBYTE); //1K
+TRAC_INIT(&g_trac_fsir, FSIR_TRACE_BUF, KILOBYTE); //1K
// Easy macro replace for unit testing
//#define TRACUCOMP(args...) TRACFCOMP(args)
@@ -106,7 +106,7 @@ errlHndl_t ddOp(DeviceFW::OperationType i_opType,
FSI::RC_INVALID_LENGTH,
i_addr,
TO_UINT64(io_buflen));
- l_err->collectTrace("FSI",1024);
+ l_err->collectTrace(FSI_COMP_NAME);
break;
}
@@ -130,7 +130,7 @@ errlHndl_t ddOp(DeviceFW::OperationType i_opType,
FSI::RC_NULL_TARGET,
i_addr,
TO_UINT64(i_opType));
- l_err->collectTrace("FSI",1024);
+ l_err->collectTrace(FSI_COMP_NAME);
break;
}
// check target for sentinel
@@ -150,7 +150,7 @@ errlHndl_t ddOp(DeviceFW::OperationType i_opType,
FSI::RC_MASTER_TARGET,
i_addr,
TO_UINT64(i_opType));
- l_err->collectTrace("FSI",1024);
+ l_err->collectTrace(FSI_COMP_NAME);
break;
}
@@ -194,7 +194,7 @@ errlHndl_t ddOp(DeviceFW::OperationType i_opType,
FSI::RC_INVALID_OPERATION,
i_addr,
TO_UINT64(i_opType));
- l_err->collectTrace("FSI",1024);
+ l_err->collectTrace(FSI_COMP_NAME);
break;
}
@@ -330,7 +330,7 @@ errlHndl_t FsiDD::read(TARGETING::Target* i_target,
TWO_UINT32_TO_UINT64(
TARGETING::get_huid(i_target),
TARGETING::get_huid(iv_master)));
- l_err->collectTrace("FSI",1024);
+ l_err->collectTrace(FSI_COMP_NAME);
break;
}
@@ -385,7 +385,7 @@ errlHndl_t FsiDD::write(TARGETING::Target* i_target,
TWO_UINT32_TO_UINT64(
TARGETING::get_huid(i_target),
TARGETING::get_huid(iv_master)));
- l_err->collectTrace("FSI",1024);
+ l_err->collectTrace(FSI_COMP_NAME);
break;
}
@@ -409,149 +409,6 @@ errlHndl_t FsiDD::write(TARGETING::Target* i_target,
}
-/**
- * @brief Add FFDC for the target to an error log
- */
-void FsiDD::getFsiFFDC(FSI::fsiFFDCType_t i_ffdc_type, errlHndl_t &io_log,
- TARGETING::Target* i_target)
-{
- TRACDCOMP( g_trac_fsi, "FSI::getFFDC>" );
-
- // Local Variables
- uint8_t * l_data_ptr = NULL;
- uint32_t l_ffdc_byte_len = 0;
- bool i_merge = false;
- uint64_t l_slaveEnableIndex=0;
- uint64_t l_byte_index = 0;
-
- // Check Type -- Not doing anything unique right now
- if ( ! (i_ffdc_type == FSI::FSI_FFDC_PRESENCE_FAIL ) ||
- (i_ffdc_type == FSI::FSI_FFDC_READWRITE_FAIL) )
- {
- // Unsupported FSI FFDC type, so don't add FFDC section
- TRACFCOMP( g_trac_fsi, "FSI::getFFDC> Incorect i_ffdc_type (%d) "
- "Not Adding FFDC section!",
- i_ffdc_type);
-
- return;
- }
-
- // Add target to error log
- if (i_target != NULL)
- {
- ERRORLOG::ErrlUserDetailsTarget(i_target).addToLog(io_log);
- }
-
- // Add Master Target to Log
- if (iv_master != NULL)
- {
- ERRORLOG::ErrlUserDetailsTarget(iv_master).addToLog(io_log);
- }
-
- // Information to capture
- // 1) FsiChipInfo_t associated with this target
- // 2) Size of iv_slaves[]
- // 3) iv_slaves[]
- // 4) uint64_t -- slave enable Index
- l_ffdc_byte_len = sizeof(FsiChipInfo_t) +
- sizeof(uint32_t) +
- sizeof(iv_slaves) +
- sizeof(uint64_t);
-
- l_data_ptr = static_cast<uint8_t*>(malloc(l_ffdc_byte_len));
-
-
- // Collect the data
- FsiChipInfo_t l_fsi_chip_info = getFsiInfo(i_target);
-
- l_slaveEnableIndex = getSlaveEnableIndex (l_fsi_chip_info.master,
- l_fsi_chip_info.type);
-
-
- TRACFCOMP( g_trac_fsi,
- "FSI::getFFDC> l_ffdc_byte_len =%d, l_data_ptr=%p,"
- " sizeof: FsiChipInfo_t=%d, iv_slaves=%d, u32=%d "
- "u64=%d, l_slaveEnableIndex=0x%x", l_ffdc_byte_len,
- l_data_ptr, sizeof(FsiChipInfo_t), sizeof(iv_slaves),
- sizeof(uint32_t), sizeof(uint64_t), l_slaveEnableIndex);
-
-
- // Copy Data into memory bloack
- l_byte_index = 0;
-
- // FsiChipInfo_t
- memcpy(reinterpret_cast<void*>(l_data_ptr + l_byte_index),
- &l_fsi_chip_info, sizeof(FsiChipInfo_t));
-
- l_byte_index += sizeof(FsiChipInfo_t);
-
-
- // Size of iv_slaves[]
- const uint32_t l_so_iv_slaves = sizeof(iv_slaves);
- memcpy(reinterpret_cast<void*>(l_data_ptr + l_byte_index),
- &l_so_iv_slaves, sizeof(uint32_t));
-
- l_byte_index += sizeof(uint32_t);
-
-
- // iv_slaves[]
- memcpy(reinterpret_cast<void*>(l_data_ptr + l_byte_index),
- &iv_slaves, sizeof(iv_slaves));
-
- l_byte_index += sizeof(iv_slaves);
-
-
- // getSlaveEnable Index
- memcpy(reinterpret_cast<void*>(l_data_ptr + l_byte_index),
- &l_slaveEnableIndex, sizeof(uint64_t));
-
- l_byte_index += sizeof(uint64_t);
-
-
- // Check we didn't go too far or too short
- if (l_byte_index != l_ffdc_byte_len)
- {
- TRACFCOMP( g_trac_fsi, "FSI::getFFDC> Byte Length Mismatch: "
- "Not Adding FFDC section!"
- "l_byte_index=%d, l_ffdc_byte_len=%d",
- l_byte_index, l_ffdc_byte_len);
-
- // Free malloc'ed memory
- if (l_data_ptr != NULL)
- {
- free(l_data_ptr);
- }
-
- return;
- }
-
- // Actual call to log the data
- ERRORLOG::ErrlUD * l_pUD = (io_log)->addFFDC(FSI_COMP_ID,
- l_data_ptr,
- l_ffdc_byte_len,
- FsiFFDC_Ver1,
- FsiFFDC_CapData_1,
- i_merge);
-
- // Check for success
- if (l_pUD == NULL)
- {
- // Failure to add FFDC section
- TRACFCOMP( g_trac_fsi, "FSI::getFFDC> FAILURE TO ADD FFDC" );
-
- // Add errl trace
- (io_log)->collectTrace("ERR");
- }
- else
- {
- TRACFCOMP( g_trac_fsi, "FSI::getFFDC> FFDC Successfully added "
- "(%d bytes)", l_ffdc_byte_len );
- }
-
- return;
-
-}
-
/********************
Internal Methods
@@ -772,6 +629,134 @@ errlHndl_t FsiDD::initializeHardware()
return l_err;
}
+/**
+ * @brief Add FFDC for the target to an error log
+ */
+void FsiDD::getFsiFFDC(FSI::fsiFFDCType_t i_ffdc_type,
+ errlHndl_t &io_log,
+ TARGETING::Target* i_target)
+{
+ TRACDCOMP( g_trac_fsi, "FSI::getFFDC>" );
+
+ // Local Variables
+ uint8_t * i_data_ptr = NULL;
+ uint32_t i_ffdc_byte_len = 0;
+ bool i_merge = false;
+ uint64_t l_slaveEnableIndex=0;
+ uint64_t l_byte_index = 0;
+
+ // Add target to error log
+ if (i_target != NULL)
+ {
+ ERRORLOG::ErrlUserDetailsTarget(i_target,"FSI Slave")
+ .addToLog(io_log);
+ }
+
+ // Add Master Target to Log
+ if (iv_master != NULL)
+ {
+ ERRORLOG::ErrlUserDetailsTarget(iv_master,"FSI Master")
+ .addToLog(io_log);
+ }
+
+ if( FSI::FFDC_PRESENCE_FAIL == i_ffdc_type )
+ {
+ // Information to capture
+ // 1) FsiChipInfo_t associated with this target
+ // 2) Size of iv_slaves[]
+ // 3) iv_slaves[]
+ // 4) uint64_t -- slave enable Index
+ i_ffdc_byte_len = sizeof(FsiChipInfo_t) +
+ sizeof(uint32_t) +
+ sizeof(iv_slaves) +
+ sizeof(uint64_t);
+
+ i_data_ptr = static_cast<uint8_t*>(malloc(i_ffdc_byte_len));
+
+
+ // Collect the data
+ FsiChipInfo_t l_fsi_chip_info = getFsiInfo(i_target);
+
+ l_slaveEnableIndex = getSlaveEnableIndex (l_fsi_chip_info.master,
+ l_fsi_chip_info.type);
+
+
+ TRACFCOMP( g_trac_fsi,
+ "FSI::getFFDC> i_ffdc_byte_len =%d, i_data_ptr=%p,"
+ " sizeof: FsiChipInfo_t=%d, iv_slaves=%d, u32=%d "
+ "u64=%d, l_slaveEnableIndex=0x%x", i_ffdc_byte_len,
+ i_data_ptr, sizeof(FsiChipInfo_t), sizeof(iv_slaves),
+ sizeof(uint32_t), sizeof(uint64_t), l_slaveEnableIndex);
+
+
+ // Copy Data into memory block
+ l_byte_index = 0;
+
+ // FsiChipInfo_t
+ memcpy(reinterpret_cast<void*>(i_data_ptr + l_byte_index),
+ &l_fsi_chip_info, sizeof(FsiChipInfo_t));
+
+ l_byte_index += sizeof(FsiChipInfo_t);
+
+
+ // Size of iv_slaves[]
+ const uint32_t l_so_iv_slaves = sizeof(iv_slaves);
+ memcpy(reinterpret_cast<void*>(i_data_ptr + l_byte_index),
+ &l_so_iv_slaves, sizeof(uint32_t));
+
+ l_byte_index += sizeof(uint32_t);
+
+
+ // iv_slaves[]
+ memcpy(reinterpret_cast<void*>(i_data_ptr + l_byte_index),
+ &iv_slaves, sizeof(iv_slaves));
+
+ l_byte_index += sizeof(iv_slaves);
+
+
+ // getSlaveEnable Index
+ memcpy(reinterpret_cast<void*>(i_data_ptr + l_byte_index),
+ &l_slaveEnableIndex, sizeof(uint64_t));
+
+ l_byte_index += sizeof(uint64_t);
+
+ // Actual call to log the data
+ ERRORLOG::ErrlUD * l_pUD = (io_log)->addFFDC(FSI_COMP_ID,
+ i_data_ptr,
+ i_ffdc_byte_len,
+ FsiFFDC_Ver1,
+ FsiFFDC_CapData_1,
+ i_merge);
+
+ // Check for success
+ if (l_pUD == NULL)
+ {
+ // Failure to add FFDC section
+ TRACFCOMP( g_trac_fsi, "FSI::getFFDC> FAILURE TO ADD FFDC" );
+
+ // Add errl trace
+ (io_log)->collectTrace(ERRL_COMP_NAME);
+ }
+ else
+ {
+ TRACFCOMP( g_trac_fsi, "FSI::getFFDC> FFDC Successfully added "
+ "(%d bytes)", i_ffdc_byte_len );
+ }
+ }
+ else if( FSI::FFDC_READWRITE_FAIL == i_ffdc_type )
+ {
+ // No additional data for read/write fails yet
+ }
+ else if( FSI::FFDC_PIB_FAIL == i_ffdc_type )
+ {
+ ERRORLOG::ErrlUserDetailsLogRegister regdata(iv_master);
+ regdata.addData(DEVICE_XSCOM_ADDRESS(0x00020001ull));
+ regdata.addToLog(io_log);
+ }
+
+ return;
+
+}
/********************
Internal Methods
@@ -1131,8 +1116,8 @@ errlHndl_t FsiDD::handleOpbErrors(FsiAddrInfo_t& i_addrInfo,
// Add opbTarg to original error log
ERRORLOG::ErrlUserDetailsTarget(i_addrInfo.opbTarg).addToLog(l_err);
- l_err->collectTrace("FSI");
- l_err->collectTrace("FSIR");
+ l_err->collectTrace(FSI_COMP_NAME);
+ l_err->collectTrace(FSIR_TRACE_BUF);
//@todo - implement recovery and callout code (Story 35287)
@@ -1191,9 +1176,57 @@ errlHndl_t FsiDD::pollForComplete(FsiAddrInfo_t& i_addrInfo,
elapsed_time_ns += 10000;
} while( elapsed_time_ns <= MAX_OPB_TIMEOUT_NS ); // hardware has 1ms limit
if( l_err ) { break; }
- TRACDCOMP(g_trac_fsi,
- "FsiDD::pollForComplete> elapsed_time_ns=%d, Status=%.8X",
- elapsed_time_ns,read_data[0]);
+
+ // we should never timeout because the hardware should set an error
+ if( elapsed_time_ns > MAX_OPB_TIMEOUT_NS )
+ {
+ TRACFCOMP( g_trac_fsi, "FsiDD::pollForComplete> Never got complete or error on OPB operation : absAddr=0x%X, OPB Status=0x%.8X", i_addrInfo.absAddr, read_data[0] );
+ /*@
+ * @errortype
+ * @moduleid FSI::MOD_FSIDD_POLLFORCOMPLETE
+ * @reasoncode FSI::RC_OPB_TIMEOUT
+ * @userdata1[0:31] Relative FSI Address
+ * @userdata1[32:63] Absolute FSI Address
+ * @userdata2 OPB Status Register
+ * @devdesc FsiDD::pollForComplete> Error during FSI access
+ */
+ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE,
+ FSI::MOD_FSIDD_POLLFORCOMPLETE,
+ FSI::RC_OPB_TIMEOUT,
+ TWO_UINT32_TO_UINT64(
+ i_addrInfo.relAddr,
+ i_addrInfo.absAddr),
+ TWO_UINT32_TO_UINT64(
+ read_data[0],
+ read_data[1]) );
+
+ // Save both targets in i_addrInfo to error log
+ ERRORLOG::ErrlUserDetailsTarget(
+ i_addrInfo.fsiTarg
+ ).addToLog(l_err);
+ ERRORLOG::ErrlUserDetailsTarget(
+ i_addrInfo.opbTarg
+ ).addToLog(l_err);
+
+ // Read some error regs from scom
+ ERRORLOG::ErrlUserDetailsLogRegister
+ l_scom_data(i_addrInfo.opbTarg);
+ l_scom_data.addData(DEVICE_XSCOM_ADDRESS(0x00020000ull));
+ l_scom_data.addData(DEVICE_XSCOM_ADDRESS(0x00020001ull));
+ l_scom_data.addData(DEVICE_XSCOM_ADDRESS(0x00020002ull));
+ l_scom_data.addData(DEVICE_XSCOM_ADDRESS(0x00020005ull));
+ l_scom_data.addData(DEVICE_XSCOM_ADDRESS(0x00020006ull));
+ l_scom_data.addData(DEVICE_XSCOM_ADDRESS(0x00020007ull));
+ l_scom_data.addData(DEVICE_XSCOM_ADDRESS(0x00020008ull));
+ l_scom_data.addData(DEVICE_XSCOM_ADDRESS(0x00020009ull));
+ l_scom_data.addData(DEVICE_XSCOM_ADDRESS(0x0002000Aull));
+ l_scom_data.addToLog(l_err);
+
+ l_err->collectTrace(FSI_COMP_NAME);
+ l_err->collectTrace(FSIR_TRACE_BUF);
+
+ break;
+ }
// check if we got an error from the OPB
// (will also check for busy/timeout)
@@ -1250,8 +1283,8 @@ errlHndl_t FsiDD::pollForComplete(FsiAddrInfo_t& i_addrInfo,
l_scom_data.addData(DEVICE_XSCOM_ADDRESS(0x0002000Aull));
l_scom_data.addToLog(l_err);
- l_err->collectTrace("FSI");
- l_err->collectTrace("FSIR");
+ l_err->collectTrace(FSI_COMP_NAME);
+ l_err->collectTrace(FSIR_TRACE_BUF);
break;
}
@@ -1314,7 +1347,7 @@ errlHndl_t FsiDD::genFullFsiAddr(FsiAddrInfo_t& io_addrInfo)
FSI::RC_FSI_NOT_SUPPORTED,
TARGETING::get_huid(io_addrInfo.fsiTarg),
fsi_info.linkid.id );
- l_err->collectTrace("FSI",1024);
+ l_err->collectTrace(FSI_COMP_NAME);
return l_err;
}
//target is behind another proc
@@ -1356,7 +1389,7 @@ errlHndl_t FsiDD::genFullFsiAddr(FsiAddrInfo_t& io_addrInfo)
TWO_UINT32_TO_UINT64(
fsi_info.linkid.id,
mfsi_info.linkid.id) );
- l_err->collectTrace("FSI",1024);
+ l_err->collectTrace(FSI_COMP_NAME);
return l_err;
}
else if( TARGETING::FSI_MASTER_TYPE_MFSI != mfsi_info.type )
@@ -1389,7 +1422,7 @@ errlHndl_t FsiDD::genFullFsiAddr(FsiAddrInfo_t& io_addrInfo)
TWO_UINT32_TO_UINT64(
fsi_info.linkid.id,
mfsi_info.linkid.id) );
- l_err->collectTrace("FSI",1024);
+ l_err->collectTrace(FSI_COMP_NAME);
return l_err;
}
@@ -1553,8 +1586,8 @@ errlHndl_t FsiDD::initPort(FsiChipInfo_t i_fsiInfo,
DEVICE_FSI_ADDRESS(master_ctl_reg|FSI_MESRB0_1D0));
l_scom_data.addToLog(l_err);
- l_err->collectTrace("FSI");
- l_err->collectTrace("FSIR");
+ l_err->collectTrace(FSI_COMP_NAME);
+ l_err->collectTrace(FSIR_TRACE_BUF);
break;
}
diff --git a/src/usr/fsi/fsipres.C b/src/usr/fsi/fsipres.C
index 26859196a..400f5aba0 100644
--- a/src/usr/fsi/fsipres.C
+++ b/src/usr/fsi/fsipres.C
@@ -200,7 +200,7 @@ errlHndl_t procPresenceDetect(DeviceFW::OperationType i_opType,
}
// Add FFDC for the target to an error log
- getFsiFFDC( FSI_FFDC_PRESENCE_FAIL, l_errl, i_target);
+ getFsiFFDC( FFDC_PRESENCE_FAIL, l_errl, i_target);
// Add FSI and VPD trace
@@ -372,7 +372,7 @@ errlHndl_t membPresenceDetect(DeviceFW::OperationType i_opType,
}
// Add FFDC for the target to an error log
- getFsiFFDC( FSI_FFDC_PRESENCE_FAIL, l_errl, i_target);
+ getFsiFFDC( FFDC_PRESENCE_FAIL, l_errl, i_target);
// Add FSI and VPD trace
l_errl->collectTrace("FSI");
diff --git a/src/usr/fsi/test/fsiddtest.H b/src/usr/fsi/test/fsiddtest.H
index b1b103190..20f901e5c 100644
--- a/src/usr/fsi/test/fsiddtest.H
+++ b/src/usr/fsi/test/fsiddtest.H
@@ -38,6 +38,7 @@
#include <fsi/fsi_reasoncodes.H>
#include <sys/time.h>
#include <targeting/common/attributes.H>
+#include <targeting/common/utilFilter.H>
extern trace_desc_t* g_trac_fsi;
@@ -461,6 +462,51 @@ class FsiDDTest : public CxxTest::TestSuite
TRACFCOMP( g_trac_fsi, "FsiDDTest::test_badTargets> %d/%d fails", fails, total );
};
+ /**
+ * @brief FSI DD test - FFDC Collection
+ * Verify FFDC for errors
+ */
+ void test_FFDC(void)
+ {
+ TRACFCOMP( g_trac_fsi, "FsiDDTest::test_FFDC> Start" );
+ errlHndl_t l_err = NULL;
+
+ // Find any Centaur target
+ TARGETING::TargetHandleList l_memTargetList;
+ getAllChips( l_memTargetList, TYPE_MEMBUF, true );
+ if( l_memTargetList.empty() )
+ {
+ TRACFCOMP( g_trac_fsi, "FsiDDTest::test_FFDC> No Centaurs found..." );
+ TS_FAIL( "FsiDDTest::test_FFDC> No Centaurs found..." );
+ }
+ TARGETING::Target* fsi_target = *(l_memTargetList.begin());
+
+ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE,
+ FSI::MOD_FSIDD_INVALID,
+ FSI::RC_BAD_REASONCODE,
+ TARGETING::get_huid(fsi_target),
+ FSI::FFDC_PRESENCE_FAIL);
+ FSI::getFsiFFDC( FSI::FFDC_PRESENCE_FAIL, l_err, fsi_target );
+ errlCommit(l_err,CXXTEST_COMP_ID);
+
+ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE,
+ FSI::MOD_FSIDD_INVALID,
+ FSI::RC_BAD_REASONCODE,
+ TARGETING::get_huid(fsi_target),
+ FSI::FFDC_READWRITE_FAIL);
+ FSI::getFsiFFDC( FSI::FFDC_READWRITE_FAIL, l_err, fsi_target );
+ errlCommit(l_err,CXXTEST_COMP_ID);
+
+ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE,
+ FSI::MOD_FSIDD_INVALID,
+ FSI::RC_BAD_REASONCODE,
+ TARGETING::get_huid(fsi_target),
+ FSI::FFDC_PIB_FAIL);
+ FSI::getFsiFFDC( FSI::FFDC_PIB_FAIL, l_err, fsi_target );
+ errlCommit(l_err,CXXTEST_COMP_ID);
+
+ TRACFCOMP( g_trac_fsi, "FsiDDTest::test_FFDC> Finish" );
+ };
};
OpenPOWER on IntegriCloud