From: "Ard Biesheuvel" <ard.biesheuvel@linaro.org>
To: devel@edk2.groups.io
Cc: leif.lindholm@linaro.org, lersek@redhat.com, philmd@redhat.com,
Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: [PATCH v2] ArmVirtPkg: increase FD/FV size for NOOPT builds
Date: Wed, 11 Sep 2019 17:23:54 +0100 [thread overview]
Message-ID: <20190911162354.22107-1-ard.biesheuvel@linaro.org> (raw)
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.biesheuvel@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
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 = {
!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
@@ -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
--
2.17.1
next reply other threads:[~2019-09-11 16:24 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-11 16:23 Ard Biesheuvel [this message]
2019-09-12 14:46 ` [PATCH v2] ArmVirtPkg: increase FD/FV size for NOOPT builds Laszlo Ersek
2019-09-12 14:47 ` Laszlo Ersek
2019-09-12 14:53 ` Ard Biesheuvel
2019-09-12 15:20 ` Philippe Mathieu-Daudé
2019-09-12 16:50 ` Ard Biesheuvel
2019-09-12 17:05 ` Philippe Mathieu-Daudé
2019-09-12 17:13 ` Ard Biesheuvel
2019-09-12 17:14 ` Philippe Mathieu-Daudé
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190911162354.22107-1-ard.biesheuvel@linaro.org \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox