On Thu, 12 Sep 2019 at 16:20, Philippe Mathieu-Daudé <phi...@redhat.com> wrote: > > Hi Ard, > > On 9/11/19 6:23 PM, Ard Biesheuvel wrote: > > After upgrading the CI system we use for building the ArmVirtPkg > > targets, we started seeing failures due to the NOOPT build running > > out of space when using the CLANG38 toolchain definition combined > > with clang 7. > > > > We really don't want to increase the FD/FV sizes in general to > > accommodate this, so parameterize the relevant quantities and > > increase them by 50% for NOOPT builds. > > > > Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org> > > --- > > v2: implement suggestions by Laszlo on 1) how to parameterize this further, > > and b) to avoid adding another .inc file > > update kernel header field, as pointed out by Philippe > > > > ArmVirtPkg/ArmVirt.dsc.inc | 28 ++++++++++++++++++++ > > ArmVirtPkg/ArmVirtQemu.fdf | 14 +++++++--- > > ArmVirtPkg/ArmVirtQemuKernel.fdf | 19 ++++++++++--- > > ArmVirtPkg/ArmVirtXen.fdf | 14 +++++++--- > > 4 files changed, 66 insertions(+), 9 deletions(-) > > > > diff --git a/ArmVirtPkg/ArmVirt.dsc.inc b/ArmVirtPkg/ArmVirt.dsc.inc > > index a4ae25d982a2..d6b58e5c018b 100644 > > --- a/ArmVirtPkg/ArmVirt.dsc.inc > > +++ b/ArmVirtPkg/ArmVirt.dsc.inc > > @@ -10,6 +10,34 @@ > > [Defines] > > DEFINE DEBUG_PRINT_ERROR_LEVEL = 0x8000004F > > > > + # > > + # Flash size selection. Setting FD_SIZE_IN_KB on the command line > > directly to > > + # one of the supported values, in place of any of the convenience > > macros, is > > + # permitted. > > + # > > +!if $(TARGET) == NOOPT > > + DEFINE FD_SIZE_3MB = TRUE > > +!endif > > + > > +!ifdef $(FD_SIZE_2MB) > > + DEFINE FD_SIZE_IN_KB = 2048 > > +!else > > +!ifdef $(FD_SIZE_3MB) > > + DEFINE FD_SIZE_IN_KB = 3072 > > +!else > > + DEFINE FD_SIZE_IN_KB = 2048 > > +!endif > > +!endif > > + > > +!if $(FD_SIZE_IN_KB) == 2048 > > + DEFINE FD_SIZE = 0x200000 > > + DEFINE FD_NUM_BLOCKS = 0x200 > > +!endif > > +!if $(FD_SIZE_IN_KB) == 3072 > > + DEFINE FD_SIZE = 0x300000 > > + DEFINE FD_NUM_BLOCKS = 0x300 > > +!endif > > + > > > > [BuildOptions.common.EDKII.DXE_CORE,BuildOptions.common.EDKII.DXE_DRIVER,BuildOptions.common.EDKII.UEFI_DRIVER,BuildOptions.common.EDKII.UEFI_APPLICATION] > > GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000 > > > > diff --git a/ArmVirtPkg/ArmVirtQemu.fdf b/ArmVirtPkg/ArmVirtQemu.fdf > > index c2169cb7964b..d3950c8be05e 100644 > > --- a/ArmVirtPkg/ArmVirtQemu.fdf > > +++ b/ArmVirtPkg/ArmVirtQemu.fdf > > @@ -20,14 +20,22 @@ > > # > > > > ################################################################################ > > > > +[Defines] > > +!if $(FD_SIZE_IN_KB) == 2048 > > + DEFINE FVMAIN_COMPACT_SIZE = 0x1ff000 > > +!endif > > +!if $(FD_SIZE_IN_KB) == 3072 > > + DEFINE FVMAIN_COMPACT_SIZE = 0x2ff000 > > +!endif > > + > > [FD.QEMU_EFI] > > BaseAddress = 0x00000000|gArmTokenSpaceGuid.PcdFdBaseAddress # QEMU > > assigns 0 - 0x8000000 for a BootROM > > -Size = 0x00200000|gArmTokenSpaceGuid.PcdFdSize # The size > > in bytes of the FLASH Device > > +Size = $(FD_SIZE)|gArmTokenSpaceGuid.PcdFdSize # The size > > in bytes of the FLASH Device > > ErasePolarity = 1 > > > > # This one is tricky, it must be: BlockSize * NumBlocks = Size > > BlockSize = 0x00001000 > > -NumBlocks = 0x200 > > +NumBlocks = $(FD_NUM_BLOCKS) > > > > > > ################################################################################ > > # > > @@ -59,7 +67,7 @@ DATA = { > > !endif > > } > > > > -0x00001000|0x001ff000 > > +0x00001000|$(FVMAIN_COMPACT_SIZE) > > gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize > > FV = FVMAIN_COMPACT > > > > diff --git a/ArmVirtPkg/ArmVirtQemuKernel.fdf > > b/ArmVirtPkg/ArmVirtQemuKernel.fdf > > index f675b6d65ee1..46ec967e1cc0 100644 > > --- a/ArmVirtPkg/ArmVirtQemuKernel.fdf > > +++ b/ArmVirtPkg/ArmVirtQemuKernel.fdf > > @@ -20,14 +20,22 @@ > > # > > > > ################################################################################ > > > > +[Defines] > > +!if $(FD_SIZE_IN_KB) == 2048 > > + DEFINE FVMAIN_COMPACT_SIZE = 0x1f8000 > > +!endif > > +!if $(FD_SIZE_IN_KB) == 3072 > > + DEFINE FVMAIN_COMPACT_SIZE = 0x2f8000 > > +!endif > > + > > [FD.QEMU_EFI] > > BaseAddress = 0x00000000|gArmTokenSpaceGuid.PcdFdBaseAddress # QEMU > > assigns 0 - 0x8000000 for a BootROM > > -Size = 0x00200000|gArmTokenSpaceGuid.PcdFdSize # The size > > in bytes of the FLASH Device > > +Size = $(FD_SIZE)|gArmTokenSpaceGuid.PcdFdSize # The size > > in bytes of the FLASH Device > > ErasePolarity = 1 > > > > # This one is tricky, it must be: BlockSize * NumBlocks = Size > > BlockSize = 0x00001000 > > -NumBlocks = 0x200 > > +NumBlocks = $(FD_NUM_BLOCKS) > > > > > > ################################################################################ > > # > > @@ -56,7 +64,12 @@ DATA = { > > 0x01, 0x00, 0x00, 0x10, # code0: adr x1, . > > 0xff, 0x1f, 0x00, 0x14, # code1: b 0x8000 > > 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, # text_offset: 512 KB > > +!if $(FD_SIZE_IN_KB) == 2048 > > 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, # image_size: 2 MB > > +!endif > > +!if $(FD_SIZE_IN_KB) == 3072 > > + 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, # image_size: 3 MB > > +!endif > > Ah, I was thinking of some inplace endian swapping >
If you can make it work, patches welcome :-) > > 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # flags > > 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # res2 > > 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # res3 > > @@ -81,7 +94,7 @@ DATA = { > > You forgot Aarch32: > > 0x00, 0x00, 0x20, 0x00, # image size: 2 MB > > 0x01, 0x02, 0x03, 0x04 # endiannness flag > > > > !endif > > } > > > > -0x00008000|0x001f8000 > > +0x00008000|$(FVMAIN_COMPACT_SIZE) > > gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize > > FV = FVMAIN_COMPACT > > > > diff --git a/ArmVirtPkg/ArmVirtXen.fdf b/ArmVirtPkg/ArmVirtXen.fdf > > index 79f681cde028..2bbb64abde6b 100644 > > --- a/ArmVirtPkg/ArmVirtXen.fdf > > +++ b/ArmVirtPkg/ArmVirtXen.fdf > > Same 'image size' changes apply to this file too :( > Thanks for spotting that. > > @@ -20,14 +20,22 @@ > > # > > > > ################################################################################ > > > > +[Defines] > > +!if $(FD_SIZE_IN_KB) == 2048 > > + DEFINE FVMAIN_COMPACT_SIZE = 0x1fe000 > > +!endif > > +!if $(FD_SIZE_IN_KB) == 3072 > > + DEFINE FVMAIN_COMPACT_SIZE = 0x2fe000 > > +!endif > > + > > [FD.XEN_EFI] > > BaseAddress = 0x00000000|gArmTokenSpaceGuid.PcdFdBaseAddress > > -Size = 0x00200000|gArmTokenSpaceGuid.PcdFdSize > > +Size = $(FD_SIZE)|gArmTokenSpaceGuid.PcdFdSize > > ErasePolarity = 1 > > > > # This one is tricky, it must be: BlockSize * NumBlocks = Size > > BlockSize = 0x00001000 > > -NumBlocks = 0x200 > > +NumBlocks = $(FD_NUM_BLOCKS) > > > > > > ################################################################################ > > # > > @@ -81,7 +89,7 @@ DATA = { > > !endif > > } > > > > -0x00002000|0x001fe000 > > +0x00002000|$(FVMAIN_COMPACT_SIZE) > > gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize > > FV = FVMAIN_COMPACT > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#47189): https://edk2.groups.io/g/devel/message/47189 Mute This Topic: https://groups.io/mt/34105412/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-