diff options
author | Adam Muhle <armuhle@us.ibm.com> | 2012-06-29 15:03:24 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2012-07-09 12:25:40 -0500 |
commit | 552815060119a4612ed82c67d31fb38ecee2ccaf (patch) | |
tree | e7958cb78de15c5c0cf54ccb21f3b752e75123a7 /src | |
parent | a87cb9ce7a0322f9fd6c6e015894f12a2975e10f (diff) | |
download | blackbird-hostboot-552815060119a4612ed82c67d31fb38ecee2ccaf.tar.gz blackbird-hostboot-552815060119a4612ed82c67d31fb38ecee2ccaf.zip |
Unique PNOR Layout for VPO images
-Unique PNOR layout for VPO to fit within fake-pnor
-Larger image for simics configs which includes the base img.
Change-Id: I884a99da51845c2f17fcb48be4afa7d272d0ffd5
RTC: 44290
Depends-on: I7294999d3619692aaab424dca1ae608a0a84fa81
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/1281
Tested-by: Jenkins Server
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/build/buildpnor/makefile | 36 | ||||
-rw-r--r-- | src/build/buildpnor/pnorLayout.xml | 40 | ||||
-rw-r--r-- | src/build/buildpnor/pnorLayoutVpo.xml | 76 | ||||
-rw-r--r-- | src/include/usr/pnor/pnorif.H | 4 | ||||
-rw-r--r-- | src/usr/pnor/pnorrp.C | 13 | ||||
-rw-r--r-- | src/usr/pnor/test/pnorrptest.H | 26 |
6 files changed, 162 insertions, 33 deletions
diff --git a/src/build/buildpnor/makefile b/src/build/buildpnor/makefile index 04c4bf33c..2696a417a 100644 --- a/src/build/buildpnor/makefile +++ b/src/build/buildpnor/makefile @@ -31,7 +31,8 @@ ROOTPATH = ../../.. .DEFAULT_GOAL := buildpnor -PNOR_TARGETS = simics_MURANO simics_VENICE vbu TULETA +PNOR_TARGETS = simics_MURANO simics_VENICE TULETA +PNOR_VBU_TARGETS = vbu define PNOR_template $${IMGDIR}/$(1).pnor: $${IMGDIR}/hbicore_extended.bin $${IMGDIR}/$(1)_targeting.bin @@ -40,7 +41,8 @@ $${IMGDIR}/$(1).pnor: $${IMGDIR}/hbicore_extended.bin $${IMGDIR}/$(1)_targeting. --pnorOutBin $${IMGDIR}/$(1).pnor \ --binFile_part $${IMGDIR}/$(1)_pnor.toc \ --binFile_HBI $${IMGDIR}/hbicore_extended.bin \ - --binFile_HBD $${IMGDIR}/$(1)_targeting.bin + --binFile_HBD $${IMGDIR}/$(1)_targeting.bin \ + --binFile_HBB $${IMGDIR}/hbicore.bin endef define PNOR_test_template $${IMGDIR}/$(1)_test.pnor: $${IMGDIR}/hbicore_extended.bin $${IMGDIR}/$(1)_targeting.bin @@ -49,17 +51,45 @@ $${IMGDIR}/$(1)_test.pnor: $${IMGDIR}/hbicore_extended.bin $${IMGDIR}/$(1)_targe --pnorOutBin $${IMGDIR}/$(1)_test.pnor \ --binFile_part $${IMGDIR}/$(1)_pnor.toc \ --binFile_HBI $${IMGDIR}/hbicore_test_extended.bin \ + --binFile_HBD $${IMGDIR}/$(1)_targeting.bin \ + --binFile_HBB $${IMGDIR}/hbicore_test.bin +endef + +define PNOR_vbu_template +$${IMGDIR}/$(1).pnor: $${IMGDIR}/hbicore_extended.bin $${IMGDIR}/$(1)_targeting.bin + ./buildpnor.pl --pnorLayout ./pnorLayoutVpo.xml \ + --genToc \ + --pnorOutBin $${IMGDIR}/$(1).pnor \ + --binFile_part $${IMGDIR}/$(1)_pnor.toc \ + --binFile_HBI $${IMGDIR}/hbicore_extended.bin \ + --binFile_HBD $${IMGDIR}/$(1)_targeting.bin +endef +define PNOR_vbu_test_template +$${IMGDIR}/$(1)_test.pnor: $${IMGDIR}/hbicore_extended.bin $${IMGDIR}/$(1)_targeting.bin + ./buildpnor.pl --pnorLayout ./pnorLayoutVpo.xml \ + --genToc \ + --pnorOutBin $${IMGDIR}/$(1)_test.pnor \ + --binFile_part $${IMGDIR}/$(1)_pnor.toc \ + --binFile_HBI $${IMGDIR}/hbicore_test_extended.bin \ --binFile_HBD $${IMGDIR}/$(1)_targeting.bin endef PNOR_IMAGES = $(addsuffix .pnor, $(addprefix $(IMGDIR)/, ${PNOR_TARGETS})) \ $(addsuffix _test.pnor, $(addprefix $(IMGDIR)/, ${PNOR_TARGETS})) -EXTRA_CLEAN = ${PNOR_IMAGES} ${PNOR_IMAGES:.pnor=_pnor.toc} +PNOR_VBU_IMAGES = $(addsuffix .pnor, $(addprefix $(IMGDIR)/, ${PNOR_VBU_TARGETS})) \ + $(addsuffix .pnor, $(addprefix $(IMGDIR)/, ${PNOR_VBU_TARGETS})) \ + +EXTRA_CLEAN = ${PNOR_IMAGES} ${PNOR_IMAGES:.pnor=_pnor.toc} ${PNOR_VBU_IMAGES} ${PNOR_VBU_IMAGES:.pnor=_pnor.toc} include ${ROOTPATH}/config.mk buildpnor: ${PNOR_IMAGES} +#Standard Images $(foreach pnor,$(PNOR_TARGETS),$(eval $(call PNOR_template,$(pnor)))) $(foreach pnor,$(PNOR_TARGETS),$(eval $(call PNOR_test_template,$(pnor)))) + +#VBU Specific images +$(foreach pnor,$(PNOR_VBU_TARGETS),$(eval $(call PNOR_vbu_template,$(pnor)))) +$(foreach pnor,$(PNOR_VBU_TARGETS),$(eval $(call PNOR_vbu_test_template,$(pnor)))) diff --git a/src/build/buildpnor/pnorLayout.xml b/src/build/buildpnor/pnorLayout.xml index d6adc9289..6fba782b4 100644 --- a/src/build/buildpnor/pnorLayout.xml +++ b/src/build/buildpnor/pnorLayout.xml @@ -22,12 +22,12 @@ IBM_PROLOG_END_TAG --> <pnor> <metadata> - <imageSize>0x400000</imageSize> + <imageSize>0x800000</imageSize> <blockSize>0x1000</blockSize> <partTableSize>0x1</partTableSize> </metadata> <section> - <description>Table of Contents (2K)</description> + <description>Table of Contents (4K)</description> <eyeCatch>part</eyeCatch> <physicalOffset>0</physicalOffset> <physicalRegionSize>0x1000</physicalRegionSize> @@ -36,25 +36,16 @@ <sideless>no</sideless> </section> <section> - <description>Hostboot Extended image (2MB)</description> + <description>Hostboot Extended image (2.5MB)</description> <eyeCatch>HBI</eyeCatch> <physicalOffset>0x1000</physicalOffset> - <physicalRegionSize>0x200000</physicalRegionSize> + <physicalRegionSize>0x280000</physicalRegionSize> <ecc>no</ecc> <source>File</source> <sideless>no</sideless> </section> <section> - <description>Attribute Data (512K)</description> - <eyeCatch>HBD</eyeCatch> - <physicalOffset>0x201000</physicalOffset> - <physicalRegionSize>0x80000</physicalRegionSize> - <ecc>no</ecc> - <source>File</source> - <sideless>no</sideless> - </section> - <section> - <description>Module VPD</description> + <description>Module VPD (512K)</description> <eyeCatch>MVPD</eyeCatch> <physicalOffset>0x281000</physicalOffset> <physicalRegionSize>0x80000</physicalRegionSize> @@ -64,7 +55,7 @@ <sideless>yes</sideless> </section> <section> - <description>DIMM JEDEC</description> + <description>DIMM JEDEC (256K)</description> <eyeCatch>DJVPD</eyeCatch> <physicalOffset>0x301000</physicalOffset> <physicalRegionSize>0x40000</physicalRegionSize> @@ -73,4 +64,23 @@ <source>Blank</source> <sideless>yes</sideless> </section> + <section> + <description>Hostboot Data (512K)</description> + <eyeCatch>HBD</eyeCatch> + <physicalOffset>0x341000</physicalOffset> + <physicalRegionSize>0x80000</physicalRegionSize> + <ecc>no</ecc> + <source>File</source> + <sideless>no</sideless> + </section> + <section> + <description>Hostboot Base (512K)</description> + <eyeCatch>HBB</eyeCatch> + <physicalOffset>0x3C1000</physicalOffset> + <physicalRegionSize>0x80000</physicalRegionSize> + <actualRegionSize>0x80000</actualRegionSize> + <ecc>no</ecc> + <source>File</source> + <sideless>no</sideless> + </section> </pnor> diff --git a/src/build/buildpnor/pnorLayoutVpo.xml b/src/build/buildpnor/pnorLayoutVpo.xml new file mode 100644 index 000000000..d6adc9289 --- /dev/null +++ b/src/build/buildpnor/pnorLayoutVpo.xml @@ -0,0 +1,76 @@ +<!-- IBM_PROLOG_BEGIN_TAG + This is an automatically generated prolog. + + $Source: src/build/buildpnor/pnorLayout.xml $ + + IBM CONFIDENTIAL + + COPYRIGHT International Business Machines Corp. 2012 + + p1 + + Object Code Only (OCO) source materials + Licensed Internal Code Source Materials + IBM HostBoot Licensed Internal Code + + The source code for this program is not published or other- + wise divested of its trade secrets, irrespective of what has + been deposited with the U.S. Copyright Office. + + Origin: 30 + + IBM_PROLOG_END_TAG --> +<pnor> + <metadata> + <imageSize>0x400000</imageSize> + <blockSize>0x1000</blockSize> + <partTableSize>0x1</partTableSize> + </metadata> + <section> + <description>Table of Contents (2K)</description> + <eyeCatch>part</eyeCatch> + <physicalOffset>0</physicalOffset> + <physicalRegionSize>0x1000</physicalRegionSize> + <ecc>no</ecc> + <source>Generate</source> + <sideless>no</sideless> + </section> + <section> + <description>Hostboot Extended image (2MB)</description> + <eyeCatch>HBI</eyeCatch> + <physicalOffset>0x1000</physicalOffset> + <physicalRegionSize>0x200000</physicalRegionSize> + <ecc>no</ecc> + <source>File</source> + <sideless>no</sideless> + </section> + <section> + <description>Attribute Data (512K)</description> + <eyeCatch>HBD</eyeCatch> + <physicalOffset>0x201000</physicalOffset> + <physicalRegionSize>0x80000</physicalRegionSize> + <ecc>no</ecc> + <source>File</source> + <sideless>no</sideless> + </section> + <section> + <description>Module VPD</description> + <eyeCatch>MVPD</eyeCatch> + <physicalOffset>0x281000</physicalOffset> + <physicalRegionSize>0x80000</physicalRegionSize> + <actualRegionSize>0x80000</actualRegionSize> + <ecc>no</ecc> + <source>Blank</source> + <sideless>yes</sideless> + </section> + <section> + <description>DIMM JEDEC</description> + <eyeCatch>DJVPD</eyeCatch> + <physicalOffset>0x301000</physicalOffset> + <physicalRegionSize>0x40000</physicalRegionSize> + <actualRegionSize>0x40000</actualRegionSize> + <ecc>no</ecc> + <source>Blank</source> + <sideless>yes</sideless> + </section> +</pnor> diff --git a/src/include/usr/pnor/pnorif.H b/src/include/usr/pnor/pnorif.H index c3440c1a5..0c47210fb 100644 --- a/src/include/usr/pnor/pnorif.H +++ b/src/include/usr/pnor/pnorif.H @@ -41,18 +41,18 @@ enum SectionId HB_DATA, /**< Hostboot Data */ DIMM_JEDEC_VPD, /**< DIMM JEDEC VPD */ MODULE_VPD, /**< Module VPD */ + HB_BASE_CODE, /**< Hostboot Base Image */ NUM_SECTIONS, /**< Number of defined sections */ //Not currently used // GLOBAL_DATA, /**< Global Data */ // SBE_IPL, /**< Self-Boot Engine IPL image */ -// HB_BASE_CODE, /**< Hostboot Base Image */ // PAYLOAD, /**< HAL/OPAL */ // HB_RUNTIME, /**< Hostboot Runtime Image */ // HB_ERRLOGS, /**< Hostboot Error log Repository */ FIRST_SECTION = TOC, /**< First section (for looping) */ - LAST_SECTION = MODULE_VPD, /**< Last section (for looping) */ + LAST_SECTION = HB_BASE_CODE, /**< Last section (for looping) */ INVALID_SECTION = NUM_SECTIONS, /**< Used for error cases, initialization */ }; diff --git a/src/usr/pnor/pnorrp.C b/src/usr/pnor/pnorrp.C index e24c54f44..4d3c74648 100644 --- a/src/usr/pnor/pnorrp.C +++ b/src/usr/pnor/pnorrp.C @@ -53,11 +53,11 @@ const char* cv_EYECATCHER[] = { //@todo - convert there to uint64_t "HBD", /**< PNOR::HB_DATA : Hostboot Data */ "DJVPD", /**< PNOR::DIMM_JEDEC_VPD: Dimm JEDEC VPD */ "MVPD", /**< PNOR::MODULE_VPD : Module VPD */ + "HBB", /**< PNOR::HB_BASE_CODE : Hostboot Base Image */ //Not currently used // "GLOBAL", /**< PNOR::GLOBAL_DATA : Global Data */ // "SBE", /**< PNOR::SBE_IPL : Self-Boot Enginer IPL image */ -// "HBB", /**< PNOR::HB_BASE_CODE : Hostboot Base Image */ // "XXX", /**< PNOR::HB_ERRLOGS : Hostboot Error log Repository */ // "HBR", /**< PNOR::HB_RUNTIME : Hostboot Runtime Image */ // "PART", /**< PNOR::KVM_PART_INFO : KVM Partition Information */ @@ -483,11 +483,12 @@ errlHndl_t PnorRP::readTOC() } //keep these traces here until PNOR is rock-solid - TRACFCOMP(g_trac_pnor, "TOC: size=0x%.8X flash=0x%.8X virt=0x%.16X", iv_TOC[PNOR::SIDE_A][PNOR::TOC].size, iv_TOC[PNOR::SIDE_A][PNOR::TOC].flashAddr, iv_TOC[PNOR::SIDE_A][PNOR::TOC].virtAddr ); - TRACFCOMP(g_trac_pnor, "EXT: size=0x%.8X flash=0x%.8X virt=0x%.16X", iv_TOC[PNOR::SIDE_A][PNOR::HB_EXT_CODE].size, iv_TOC[PNOR::SIDE_A][PNOR::HB_EXT_CODE].flashAddr, iv_TOC[PNOR::SIDE_A][PNOR::HB_EXT_CODE].virtAddr ); - TRACFCOMP(g_trac_pnor, "DATA: size=0x%.8X flash=0x%.8X virt=0x%.16X", iv_TOC[PNOR::SIDE_A][PNOR::HB_DATA].size, iv_TOC[PNOR::SIDE_A][PNOR::HB_DATA].flashAddr, iv_TOC[PNOR::SIDE_A][PNOR::HB_DATA].virtAddr ); - TRACFCOMP(g_trac_pnor, "MVPD: size=0x%.8X flash=0x%.8X virt=0x%.16X", iv_TOC[PNOR::SIDE_A][PNOR::MODULE_VPD].size, iv_TOC[PNOR::SIDE_A][PNOR::MODULE_VPD].flashAddr, iv_TOC[PNOR::SIDE_A][PNOR::MODULE_VPD].virtAddr ); - TRACFCOMP(g_trac_pnor, "DJVPD: size=0x%.8X flash=0x%.8X virt=0x%.16X", iv_TOC[PNOR::SIDE_A][PNOR::DIMM_JEDEC_VPD].size, iv_TOC[PNOR::SIDE_A][PNOR::DIMM_JEDEC_VPD].flashAddr, iv_TOC[PNOR::SIDE_A][PNOR::DIMM_JEDEC_VPD].virtAddr ); + for(PNOR::SectionId tmpId = PNOR::FIRST_SECTION; + tmpId < PNOR::NUM_SECTIONS; + tmpId = (PNOR::SectionId) (tmpId + 1) ) + { + TRACFCOMP(g_trac_pnor, "%s: size=0x%.8X flash=0x%.8X virt=0x%.16X", cv_EYECATCHER[tmpId], iv_TOC[PNOR::SIDE_A][tmpId].size, iv_TOC[PNOR::SIDE_A][tmpId].flashAddr, iv_TOC[PNOR::SIDE_A][tmpId].virtAddr ); + } }while(0); diff --git a/src/usr/pnor/test/pnorrptest.H b/src/usr/pnor/test/pnorrptest.H index f1791f8ba..00f7bc2eb 100644 --- a/src/usr/pnor/test/pnorrptest.H +++ b/src/usr/pnor/test/pnorrptest.H @@ -58,15 +58,25 @@ class PnorRpTest : public CxxTest::TestSuite PNOR::SectionInfo_t info; errlHndl_t errhdl = NULL; - for( PNOR::SectionId id = PNOR::FIRST_SECTION; - id < PNOR::NUM_SECTIONS; - id = (PNOR::SectionId) (id + 1) ) + //Only check required sections. Some are currently optional due to + //Storage limitations in VPO. + const PNOR::SectionId testSections[] = { + PNOR::TOC, /**< Table of Contents */ + PNOR::HB_EXT_CODE, /**< Hostboot Extended Image */ + PNOR::HB_DATA, /**< Hostboot Data */ + PNOR::DIMM_JEDEC_VPD, /**< DIMM JEDEC VPD */ + PNOR::MODULE_VPD, /**< Module VPD */ + }; + uint64_t numSections = 5; + + for( uint64_t idx = 0; idx < numSections; idx++) { total++; - errhdl = PNOR::getSectionInfo( id, PNOR::CURRENT_SIDE, info ); + errhdl = PNOR::getSectionInfo( testSections[idx], PNOR::CURRENT_SIDE, info ); if( errhdl ) { - TRACFCOMP(g_trac_pnor, "PnorRpTest::test_sectionInfo> ERROR : getSectionInfo returned error for %d : RC=%X", id, errhdl->reasonCode() ); + TRACFCOMP(g_trac_pnor, "PnorRpTest::test_sectionInfo> ERROR : getSectionInfo returned error for %d : RC=%X", + testSections[idx], errhdl->reasonCode() ); TS_FAIL( "PnorRpTest::test_getSectionInfo> ERROR : Unexpected error log" ); fails++; errlCommit(errhdl,PNOR_COMP_ID); @@ -76,7 +86,8 @@ class PnorRpTest : public CxxTest::TestSuite total++; if( info.size == 0 ) { - TRACFCOMP(g_trac_pnor, "PnorRpTest::test_sectionInfo> ERROR : zero size for section %d : id=%d, actual=%d", id, info.id, info.size ); + TRACFCOMP(g_trac_pnor, "PnorRpTest::test_sectionInfo> ERROR : zero size for section %d : id=%d, actual=%d", + testSections[idx], info.id, info.size ); TS_FAIL( "PnorRpTest::test_getSectionInfo> ERROR : Zero Size" ); fails++; } @@ -85,7 +96,8 @@ class PnorRpTest : public CxxTest::TestSuite total++; if( info.vaddr < PnorRP::BASE_VADDR ) { - TRACFCOMP(g_trac_pnor, "PnorRpTest::test_sectionInfo> ERROR : Virtual Addr section %d Not in appropriate range: id=%d, actual=%d", id, info.id, info.vaddr ); + TRACFCOMP(g_trac_pnor, "PnorRpTest::test_sectionInfo> ERROR : Virtual Addr section %d Not in appropriate range: id=%d, actual=%d", + testSections[idx], info.id, info.vaddr ); TS_FAIL( "PnorRpTest::test_getSectionInfo> ERROR : Invalid vaddr" ); fails++; } |