diff options
Diffstat (limited to 'src/usr')
-rw-r--r-- | src/usr/sbeio/sbe_psudd.C | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/usr/sbeio/sbe_psudd.C b/src/usr/sbeio/sbe_psudd.C index d66e757b4..01fcb535e 100644 --- a/src/usr/sbeio/sbe_psudd.C +++ b/src/usr/sbeio/sbe_psudd.C @@ -668,7 +668,6 @@ errlHndl_t SbePsu::writeScom(TARGETING::Target * i_target, errlHndl_t SbePsu::allocateFFDCBuffer(TARGETING::Target * i_target) { - static mutex_t l_alloMux = MUTEX_INITIALIZER; uint32_t l_bufSize = getSbeFFDCBufferSize(); @@ -684,13 +683,20 @@ errlHndl_t SbePsu::allocateFFDCBuffer(TARGETING::Target * i_target) { void * l_ffdcPtr = PageManager::allocatePage(ffdcPackageSize, true); memset(l_ffdcPtr, 0x00, l_bufSize); + uint64_t l_phyAddr_ffdcPtr = mm_virt_to_phys(l_ffdcPtr); errl = sendSetFFDCAddr(l_bufSize, 0, - mm_virt_to_phys(l_ffdcPtr), + l_phyAddr_ffdcPtr, 0, i_target); + //Make the corresponding platform attribute match what we sent to SBE + //Things will work without setting these attributes, just to reduce + //confusion during debug in the future we will set them here. + i_target->setAttr<TARGETING::ATTR_SBE_FFDC_ADDR>(l_phyAddr_ffdcPtr); + i_target->setAttr<TARGETING::ATTR_SBE_COMM_ADDR>(0); + if(errl) { PageManager::freePage(l_ffdcPtr); |