summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/build/buildpnor/pnorLayoutFSP.xml53
-rwxr-xr-xsrc/build/mkrules/hbfw/img/makefile20
-rw-r--r--src/include/usr/pnor/pnorif.H12
-rw-r--r--src/usr/pnor/pnor_common.C33
-rw-r--r--src/usr/runtime/populate_hbruntime.C12
-rw-r--r--src/usr/util/runtime/utillidmgr_rt.C8
-rw-r--r--src/usr/util/utillidpnor.C11
7 files changed, 78 insertions, 71 deletions
diff --git a/src/build/buildpnor/pnorLayoutFSP.xml b/src/build/buildpnor/pnorLayoutFSP.xml
index 02c551662..26aecb69a 100644
--- a/src/build/buildpnor/pnorLayoutFSP.xml
+++ b/src/build/buildpnor/pnorLayoutFSP.xml
@@ -177,37 +177,9 @@ Layout Description - Used when building an FSP driver
<ecc/>
</section>
<section>
- <description>Payload (21.375MB)</description>
- <eyeCatch>PAYLOAD</eyeCatch>
- <physicalOffset>0x162D000</physicalOffset>
- <physicalRegionSize>0x1560000</physicalRegionSize>
- <side>sideless</side>
- <ecc/>
- </section>
- <section>
- <description>Special PNOR Test Space (36K)</description>
- <eyeCatch>TEST</eyeCatch>
- <physicalOffset>0x2B8D000</physicalOffset>
- <physicalRegionSize>0x9000</physicalRegionSize>
- <testonly/>
- <side>sideless</side>
- <ecc/>
- </section>
- <section>
- <description>Special PNOR Test Space (36K)</description>
- <eyeCatch>TESTRO</eyeCatch>
- <physicalOffset>0x2B96000</physicalOffset>
- <physicalRegionSize>0x9000</physicalRegionSize>
- <side>sideless</side>
- <testonly/>
- <preserved/>
- <readOnly/>
- <ecc/>
- </section>
- <section>
<description>Hostboot Bootloader (28K)</description>
<eyeCatch>HBBL</eyeCatch>
- <physicalOffset>0x2B9F000</physicalOffset>
+ <physicalOffset>0x162D000</physicalOffset>
<!-- Physical Size includes Header rounded to ECC valid size -->
<!-- Max size of actual HBBL content is 20K and 22.5K with ECC -->
<physicalRegionSize>0x7000</physicalRegionSize>
@@ -217,7 +189,7 @@ Layout Description - Used when building an FSP driver
<section>
<description>Global Data (36K)</description>
<eyeCatch>GLOBAL</eyeCatch>
- <physicalOffset>0x2BA6000</physicalOffset>
+ <physicalOffset>0x1634000</physicalOffset>
<physicalRegionSize>0x9000</physicalRegionSize>
<side>sideless</side>
<ecc/>
@@ -225,7 +197,7 @@ Layout Description - Used when building an FSP driver
<section>
<description>Ref Image Ring Overrides (20K)</description>
<eyeCatch>RINGOVD</eyeCatch>
- <physicalOffset>0x2BAF000</physicalOffset>
+ <physicalOffset>0x163D000</physicalOffset>
<physicalRegionSize>0x5000</physicalRegionSize>
<side>sideless</side>
<ecc/>
@@ -233,46 +205,35 @@ Layout Description - Used when building an FSP driver
<section>
<description>SecureBoot Key Transition Partition (16K)</description>
<eyeCatch>SBKT</eyeCatch>
- <physicalOffset>0x2BB4000</physicalOffset>
+ <physicalOffset>0x1642000</physicalOffset>
<physicalRegionSize>0x4000</physicalRegionSize>
<side>sideless</side>
<ecc/>
</section>
-<!--
- @TODO RTC:178164 add OCC support back in
<section>
<description>OCC Lid (1.125M)</description>
<eyeCatch>OCC</eyeCatch>
- <physicalOffset>0x2BB8000</physicalOffset>
+ <physicalOffset>0x1646000</physicalOffset>
<physicalRegionSize>0x120000</physicalRegionSize>
<sha512Version/>
<side>sideless</side>
<ecc/>
</section>
--->
<section>
<description>VFRT data for WOF (12MB)</description>
<!-- We need 266KB per module sort, going to support
10 sorts by default, plus ECC -->
<eyeCatch>WOFDATA</eyeCatch>
- <physicalOffset>0x2BB8000</physicalOffset>
+ <physicalOffset>0x1766000</physicalOffset>
<physicalRegionSize>0xC00000</physicalRegionSize>
<side>sideless</side>
<sha512Version/>
<ecc/>
</section>
<section>
- <description>FIRDATA (12K)</description>
- <eyeCatch>FIRDATA</eyeCatch>
- <physicalOffset>0x37B8000</physicalOffset>
- <physicalRegionSize>0x3000</physicalRegionSize>
- <side>sideless</side>
- <ecc/>
- </section>
- <section>
<description>Memory Data (24K)</description>
<eyeCatch>MEMD</eyeCatch>
- <physicalOffset>0x37BB000</physicalOffset>
+ <physicalOffset>0x2366000</physicalOffset>
<physicalRegionSize>0x6000</physicalRegionSize>
<side>sideless</side>
<sha512Version/>
diff --git a/src/build/mkrules/hbfw/img/makefile b/src/build/mkrules/hbfw/img/makefile
index 776058bef..b8739a42b 100755
--- a/src/build/mkrules/hbfw/img/makefile
+++ b/src/build/mkrules/hbfw/img/makefile
@@ -123,7 +123,11 @@ PNOR_LAYOUT = ${pnorLayoutFSP.xml:P}
# Decide which PNOR to build
.if(${FAKEPNOR} == "")
# Parameters passed into GEN_PNOR_IMAGE_SCRIPT.
- GEN_DEFAULT_BIN_FILES = HBBL=${HBBL_IMG},HBB=${HBB_IMG},HBI=${HBI_IMG},HBRT=${HBRT_IMG},TEST=EMPTY,TESTRO=EMPTY,HBEL=EMPTY,GUARD=EMPTY,GLOBAL=EMPTY,PAYLOAD=EMPTY,CVPD=EMPTY,MVPD=EMPTY,DJVPD=EMPTY,RINGOVD=EMPTY,SBKT=EMPTY,FIRDATA=EMPTY,MEMD=${MEMD_IMG}
+ .if(${DEFAULT_PNOR} == 1)
+ GEN_DEFAULT_BIN_FILES = HBBL=${HBBL_IMG},HBB=${HBB_IMG},HBI=${HBI_IMG},HBRT=${HBRT_IMG},TEST=EMPTY,TESTRO=EMPTY,HBEL=EMPTY,GUARD=EMPTY,GLOBAL=EMPTY,PAYLOAD=EMPTY,CVPD=EMPTY,MVPD=EMPTY,DJVPD=EMPTY,RINGOVD=EMPTY,SBKT=EMPTY,FIRDATA=EMPTY,MEMD=${MEMD_IMG}
+ .else
+ GEN_DEFAULT_BIN_FILES = HBBL=${HBBL_IMG},HBB=${HBB_IMG},HBI=${HBI_IMG},HBRT=${HBRT_IMG},HBEL=EMPTY,GUARD=EMPTY,GLOBAL=EMPTY,CVPD=EMPTY,MVPD=EMPTY,DJVPD=EMPTY,RINGOVD=EMPTY,SBKT=EMPTY,MEMD=${MEMD_IMG}
+ .endif
DEFAULT_PARAMS = --build-all --emit-eccless ${TARGET_TEST:b--test} ${HB_STANDALONE:b--hb-standalone} \
${CONFIG_SECUREBOOT:b--secureboot} --systemBinFiles ${GEN_DEFAULT_BIN_FILES} \
--pnorLayout ${PNOR_LAYOUT} ${KEY_TRANSITION_PARAMS} ${CORRUPT_PARAMS} \
@@ -275,14 +279,12 @@ ZZ_MEMD_FINAL_IMG = ZZ.MEMD.bin
GEN_NIMBUS_BIN_FILES = NIMBUS:SBE=${${NIMBUS_SBE_IMG}:P},HCODE=${${NIMBUS_HCODE_IMG}:P},OCC=${${NIMBUS_OCC_IMG}:P},HBD=${${NIMBUS_HBD_IMG}:P}
GEN_CUMULUS_BIN_FILES = CUMULUS:SBE=${${CUMULUS_SBE_IMG}:P},HCODE=${${CUMULUS_HCODE_IMG}:P},OCC=${${CUMULUS_OCC_IMG}:P},HBD=${${CUMULUS_HBD_IMG}:P}
.else
- # @TODO RTC:178164 add OCC support back in
- GEN_NIMBUS_BIN_FILES = NIMBUS:SBE=${${NIMBUS_SBE_IMG}:P},HCODE=${${NIMBUS_HCODE_IMG}:P},HBD=${${NIMBUS_HBD_IMG}:P}
- GEN_CUMULUS_BIN_FILES = CUMULUS:SBE=${${CUMULUS_SBE_IMG}:P},HCODE=${${CUMULUS_HCODE_IMG}:P},HBD=${${CUMULUS_HBD_IMG}:P}
+ GEN_NIMBUS_BIN_FILES = NIMBUS:SBE=${${NIMBUS_SBE_IMG}:P},HCODE=${${NIMBUS_HCODE_IMG}:P},OCC=${${NIMBUS_OCC_IMG}:P},HBD=${${NIMBUS_HBD_IMG}:P}
+ GEN_CUMULUS_BIN_FILES = CUMULUS:SBE=${${CUMULUS_SBE_IMG}:P},HCODE=${${CUMULUS_HCODE_IMG}:P},OCC=${${CUMULUS_OCC_IMG}:P},HBD=${${CUMULUS_HBD_IMG}:P}
.endif
GEN_ZZ_BIN_FILES = ZZ:WOFDATA=${${ZZ_WOFDATA_IMG}:P},MEMD=${${ZZ_MEMD_IMG}:P}
GEN_ZEPPELIN_BIN_FILES = ZEPPELIN:WOFDATA=${${ZEPPELIN_WOFDATA_IMG}:P}
- #@TODO RTC:163810 - Put SBEC back "--systemBinFile SBEC=${${SBEC_IMG}:P}"
SYSTEM_SPECIFIC_PARAMS = --install-all --emit-eccless ${TARGET_TEST:b--test} ${CONFIG_SECUREBOOT:b--secureboot} \
--pnorLayout ${PNOR_LAYOUT} ${CORRUPT_PARAMS} ${HB_STANDALONE:b--hb-standalone} \
--systemBinFiles ${GEN_NIMBUS_BIN_FILES} \
@@ -318,14 +320,14 @@ gen_system_specific_images_bypass_cache :
gen_system_specific_images: build_sbe_partitions .PMAKE
@${MAKE:T:R} gen_system_specific_images_bypass_cache
-HOSTBOOT_DEFAULT_SECTIONS = HBBL=${HBBL_FINAL_IMG},HBB=${HBB_FINAL_IMG},HBI=${HBI_FINAL_IMG},HBRT=${HBRT_FINAL_IMG},TEST=${TEST_FINAL_IMG},TESTRO=${TESTRO_FINAL_IMG},HBEL=${HBEL_FINAL_IMG},GUARD=${GUARD_FINAL_IMG},GLOBAL=${GLOBAL_FINAL_IMG},PAYLOAD=${PAYLOAD_FINAL_IMG},CVPD=${CVPD_FINAL_IMG},MVPD=${MVPD_FINAL_IMG},DJVPD=${DJVPD_FINAL_IMG},RINGOVD=${RINGOVD_FINAL_IMG},SBKT=${SBKT_FINAL_IMG},FIRDATA=${FIRDATA_FINAL_IMG},MEMD=${MEMD_FINAL_IMG}
.if(${DEFAULT_PNOR} == 1)
+ HOSTBOOT_DEFAULT_SECTIONS = HBBL=${HBBL_FINAL_IMG},HBB=${HBB_FINAL_IMG},HBI=${HBI_FINAL_IMG},HBRT=${HBRT_FINAL_IMG},TEST=${TEST_FINAL_IMG},TESTRO=${TESTRO_FINAL_IMG},HBEL=${HBEL_FINAL_IMG},GUARD=${GUARD_FINAL_IMG},GLOBAL=${GLOBAL_FINAL_IMG},PAYLOAD=${PAYLOAD_FINAL_IMG},CVPD=${CVPD_FINAL_IMG},MVPD=${MVPD_FINAL_IMG},DJVPD=${DJVPD_FINAL_IMG},RINGOVD=${RINGOVD_FINAL_IMG},SBKT=${SBKT_FINAL_IMG},FIRDATA=${FIRDATA_FINAL_IMG},MEMD=${MEMD_FINAL_IMG}
NIMBUS_SECT = HBD=${NIMBUS_HBD_FINAL_IMG},SBE=${NIMBUS_SBE_FINAL_IMG},HCODE=${NIMBUS_HCODE_FINAL_IMG},OCC=${NIMBUS_OCC_FINAL_IMG},WOFDATA=${ZZ_WOFDATA_FINAL_IMG}
CUMULUS_SECT = HBD=${CUMULUS_HBD_FINAL_IMG},SBE=${CUMULUS_SBE_FINAL_IMG},HCODE=${CUMULUS_HCODE_FINAL_IMG},OCC=${CUMULUS_OCC_FINAL_IMG},WOFDATA=${ZEPPELIN_WOFDATA_FINAL_IMG}
.else
- # @TODO RTC:178164 add OCC support back in
- NIMBUS_SECT = HBD=${NIMBUS_HBD_FINAL_IMG},SBE=${NIMBUS_SBE_FINAL_IMG},HCODE=${NIMBUS_HCODE_FINAL_IMG},WOFDATA=${ZZ_WOFDATA_FINAL_IMG}
- CUMULUS_SECT = HBD=${CUMULUS_HBD_FINAL_IMG},SBE=${CUMULUS_SBE_FINAL_IMG},HCODE=${CUMULUS_HCODE_FINAL_IMG},WOFDATA=${ZEPPELIN_WOFDATA_FINAL_IMG}
+ HOSTBOOT_DEFAULT_SECTIONS = HBBL=${HBBL_FINAL_IMG},HBB=${HBB_FINAL_IMG},HBI=${HBI_FINAL_IMG},HBRT=${HBRT_FINAL_IMG},HBEL=${HBEL_FINAL_IMG},GUARD=${GUARD_FINAL_IMG},GLOBAL=${GLOBAL_FINAL_IMG},CVPD=${CVPD_FINAL_IMG},MVPD=${MVPD_FINAL_IMG},DJVPD=${DJVPD_FINAL_IMG},RINGOVD=${RINGOVD_FINAL_IMG},SBKT=${SBKT_FINAL_IMG},MEMD=${MEMD_FINAL_IMG}
+ NIMBUS_SECT = HBD=${NIMBUS_HBD_FINAL_IMG},SBE=${NIMBUS_SBE_FINAL_IMG},HCODE=${NIMBUS_HCODE_FINAL_IMG},OCC=${NIMBUS_OCC_FINAL_IMG},WOFDATA=${ZZ_WOFDATA_FINAL_IMG}
+ CUMULUS_SECT = HBD=${CUMULUS_HBD_FINAL_IMG},SBE=${CUMULUS_SBE_FINAL_IMG},HCODE=${CUMULUS_HCODE_FINAL_IMG},OCC=${CUMULUS_OCC_FINAL_IMG},WOFDATA=${ZEPPELIN_WOFDATA_FINAL_IMG}
.endif
PNOR_IMG_INFO = \
nimbus.pnor:${PNOR_LAYOUT}:${NIMBUS_SECT},${HOSTBOOT_DEFAULT_SECTIONS} \
diff --git a/src/include/usr/pnor/pnorif.H b/src/include/usr/pnor/pnorif.H
index b6f616b92..5dd4a68e8 100644
--- a/src/include/usr/pnor/pnorif.H
+++ b/src/include/usr/pnor/pnorif.H
@@ -263,6 +263,18 @@ errlHndl_t readHeaderMagic(
size_t i_size,
void* o_pData);
+// @TODO CQ:SW400352 remove function
+/**
+ * @brief Determine if a PNOR section is empty by checking if first PAGE
+ * is all 0xFF's or 0x00's depending on ECC or not.
+ *
+ * @param[in] i_secId ID of requested section
+ *
+ * @return bool - True if the section is empty (all 0xFF's or 0x00's)
+ * False otherwise.
+ */
+bool isSectionEmpty(const PNOR::SectionId i_section);
+
} // PNOR
#endif
diff --git a/src/usr/pnor/pnor_common.C b/src/usr/pnor/pnor_common.C
index 20d6bd760..3b0195756 100644
--- a/src/usr/pnor/pnor_common.C
+++ b/src/usr/pnor/pnor_common.C
@@ -533,3 +533,36 @@ errlHndl_t PNOR::hasKnownHeader(
return pError;
}
+// @TODO CQ:SW400352 remove function
+bool PNOR::isSectionEmpty(const PNOR::SectionId i_section)
+{
+ errlHndl_t l_errhdl = nullptr;
+ bool l_result = true;
+
+ PNOR::SectionInfo_t l_sectionInfo;
+ l_errhdl = PNOR::getSectionInfo( i_section, l_sectionInfo );
+ if (l_errhdl)
+ {
+ // If section is not in PNOR, just delete error and return false
+ delete l_errhdl;
+ l_errhdl = nullptr;
+ }
+ else
+ {
+ std::array<uint8_t,PAGESIZE> empty_buffer{};
+ // Empty ECC sections are filled with 0xFF's to ensure good ECC
+ if (l_sectionInfo.eccProtected)
+ {
+ empty_buffer.fill(0xFF);
+ }
+
+ l_result = memcmp(&empty_buffer,
+ reinterpret_cast<uint8_t*>(l_sectionInfo.vaddr),
+ sizeof(empty_buffer)) ==0;
+ }
+
+ TRACFCOMP(g_trac_pnor, "PNOR::isSectionEmpty: i_section=%s isSectionEmpty=%d",
+ PNOR::SectionIdToString(i_section), l_result);
+
+ return l_result;
+}
diff --git a/src/usr/runtime/populate_hbruntime.C b/src/usr/runtime/populate_hbruntime.C
index 450ff22fd..b4af2f3d6 100644
--- a/src/usr/runtime/populate_hbruntime.C
+++ b/src/usr/runtime/populate_hbruntime.C
@@ -1169,15 +1169,11 @@ errlHndl_t populate_HbRsvMem(uint64_t i_nodeId)
// -- HCODE
// -- Non-verified Images
/// -- RINGOVD
- // @TODO RTC:178164 add OCC PNOR support for fsp back
- if (!INITSERVICE::spBaseServicesEnabled())
+ l_elog = hbResvLoadSecureSection(PNOR::OCC, i_nodeId,
+ l_prevDataAddr, l_prevDataSize);
+ if (l_elog)
{
- l_elog = hbResvLoadSecureSection(PNOR::OCC, i_nodeId,
- l_prevDataAddr, l_prevDataSize);
- if (l_elog)
- {
- break;
- }
+ break;
}
l_elog = hbResvLoadSecureSection(PNOR::WOFDATA, i_nodeId,
l_prevDataAddr, l_prevDataSize);
diff --git a/src/usr/util/runtime/utillidmgr_rt.C b/src/usr/util/runtime/utillidmgr_rt.C
index 2fe72d655..cbaaac3fa 100644
--- a/src/usr/util/runtime/utillidmgr_rt.C
+++ b/src/usr/util/runtime/utillidmgr_rt.C
@@ -327,14 +327,6 @@ const uint32_t * UtilLidMgr::getLidList(size_t * o_num)
bool UtilLidMgr::lidInHbResvMem(const uint32_t i_lidId) const
{
- // @TODO RTC:178164 Remove this and add OCC PNOR support for fsp back
- // hostboot could not verify it from pnor, so it is not in hb resv meomory
- if (iv_spBaseServicesEnabled &&
- (i_lidId == Util::OCC_LIDID || i_lidId == Util::OCC_CONTAINER_LIDID))
- {
- return false;
- }
-
return i_lidId == Util::OCC_LIDID ||
i_lidId == Util::OCC_CONTAINER_LIDID ||
i_lidId == Util::WOF_LIDID ||
diff --git a/src/usr/util/utillidpnor.C b/src/usr/util/utillidpnor.C
index 1545ffc57..48381e0d7 100644
--- a/src/usr/util/utillidpnor.C
+++ b/src/usr/util/utillidpnor.C
@@ -106,6 +106,7 @@ bool UtilLidMgr::getLidPnorSectionInfo(uint32_t i_lidId,
// Search if a lid id maps to pnor section
auto l_secId = Util::getLidPnorSection(static_cast<Util::LidId>(i_lidId));
+ do {
// LidToPnor will return INVALID_SECITON if no mapping found
if (l_secId == PNOR::INVALID_SECTION)
{
@@ -156,7 +157,17 @@ bool UtilLidMgr::getLidPnorSectionInfo(uint32_t i_lidId,
}
#endif
#endif
+ // @TODO CQ:SW400352 remove this check
+ if ((l_secId == PNOR::OCC) && PNOR::isSectionEmpty(l_secId))
+ {
+ UTIL_FT("UtilLidMgr::getLidPnorSection PNOR section %s is empty get data from LID transfer",
+ PNOR::SectionIdToString(l_secId));
+ l_lidInPnor = false;
+ break;
+ }
}
}
+ } while(0);
+
return l_lidInPnor;
} \ No newline at end of file
OpenPOWER on IntegriCloud