summaryrefslogtreecommitdiffstats
path: root/src/bootloader
diff options
context:
space:
mode:
Diffstat (limited to 'src/bootloader')
-rw-r--r--src/bootloader/bl_pnorAccess.C71
-rw-r--r--src/bootloader/bootloader.C6
-rw-r--r--src/bootloader/makefile5
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/
OpenPOWER on IntegriCloud