diff options
| author | Ilya Smirnov <ismirno@us.ibm.com> | 2019-03-26 15:22:34 -0500 |
|---|---|---|
| committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2019-04-04 17:16:53 -0500 |
| commit | 28c069596438da201e175ad55809a0bce91f83e8 (patch) | |
| tree | c914c8c218872c78202711b619f828087a2bbf5d /src/usr/dump | |
| parent | 514f1137ec8e17f1f04993e393b817f288f30df3 (diff) | |
| download | talos-hostboot-28c069596438da201e175ad55809a0bce91f83e8.tar.gz talos-hostboot-28c069596438da201e175ad55809a0bce91f83e8.zip | |
SMF: Put HOMER Back in SMF Memory
It's time for HOMER to be put back on top of SMF memory. Note
that this will only happen on SMF-enabled systems.
Change-Id: I0a7fa5235a5f4dc5876defde340a4ae713f2e43d
RTC: 202399
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/75083
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Reviewed-by: Glenn Miles <milesg@ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: Roland Veloz <rveloz@us.ibm.com>
Reviewed-by: Nicholas E. Bofferding <bofferdn@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/dump')
| -rw-r--r-- | src/usr/dump/dumpCollect.C | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/src/usr/dump/dumpCollect.C b/src/usr/dump/dumpCollect.C index 8e186c311..6b95a2c2d 100644 --- a/src/usr/dump/dumpCollect.C +++ b/src/usr/dump/dumpCollect.C @@ -193,13 +193,13 @@ errlHndl_t copyArchitectedRegs(void) } // Map processor dump area destination address to VA addresses - procTableEntry = reinterpret_cast<procDumpAreaEntry *>(procTableAddr); + procTableEntry = reinterpret_cast<procDumpAreaEntry *>(procTableAddr); pDstAddrBase = getPhysAddr(procTableEntry->dstArrayAddr); vMapDstAddrBase = mm_block_map(pDstAddrBase, procTableEntry->dstArraySize); // Map architected register reserved memory to VA addresses - uint64_t srcAddr = ISTEP::get_top_mem_addr() - + uint64_t srcAddr = ISTEP::get_top_homer_mem_addr() - VMM_ARCH_REG_DATA_SIZE_ALL_PROC - VMM_ALL_HOMER_OCC_MEMORY_SIZE; pSrcAddrBase = reinterpret_cast<void * const>(srcAddr); @@ -216,7 +216,7 @@ errlHndl_t copyArchitectedRegs(void) procTableEntry->capArraySize = 0; for (const auto & procChip: procChips) { - uint8_t procNum = procChip->getAttr<TARGETING::ATTR_POSITION>(); + uint8_t procNum = procChip->getAttr<TARGETING::ATTR_POSITION>(); // Base addresses w.r.t PROC positions. This is static here // and used for reference below to calculate all other addresses uint64_t procSrcAddr = (reinterpret_cast<uint64_t>(vMapSrcAddrBase)+ @@ -228,7 +228,7 @@ errlHndl_t copyArchitectedRegs(void) uint16_t regCount = sbeProcHdr->reg_cnt; //Validate the structure versions used by SBE and HB for sharing the - //data + //data if( sbeProcHdr->version != REG_DUMP_SBE_HB_STRUCT_VER ) { /*@ @@ -239,7 +239,7 @@ errlHndl_t copyArchitectedRegs(void) * @userdata2 Structure version supported by HB * @devdesc Mismatch between the version of structure * supported by both SBE and HB. - * + * */ l_err = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, @@ -259,7 +259,7 @@ errlHndl_t copyArchitectedRegs(void) procTableEntry->threadRegSize = sizeof(hostArchRegDataHdr)+ (regCount * sizeof(hostArchRegDataEntry)); - procTableEntry->capArraySize = procTableEntry->capArraySize + + procTableEntry->capArraySize = procTableEntry->capArraySize + (procTableEntry->threadRegSize * threadCount); if (procTableEntry->dstArraySize < procTableEntry->capArraySize) @@ -269,9 +269,9 @@ errlHndl_t copyArchitectedRegs(void) * @moduleid DUMP::DUMP_ARCH_REGS * @reasoncode DUMP::DUMP_PDAT_INSUFFICIENT_SPACE * @userdata1 Hypervisor reserved memory size - * @userdata2 Memory needed to copy architected + * @userdata2 Memory needed to copy architected * register data - * @devdesc Insufficient space to copy architected + * @devdesc Insufficient space to copy architected * registers */ l_err = new ERRORLOG::ErrlEntry( @@ -288,10 +288,10 @@ errlHndl_t copyArchitectedRegs(void) // Total Number of Threads possible in one Proc for(uint32_t idx = 0; idx < threadCount; idx++) { - sbeArchRegDumpThreadHdr_t *sbeTdHdr = + sbeArchRegDumpThreadHdr_t *sbeTdHdr = reinterpret_cast<sbeArchRegDumpThreadHdr_t *>(procSrcAddr); - hostArchRegDataHdr *hostHdr = + hostArchRegDataHdr *hostHdr = reinterpret_cast<hostArchRegDataHdr *>(dstTempAddr); // Fill thread header info @@ -300,16 +300,16 @@ errlHndl_t copyArchitectedRegs(void) hostHdr->iv_regArrayHdr.hdatOffset = sizeof(HDAT::hdatHDIFDataArray_t); hostHdr->iv_regArrayHdr.hdatArrayCnt = regCount; - hostHdr->iv_regArrayHdr.hdatAllocSize = + hostHdr->iv_regArrayHdr.hdatAllocSize = sizeof(hostArchRegDataEntry); - hostHdr->iv_regArrayHdr.hdatActSize = + hostHdr->iv_regArrayHdr.hdatActSize = sizeof(hostArchRegDataEntry); - dstTempAddr = reinterpret_cast<uint64_t>(dstTempAddr + + dstTempAddr = reinterpret_cast<uint64_t>(dstTempAddr + sizeof(hostArchRegDataHdr)); //Update SBE data source address to point to the register data //related to the current thread. - procSrcAddr = reinterpret_cast<uint64_t>(procSrcAddr + + procSrcAddr = reinterpret_cast<uint64_t>(procSrcAddr + sizeof(sbeArchRegDumpThreadHdr_t)); //Validate the CoreState to find if the buffer has register data @@ -322,7 +322,6 @@ errlHndl_t copyArchitectedRegs(void) continue; } - // Fill register data for(uint8_t cnt = 0; cnt < regCount; cnt++) { @@ -335,15 +334,15 @@ errlHndl_t copyArchitectedRegs(void) hostRegData->regNum = sbeRegData->regNum; hostRegData->regVal = sbeRegData->regVal; - dstTempAddr = reinterpret_cast<uint64_t>(dstTempAddr + + dstTempAddr = reinterpret_cast<uint64_t>(dstTempAddr + sizeof(hostArchRegDataEntry)); //Update the SBE data source address to point to the //next register data related to the same thread. - procSrcAddr = reinterpret_cast<uint64_t>(procSrcAddr + + procSrcAddr = reinterpret_cast<uint64_t>(procSrcAddr + sizeof(sbeArchRegDumpEntries_t)); if( sbeRegData->isLastReg ) { - //Skip the FFDC for now + //Skip the FFDC for now if(sbeRegData->isFfdcPresent) { //Move the source address to skip theFFDC @@ -354,7 +353,7 @@ errlHndl_t copyArchitectedRegs(void) if(remaingRegCount) { dstTempAddr = reinterpret_cast<uint64_t>( - dstTempAddr + (remaingRegCount * + dstTempAddr + (remaingRegCount * sizeof(hostArchRegDataEntry))); } } @@ -366,7 +365,7 @@ errlHndl_t copyArchitectedRegs(void) // Update Process Dump Area tuple procTableEntry->threadRegVersion = REG_DUMP_HDAT_STRUCT_VER; procTableEntry->capArrayAddr = procTableEntry->dstArrayAddr; - + // Update the PDA Table Entries to Attribute to be fetched in istep 21 TARGETING::TargetService& targetService = TARGETING::targetService(); TARGETING::Target* l_sys = NULL; |

