diff options
-rwxr-xr-x | src/build/simics/startup.simics | 1 | ||||
-rw-r--r-- | src/usr/cxxtest/cxxtestexec.C | 10 | ||||
-rw-r--r-- | src/usr/fsi/fsidd.C | 47 | ||||
-rw-r--r-- | src/usr/fsi/fsidd.H | 8 | ||||
-rw-r--r-- | src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C | 4 | ||||
-rw-r--r-- | src/usr/xscom/xscom.C | 14 |
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++) |