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=B78H7o4B; spf=pass (domain: linaro.org, ip: 209.85.221.68, mailfrom: ard.biesheuvel@linaro.org) Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by groups.io with SMTP; Thu, 12 Sep 2019 09:59:04 -0700 Received: by mail-wr1-f68.google.com with SMTP id u16so29276356wrr.0 for ; Thu, 12 Sep 2019 09:59:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=b79fLFwdoumup78N32BmDen2Kqy0X/MDsJxHAuMV1Bc=; b=B78H7o4BqPecqcbtRgyJd7nFhbgGjNfyz0PJJq45N+kKmzL/FnvTtHyVlX/8sioCI8 X54oFg77ZZJ5OCJzWG+N5cmRsDK+x+edbrfAJ40KaLmyXR0fmreuQZlgqTCuOCv+cutW 7f4hWYk1LEIzMW2kQiN1QRoHlJu9rpS44e36CQsBSlpymO2kWMx+oh4bF4W8wOCGHE6k PYfcMPgg9bVsuLYnL2rlLICvk1SmFLhJCp0G8tTdBUhe5pI1Jt4MZD9SfejQsqSH5g6j ugZbxkOWQrYcvUqejRJ7nnA4LbR9ujLyLFw2RymxwWhly+qt220vGFyvKKhaM6zCuVme MQjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=b79fLFwdoumup78N32BmDen2Kqy0X/MDsJxHAuMV1Bc=; b=WBmSHa/czCnHbkummofK87k0o37rOc5sVRwRi7qG+U7tV5kdlqXYx/KPegrmNFkOfC yMPJJMlMKo9aYkqodsYjGBBqyZlgd2TRxWMe6CwNVOggMEo0D5zKHf4XaOxWRm7mgR99 NxkGmAvrWoQ3t6662T8Ac6FeZW/mj+K/xbkdbrSHBA6oahJu0AYd3Nijx4sosGzRE1rW zNKtvU/qBHgr71e+Du4zZBk461iFNgrI9hyp+fGDyD6ripiGpc0pVfJWLErw+qujWrY6 ckLGC6FLdD2B0jRasnYkNIDWOBoEr+gIueJ+n8UJSkvpsQLhG+npa+AUCPH2Yxa6E/OW XrLA== X-Gm-Message-State: APjAAAU884v9o12WDfYHK2Li3gkle82OVGeCmoBehiC4a/dZoLtUFrBB 3DgenUyxINdNgg2rZ4cEYoXG3p8hrGKlw2qs X-Google-Smtp-Source: APXvYqw7m8sK5XGcV0mP8c5GoPmbhj6HRRdCCoWsouvHDprd2dcEYthptGpw8cEN8yEDwqIsGRnQqg== X-Received: by 2002:a5d:54cd:: with SMTP id x13mr12306035wrv.12.1568307542652; Thu, 12 Sep 2019 09:59:02 -0700 (PDT) Return-Path: Received: from e111045-lin.c.hoisthospitality.com ([135.196.99.211]) by smtp.gmail.com with ESMTPSA id e3sm32372918wrh.12.2019.09.12.09.59.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Sep 2019 09:59:01 -0700 (PDT) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: leif.lindholm@linaro.org, lersek@redhat.com, philmd@redhat.com, Ard Biesheuvel Subject: [PATCH v3] ArmVirtPkg: increase FD/FV size for NOOPT builds Date: Thu, 12 Sep 2019 17:58:49 +0100 Message-Id: <20190912165849.20868-1-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.17.1 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 -- 2.17.1