diff options
author | Dan Crowell <dcrowell@us.ibm.com> | 2016-06-13 10:01:54 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-06-15 14:11:05 -0400 |
commit | 325c221ac4d716b0acb147c54729782a41ebe85d (patch) | |
tree | a1e2badbe32e284300407916be2e8485ad6d3567 /src/usr/xscom | |
parent | 6ca26358dfa900a7a2b676876b16cd21a8499b76 (diff) | |
download | talos-hostboot-325c221ac4d716b0acb147c54729782a41ebe85d.tar.gz talos-hostboot-325c221ac4d716b0acb147c54729782a41ebe85d.zip |
XSCOM Error path updates for P9
Modified the register addresses that are used to collect XSCOM
error data and to reset the logic.
Also updated the devtree values for the xscom node.
Change-Id: I7cc426857258d460b79afc4b43493ee1a0a8a7d0
RTC: 128077
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/25727
Tested-by: Jenkins Server
Tested-by: FSP CI Jenkins
Reviewed-by: Andrew J. Geissler <andrewg@us.ibm.com>
Reviewed-by: Matthew A. Ploetz <maploetz@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/xscom')
-rw-r--r-- | src/usr/xscom/xscom.C | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/src/usr/xscom/xscom.C b/src/usr/xscom/xscom.C index b4f4c3aa6..fb487c55b 100644 --- a/src/usr/xscom/xscom.C +++ b/src/usr/xscom/xscom.C @@ -551,9 +551,6 @@ uint64_t* getCpuIdVirtualAddress( XSComBase_t& o_mmioAddr ) void resetScomEngine(TARGETING::Target* i_target, uint64_t* i_virtAddr) { - // @todo-RTC:128077 XSCOM support for P9 - return; - errlHndl_t l_err = NULL; HMER l_hmer; uint64_t io_buffer = 0; @@ -561,14 +558,16 @@ void resetScomEngine(TARGETING::Target* i_target, uint64_t* l_virtAddr = 0; // xscom registers that need to be set. - XscomAddrType_t XscomAddr[] = { {0x0202000F, CurThreadCpu}, - {0x02020007, TargetCpu}, - {0x02020009, TargetCpu},}; + XscomAddrType_t XscomAddr[] = { + {0x00090018, CurThreadCpu}, //XSCOM_RCVED_STAT_REG + {0x00090012, TargetCpu}, //XSCOM_LOG_REG + {0x00090013, TargetCpu}, //XSCOM_ERR_REG + }; TRACFCOMP(g_trac_xscom,"resetScomEngine: XSCOM RESET INTIATED"); // Loop through the registers you want to write to 0 - for (int i = 0; i<3; i++) + for (size_t i = 0; i<(sizeof(XscomAddr)/sizeof(XscomAddr[0])); i++) { // First address we need to read is for the Cpu that this thread is // running on. Need to find the virtAddr for that CPU. @@ -627,8 +626,6 @@ void collectXscomFFDC(TARGETING::Target* i_target, uint64_t* i_virtAddr, errlHndl_t& io_errl) { -// @todo-RTC:128077 XSCOM support for P9 -#if (0) errlHndl_t l_err = NULL; HMER l_hmer; uint64_t io_buffer = 0; @@ -636,10 +633,12 @@ void collectXscomFFDC(TARGETING::Target* i_target, uint64_t* l_virtAddr = 0; // xscom registers that need to be set. - XscomAddrType_t XscomAddr[4] = { {0x0202000F, CurThreadCpu}, - {0x02020004, TargetCpu}, - {0x02020007, TargetCpu}, - {0x02020009, TargetCpu},}; + XscomAddrType_t XscomAddr[4] = { + {0x00090018, CurThreadCpu}, //XSCOM_RCVED_STAT_REG + {0x00090012, TargetCpu}, //XSCOM_LOG_REG + {0x00090013, TargetCpu}, //XSCOM_ERR_REG + {0x0009001C, TargetCpu}, //ADS_XSCOM_CMD_REG + }; TRACFCOMP(g_trac_xscom,"collectXscomFFDC: XSCOM COLLECT FFDC STARTED"); @@ -647,13 +646,14 @@ void collectXscomFFDC(TARGETING::Target* i_target, ERRORLOG::ErrlUserDetailsLogRegister l_logReg(i_target); // Loop through the addresses you want to collect. - for (int i = 0; i<4; i++) + for (size_t i = 0; i<(sizeof(XscomAddr)/sizeof(XscomAddr[0])); i++) { // If collecting first address, need to collect from Source Chip if (XscomAddr[i].target_type == CurThreadCpu) { - l_virtAddr = getCpuIdVirtualAddress(); + XSComBase_t l_ignored = 0; + l_virtAddr = getCpuIdVirtualAddress(l_ignored); } else { @@ -695,7 +695,6 @@ void collectXscomFFDC(TARGETING::Target* i_target, // Add the register FFDC to the errorlog passed in. l_logReg.addToLog(io_errl); -#endif return; } |