diff options
Diffstat (limited to 'src/bootloader')
-rw-r--r-- | src/bootloader/bl_pnorAccess.C | 71 | ||||
-rw-r--r-- | src/bootloader/bootloader.C | 6 | ||||
-rw-r--r-- | src/bootloader/makefile | 5 |
3 files changed, 46 insertions, 36 deletions
diff --git a/src/bootloader/bl_pnorAccess.C b/src/bootloader/bl_pnorAccess.C index 89183754a..ac49e010b 100644 --- a/src/bootloader/bl_pnorAccess.C +++ b/src/bootloader/bl_pnorAccess.C @@ -57,32 +57,8 @@ void bl_pnorAccess::readTOC(uint8_t i_tocBuffer[PNOR::TOC_SIZE], BOOTLOADER_TRACE(BTLDR_TRC_PA_READTOC_ZEROSECTION_RTN); - //make sure that the buffer is not null - PNOR::checkForNullBuffer(i_tocBuffer, o_errCode, l_ffs_hdr); - - if(o_errCode != PNOR::NO_ERROR) - { - BOOTLOADER_TRACE_W_BRK(BTLDR_TRC_PA_READTOC_CHKNULLBUFFER_NULL); - // Always TI if NULL pointer is passed in - /*@ - * @errortype - * @moduleid Bootloader::MOD_PNORACC_READTOC - * @reasoncode Bootloader::RC_CHK_NULL_BUFFER - * @userdata1[0:15] TI_WITH_SRC - * @userdata1[16:31] TI_BOOTLOADER - * @userdata1[32:63] Failing address = 0 - * @userdata2[0:31] Pointer to TOC buffer - * @userdata2[32:63] Error code - * @devdesc Invalid TOC buffer pointer - * @custdesc A problem occurred while running processor - * boot code. - */ - bl_terminate(Bootloader::MOD_PNORACC_READTOC, - Bootloader::RC_CHK_NULL_BUFFER, - reinterpret_cast<uint64_t>(i_tocBuffer), - o_errCode); - break; - } + // Create a convenient way to access the ffs_hdr struct + l_ffs_hdr = reinterpret_cast<ffs_hdr*>(i_tocBuffer); BOOTLOADER_TRACE(BTLDR_TRC_PA_READTOC_CHECKNULLBUFFER_RTN); @@ -233,8 +209,25 @@ void bl_pnorAccess::findTOC(uint64_t i_lpcBar, PNOR::SectionData_t * o_TOC, //PNOR error found o_errCode = PNOR::LPC_ERR; BOOTLOADER_TRACE(BTLDR_TRC_PA_FINDTOC_TOC1_LPC_ERR); - //@TODO RTC:203989 Add LPC Error/Status Reg as part of FFDC - terminateExecuteTI(); + /*@ + * @errortype + * @moduleid Bootloader::MOD_PNORACC_FINDTOC + * @reasoncode Bootloader::RC_LPC_ERR + * @userdata1[0:15] TI_WITH_SRC + * @userdata1[16:31] TI_BOOTLOADER + * @userdata1[32:63] Failing address = 0 + * @userdata2[0:31] LPC error/status + * @userdata2[32:63] Error code + * @devdesc LPC error detected. + * @custdesc A problem occurred while running processor + * boot code. + */ + bl_terminate(Bootloader::MOD_PNORACC_FINDTOC, + Bootloader::RC_LPC_ERR, + (*l_val), + o_errCode, + true); + break; } //Copy Table of Contents from PNOR flash to a local buffer @@ -293,10 +286,24 @@ void bl_pnorAccess::findTOC(uint64_t i_lpcBar, PNOR::SectionData_t * o_TOC, (g_blData->blToHbData.lpcBAR + LPC::LPCHC_FW_SPACE)) { BOOTLOADER_TRACE_W_BRK(BTLDR_TRC_PA_FINDTOC_READTOC_ERR); - - // TI with data from readTOC - terminateExecuteTI(); - + /*@ + * @errortype + * @moduleid Bootloader::MOD_PNORACC_FINDTOC + * @reasoncode Bootloader::RC_TOC_NOT_FOUND_ERR + * @userdata1[0:15] TI_WITH_SRC + * @userdata1[16:31] TI_BOOTLOADER + * @userdata1[32:63] Failing address = 0 + * @userdata2 MMIO Address + * @devdesc TOC not found + * @custdesc A problem occurred while running processor + * boot code. + */ + bl_terminate(Bootloader::MOD_PNORACC_FINDTOC, + Bootloader::RC_TOC_NOT_FOUND_ERR, + // Extract the l_mmioAddr address among 2 - 32 bits + (l_mmioAddr >> 32), + l_mmioAddr, + true); break; } } diff --git a/src/bootloader/bootloader.C b/src/bootloader/bootloader.C index eb1cb8743..2a2634055 100644 --- a/src/bootloader/bootloader.C +++ b/src/bootloader/bootloader.C @@ -46,7 +46,6 @@ #include <limits.h> #include <securerom/ROM.H> -#include <config.h> #include <secureboot/secure_reasoncodes.H> #include <p9_sbe_hb_structures.H> @@ -555,10 +554,11 @@ namespace Bootloader{ writeScratchReg(MMIO_SCRATCH_HOSTBOOT_ACTIVE, hostboot_string); - //Determine if P9N or P9C and apply URMOR hack + //All variants of P9 need to apply URMOR hack uint64_t l_urmor_hack_required = 0x0; PVR_t l_pvr(getPVR()); - if((l_pvr.chipFamily == PVR_t::P9_ALL)) + if((l_pvr.chipFamily == PVR_t::P9_ALL) + ||((l_pvr.chipFamily == PVR_t::P9_AXONE))) { l_urmor_hack_required = 1; } diff --git a/src/bootloader/makefile b/src/bootloader/makefile index 1ff44222c..6d49d2bc1 100644 --- a/src/bootloader/makefile +++ b/src/bootloader/makefile @@ -5,7 +5,7 @@ # # OpenPOWER HostBoot Project # -# Contributors Listed Below - COPYRIGHT 2015,2017 +# Contributors Listed Below - COPYRIGHT 2015,2019 # [+] International Business Machines Corp. # # @@ -24,6 +24,9 @@ # IBM_PROLOG_END_TAG ROOTPATH = ../.. +# Bootloader omitted from profiling to keep size down +HOSTBOOT_PROFILE= + EXTRAINCDIR += ${ROOTPATH}/src/usr/pnor/ EXTRAINCDIR += ${ROOTPATH}/src/usr/lpc/ EXTRAINCDIR += ${ROOTPATH}/src/include/usr/ |