summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xsrc/build/simics/startup.simics1
-rw-r--r--src/usr/cxxtest/cxxtestexec.C10
-rw-r--r--src/usr/fsi/fsidd.C47
-rw-r--r--src/usr/fsi/fsidd.H8
-rw-r--r--src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C4
-rw-r--r--src/usr/xscom/xscom.C14
6 files changed, 60 insertions, 24 deletions
diff --git a/src/build/simics/startup.simics b/src/build/simics/startup.simics
index fbd7d0f19..e6d999c85 100755
--- a/src/build/simics/startup.simics
+++ b/src/build/simics/startup.simics
@@ -9,6 +9,7 @@ python "os.environ['HB_MACHINE'] = \""+$hb_machine+"\""
# Setup some common vars to use across machine types
+echo "Note: Error messages for cecdrawer0_XXX are expected for non-Brazos machines"
$hb_masterproc = ""
try {
# Attempt to use the Brazos name
diff --git a/src/usr/cxxtest/cxxtestexec.C b/src/usr/cxxtest/cxxtestexec.C
index bf55c5e69..38fa2f501 100644
--- a/src/usr/cxxtest/cxxtestexec.C
+++ b/src/usr/cxxtest/cxxtestexec.C
@@ -5,7 +5,7 @@
/* */
/* IBM CONFIDENTIAL */
/* */
-/* COPYRIGHT International Business Machines Corp. 2011,2012 */
+/* COPYRIGHT International Business Machines Corp. 2011,2013 */
/* */
/* p1 */
/* */
@@ -82,7 +82,7 @@ void cxxinit( errlHndl_t &io_taskRetErrl )
// start executing the CxxTest modules
- TRACDCOMP( g_trac_cxxtest, ENTER_MRK "Execute CxxTestExec, totalmodules=%d.",
+ TRACFCOMP( g_trac_cxxtest, ENTER_MRK "Execute CxxTestExec, totalmodules=%d.",
module_list.size());
printkd( "\n Begin CxxTest...\n");
@@ -111,7 +111,7 @@ void cxxinit( errlHndl_t &io_taskRetErrl )
}
tidrc = task_exec( *i, NULL );
- TRACDCOMP( g_trac_cxxtest, "Launched task: %s tidrc=%d",
+ TRACFCOMP( g_trac_cxxtest, "Launched task: %s tidrc=%d",
*i, tidrc );
tasks.push_back(tidrc);
}
@@ -131,6 +131,10 @@ void cxxinit( errlHndl_t &io_taskRetErrl )
TRACFCOMP( g_trac_cxxtest, "Task %d crashed.", *t );
__sync_add_and_fetch(&CxxTest::g_FailedTests, 1);
}
+ else
+ {
+ TRACFCOMP( g_trac_cxxtest, "Task %d finished.", *t );
+ }
}
__sync_add_and_fetch(&CxxTest::g_ModulesCompleted, 1);
diff --git a/src/usr/fsi/fsidd.C b/src/usr/fsi/fsidd.C
index 85eeb267a..cf9681273 100644
--- a/src/usr/fsi/fsidd.C
+++ b/src/usr/fsi/fsidd.C
@@ -56,7 +56,6 @@ TRAC_INIT(&g_trac_fsir, "FSIR", KILOBYTE); //1K
//#define TRACUCOMP(args...) TRACFCOMP(args)
#define TRACUCOMP(args...)
-
namespace FSI
{
@@ -1006,7 +1005,21 @@ errlHndl_t FsiDD::handleOpbErrors(FsiAddrInfo_t& i_addrInfo,
ERRORLOG::ErrlUserDetailsLogRegister
l_eud_fsiT(i_addrInfo.fsiTarg);
- l_err2 = read( 0x31D0, &data );
+ // Read some error regs from scom
+ ERRORLOG::ErrlUserDetailsLogRegister
+ l_scom_data(iv_master);
+ 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_err2 = read( i_addrInfo.opbTarg, 0x31D0, &data );
if( l_err2 )
{
delete l_err2;
@@ -1019,7 +1032,7 @@ errlHndl_t FsiDD::handleOpbErrors(FsiAddrInfo_t& i_addrInfo,
}
- l_err2 = read( 0x31D4, &data );
+ l_err2 = read( i_addrInfo.opbTarg, 0x31D4, &data );
if( l_err2 )
{
delete l_err2;
@@ -1031,7 +1044,7 @@ errlHndl_t FsiDD::handleOpbErrors(FsiAddrInfo_t& i_addrInfo,
DEVICE_FSI_ADDRESS(0x31D4ull));
}
- l_err2 = read( 0x31D8, &data );
+ l_err2 = read( i_addrInfo.opbTarg, 0x31D8, &data );
if( l_err2 )
{
delete l_err2;
@@ -1043,7 +1056,7 @@ errlHndl_t FsiDD::handleOpbErrors(FsiAddrInfo_t& i_addrInfo,
DEVICE_FSI_ADDRESS(0x31D8ull));
}
- l_err2 = read( 0x31DC, &data );
+ l_err2 = read( i_addrInfo.opbTarg, 0x31DC, &data );
if( l_err2 )
{
delete l_err2;
@@ -1123,8 +1136,7 @@ errlHndl_t FsiDD::pollForComplete(FsiAddrInfo_t& i_addrInfo,
break;
}
- //TODO tmp remove for VPO, need better polling strategy -- RTC43738
- //nanosleep( 0, 10,000 ); //sleep for 10,000 ns
+ nanosleep( 0,10000 ); //sleep for 10,000 ns
elapsed_time_ns += 10000;
} while( elapsed_time_ns <= MAX_OPB_TIMEOUT_NS ); // hardware has 1ms limit
if( l_err ) { break; }
@@ -1161,8 +1173,23 @@ errlHndl_t FsiDD::pollForComplete(FsiAddrInfo_t& i_addrInfo,
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");
l_err->collectTrace("FSIR");
+
break;
}
@@ -1433,7 +1460,7 @@ errlHndl_t FsiDD::initPort(FsiChipInfo_t i_fsiInfo,
// before we run
TARGETING::Target * sys = NULL;
TARGETING::targetService().getTopLevelTarget( sys );
- TARGETING::SpFunctions spfuncs;
+ TARGETING::SpFunctions spfuncs = TARGETING::SpFunctions();
if( sys
&& sys->tryGetAttr<TARGETING::ATTR_SP_FUNCTIONS>(spfuncs)
&& spfuncs.fsiSlaveInit )
@@ -1496,11 +1523,11 @@ errlHndl_t FsiDD::initPort(FsiChipInfo_t i_fsiInfo,
// resets everything to that window
if( TARGETING::FSI_MASTER_TYPE_CMFSI == i_fsiInfo.type )
{
- slave_offset |= CMFSI_SLAVE_3;
+ slave_offset |= CMFSI_SLAVE_0;
}
else if( TARGETING::FSI_MASTER_TYPE_MFSI == i_fsiInfo.type )
{
- slave_offset |= MFSI_SLAVE_3;
+ slave_offset |= MFSI_SLAVE_0;
}
//Setup the FSI slave to enable HW recovery, lbus ratio
diff --git a/src/usr/fsi/fsidd.H b/src/usr/fsi/fsidd.H
index 59534b822..53b5f3937 100644
--- a/src/usr/fsi/fsidd.H
+++ b/src/usr/fsi/fsidd.H
@@ -66,7 +66,7 @@ class FsiDD
errlHndl_t initializeHardware();
/**
- * @brief Performs an FSI Read Operation to an absolute address
+ * @brief Performs an FSI Read Operation
*
* @param[in] i_target Chip target of FSI operation
* @param[in] i_address Address to read (relative to target)
@@ -393,11 +393,11 @@ class FsiDD
OPB_STAT_BUSY = 0x00010000, /**< Bit 15 is the Busy bit */
OPB_STAT_READ_VALID = 0x00020000, /**< Bit 14 is the Valid Read bit */
OPB_STAT_ERR_OPB = 0x09F00000, /**< 4,7-11 are OPB errors */
-
- //TODO RTC 65922 tmp err mask for BU -- SW190814 why Any err always on
OPB_STAT_ERR_CMFSI = 0x00007C00, /**< 16-21 are cMFSI errors */
OPB_STAT_ERR_MFSI = 0x0000007C, /**< 24-29 are MFSI errors */
- OPB_STAT_ERR_ANY = OPB_STAT_ERR_OPB|OPB_STAT_ERR_CMFSI|OPB_STAT_ERR_MFSI,
+ OPB_STAT_ERR_ANY = (OPB_STAT_ERR_OPB |
+ OPB_STAT_ERR_CMFSI |
+ OPB_STAT_ERR_MFSI),
};
/**
diff --git a/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C b/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C
index 2bfadc164..f1bf9bb9e 100644
--- a/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C
+++ b/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C
@@ -347,7 +347,7 @@ void* call_fabric_io_dccal( void *io_pArgs )
* bytes 2-3: reason code of first error
* @userdata2 bytes 0-1: total number of elogs included
* bytes 2-3: N/A
- * @devdesc call to fabric_io_run_training has failed
+ * @devdesc call to fabric_io_dccal has failed
* see error log in the user details section for
* additional details.
*/
@@ -381,7 +381,7 @@ void* call_fabric_io_dccal( void *io_pArgs )
* bytes 2-3: reason code of first error
* @userdata2 bytes 0-1: total number of elogs included
* bytes 2-3: N/A
- * @devdesc call to fabric_io_run_training has failed
+ * @devdesc call to fabric_io_dccal has failed
* see error log in the user details section for
* additional details.
*/
diff --git a/src/usr/xscom/xscom.C b/src/usr/xscom/xscom.C
index 1114e8c3d..331966b49 100644
--- a/src/usr/xscom/xscom.C
+++ b/src/usr/xscom/xscom.C
@@ -387,14 +387,18 @@ errlHndl_t getTargetVirtualAddress(TARGETING::Target* i_target,
( ( (g_xscomMaxChipsPerNode * xscomNodeId) +
xscomChipId ) * THIRTYTWO_GB);
+ TRACFCOMP(g_trac_xscom,
+ "Target %.8X :: Node:%d Chip:%d :: XscomBase:0x%llX",
+ TARGETING::get_huid(i_target),
+ xscomNodeId,
+ xscomChipId,
+ l_XSComBaseAddr);
+
// Target's virtual address
o_virtAddr = static_cast<uint64_t*>
(mmio_dev_map(reinterpret_cast<void*>(l_XSComBaseAddr),
THIRTYTWO_GB));
- TRACDCOMP(g_trac_xscom, "xscomPerformOp: o_Virtual Address = 0x%llX\n",
- o_virtAddr);
-
// Implemented the virtual address attribute..
// Leaving the comments as a discussion point...
@@ -565,7 +569,7 @@ uint64_t* getCpuIdVirtualAddress()
//NNNCCCPPPPTTT format fot the cpuid..
// N = node, C = chip, P = proc, T = thread
- uint32_t chipId = (cpuid & 0x0480)>>7;
+ uint32_t chipId = (cpuid & 0x0380)>>7;
uint32_t nodeId = (cpuid & 0x1C00)>>10;
XSComBase_t l_systemBaseAddr = MASTER_PROC_XSCOM_BASE_ADDR;
@@ -610,7 +614,7 @@ void resetScomEngine(TARGETING::Target* i_target,
0x02020007,
0x02020009};
- TRACFCOMP(g_trac_xscom,"XSCOM RESET INTIATED");
+ TRACFCOMP(g_trac_xscom,"XSCOM RESET INITIATED");
// Loop through the registers you want to write to 0
for (int i = 0; i<3; i++)
OpenPOWER on IntegriCloud