From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=pass header.i=@linaro.org header.s=google header.b=Mcgri8p7; spf=pass (domain: linaro.org, ip: 209.85.221.65, mailfrom: ard.biesheuvel@linaro.org) Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by groups.io with SMTP; Fri, 13 Sep 2019 06:51:28 -0700 Received: by mail-wr1-f65.google.com with SMTP id l16so32083939wrv.12 for ; Fri, 13 Sep 2019 06:51:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=jd00YFF2iJC6IqsefeoyNhyUFJuK+AEOspaky0Eut10=; b=Mcgri8p7Pvce/MWGJWagGhNxyBXLWIJA1/Zr0/vUyAkGIA3pXq89nsKYItT5m3O/Zs faMCc6xUJfcM3pOpqU+mxCG6qN5WN6fkJdhmoou8NKo4b7b7R+pVW6bVCY6bQaesjYtt Dzq1VrzIWOLy+WhZxTcfdg3DHWkPB0jHaOu7ohI8SDzrL50XO/7v30iJGftO72mdpThZ +DZVi5qPpsZjVjreeUfRyjwkmJhSRYDj0X99EqdtE71TXbUnpCTZB+zCVBLXQY0GDGNT zbBpTgfIpFBmbSNqNI3u2ZSY1nhaLMi/lUtWdMPNjn46KLUM+7449UHT6uU8/nIKiaas YfQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=jd00YFF2iJC6IqsefeoyNhyUFJuK+AEOspaky0Eut10=; b=VIAeppGDOT1yJSjyLleMZ1eQp+99zEWOduMqMMjsf5iG7H14+XJHKp/TDXH12xiIxt sYvr75U4OAezCF6DWGs3fotru6kA0DygPAu63E0MLFN91oBQ37qb7m32+Ovl5dUYDshP KMX3t3IQathGrD9NVEXi2ImuC4/RTjm2POu3lDdbsLpkGL9ILP/MbhgHbSwAXDPUhR7C sjMAfDVjm6H/mUo5OfiEd5qbiI1XB/e6OPD8dZFYHC1cX1kRqX4G63eV0L7nQYmA/f1u bSK+VejmP+LBBnxzrhgUECFqFR637fWyssy1PpZDZxoyzBK0PFAqEzTMbC5Ce1OudsWH 4Qhw== X-Gm-Message-State: APjAAAV5QrokTKWyQSOEBtXMGpnNJ/6ZQ3xL7kWSgt0zCMZXGkEgnGfa Tc9olh5oIUiO8uJwMOWEWxgcCDNYqRntg7O+/OMGUA== X-Google-Smtp-Source: APXvYqyCrJplkZCBUl011GoA3lQicBrv1oiDIMSEtlQtHhwTbVMX5d3l19+ERXEE6FfjbWCw7K4G22xsXC2Vqo82CsY= X-Received: by 2002:a05:6000:82:: with SMTP id m2mr140279wrx.241.1568382686901; Fri, 13 Sep 2019 06:51:26 -0700 (PDT) MIME-Version: 1.0 References: <20190912165849.20868-1-ard.biesheuvel@linaro.org> <9ae404f4-9d2d-6924-fcc4-d6d6f8c24d39@redhat.com> In-Reply-To: <9ae404f4-9d2d-6924-fcc4-d6d6f8c24d39@redhat.com> From: "Ard Biesheuvel" Date: Fri, 13 Sep 2019 14:51:04 +0100 Message-ID: Subject: Re: [PATCH v3] ArmVirtPkg: increase FD/FV size for NOOPT builds To: Laszlo Ersek Cc: edk2-devel-groups-io , Leif Lindholm , =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= Content-Type: text/plain; charset="UTF-8" On Fri, 13 Sep 2019 at 13:44, Laszlo Ersek wrote: > > On 09/12/19 18:58, 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 > > --- > > v3: - don't rely on fragile ordering of DEFINEs for the target dependent > > default value, but instead, use a single FD_SIZE_IN_MB macro whose > > default is DEFINEd either to 2 or 3 depend on the build target. That > > permits switching back to 2 MB for NOOPT builds if desired while > > changing the default to 3 MB > > - fix a few image header definitions that I missed for ARM32 + Xen > > > > 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 | 15 ++++++++++++ > > ArmVirtPkg/ArmVirtQemu.fdf | 14 +++++++++--- > > ArmVirtPkg/ArmVirtQemuKernel.fdf | 24 +++++++++++++++++--- > > ArmVirtPkg/ArmVirtXen.fdf | 24 +++++++++++++++++--- > > 4 files changed, 68 insertions(+), 9 deletions(-) > > > > diff --git a/ArmVirtPkg/ArmVirt.dsc.inc b/ArmVirtPkg/ArmVirt.dsc.inc > > index a4ae25d982a2..10037c938eb8 100644 > > --- a/ArmVirtPkg/ArmVirt.dsc.inc > > +++ b/ArmVirtPkg/ArmVirt.dsc.inc > > @@ -10,6 +10,21 @@ > > [Defines] > > DEFINE DEBUG_PRINT_ERROR_LEVEL = 0x8000004F > > > > +!if $(TARGET) != NOOPT > > + DEFINE FD_SIZE_IN_MB = 2 > > +!else > > + DEFINE FD_SIZE_IN_MB = 3 > > +!endif > > + > > +!if $(FD_SIZE_IN_MB) == 2 > > + DEFINE FD_SIZE = 0x200000 > > + DEFINE FD_NUM_BLOCKS = 0x200 > > +!endif > > +!if $(FD_SIZE_IN_MB) == 3 > > + 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..2c8936a1ae15 100644 > > --- a/ArmVirtPkg/ArmVirtQemu.fdf > > +++ b/ArmVirtPkg/ArmVirtQemu.fdf > > @@ -20,14 +20,22 @@ > > # > > ################################################################################ > > > > +[Defines] > > +!if $(FD_SIZE_IN_MB) == 2 > > + DEFINE FVMAIN_COMPACT_SIZE = 0x1ff000 > > +!endif > > +!if $(FD_SIZE_IN_MB) == 3 > > + 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..72fc8dd698f8 100644 > > --- a/ArmVirtPkg/ArmVirtQemuKernel.fdf > > +++ b/ArmVirtPkg/ArmVirtQemuKernel.fdf > > @@ -20,14 +20,22 @@ > > # > > ################################################################################ > > > > +[Defines] > > +!if $(FD_SIZE_IN_MB) == 2 > > + DEFINE FVMAIN_COMPACT_SIZE = 0x1f8000 > > +!endif > > +!if $(FD_SIZE_IN_MB) == 3 > > + 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_MB) == 2 > > 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, # image_size: 2 MB > > +!endif > > +!if $(FD_SIZE_IN_MB) == 3 > > + 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, # image_size: 3 MB > > +!endif > > 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 > > @@ -76,12 +89,17 @@ DATA = { > > 0xf6, 0x1f, 0x00, 0xea, # b 0x8000 > > 0x18, 0x28, 0x6f, 0x01, # magic > > 0x00, 0x00, 0x00, 0x00, # start > > +!if $(FD_SIZE_IN_MB) == 2 > > 0x00, 0x00, 0x20, 0x00, # image size: 2 MB > > +!endif > > +!if $(FD_SIZE_IN_MB) == 3 > > + 0x00, 0x00, 0x30, 0x00, # image size: 3 MB > > +!endif > > 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..38d4cc163524 100644 > > --- a/ArmVirtPkg/ArmVirtXen.fdf > > +++ b/ArmVirtPkg/ArmVirtXen.fdf > > @@ -20,14 +20,22 @@ > > # > > ################################################################################ > > > > +[Defines] > > +!if $(FD_SIZE_IN_MB) == 2 > > + DEFINE FVMAIN_COMPACT_SIZE = 0x1fe000 > > +!endif > > +!if $(FD_SIZE_IN_MB) == 3 > > + 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) > > > > ################################################################################ > > # > > @@ -56,7 +64,12 @@ DATA = { > > 0x01, 0x00, 0x00, 0x10, # code0: adr x1, . > > 0xff, 0x07, 0x00, 0x14, # code1: b 0x2000 > > 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, # text_offset: 512 KB > > +!if $(FD_SIZE_IN_MB) == 2 > > 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, # image_size: 2 MB > > +!endif > > +!if $(FD_SIZE_IN_MB) == 3 > > + 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, # image_size: 3 MB > > +!endif > > 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 > > @@ -76,12 +89,17 @@ DATA = { > > 0xf6, 0x07, 0x00, 0xea, # b 0x2000 > > 0x18, 0x28, 0x6f, 0x01, # magic > > 0x00, 0x00, 0x00, 0x00, # start > > +!if $(FD_SIZE_IN_MB) == 2 > > 0x00, 0x00, 0x20, 0x00, # image size: 2 MB > > +!endif > > +!if $(FD_SIZE_IN_MB) == 3 > > + 0x00, 0x00, 0x30, 0x00, # image size: 3 MB > > +!endif > > 0x01, 0x02, 0x03, 0x04 # endiannness flag > > !endif > > } > > > > -0x00002000|0x001fe000 > > +0x00002000|$(FVMAIN_COMPACT_SIZE) > > gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize > > FV = FVMAIN_COMPACT > > > > > > Reviewed-by: Laszlo Ersek Thanks all Pushed as 86ad762fa7a5..7551529ce104