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=u5g3/48Y; spf=pass (domain: linaro.org, ip: 209.85.128.68, mailfrom: ard.biesheuvel@linaro.org) Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) by groups.io with SMTP; Wed, 11 Sep 2019 09:24:09 -0700 Received: by mail-wm1-f68.google.com with SMTP id p7so4214222wmp.4 for ; Wed, 11 Sep 2019 09:24:08 -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=XEWBDG19YZFk43AShqgdKddd9w0SZCNceU5fxWTF2Ig=; b=u5g3/48YDv5en49joL6xkcLZ/IMyKV330OlmM7eALLUFSROyLaCE792y0xeAfG6IN9 3Hm69LGNM0nDTyMBIEgWy5J0mN4/64ldZ4RVQMuj78hSrbKHa7YtxEqECoAD7uQIaBze i3dgFgtlhnKj6UrmjFsN8nGGg3AODBQwCC4+A2uruoag2auNsCj8horIDnKnxq1ZH8eD Y6ZjT4fGGAydlkD679PCJ8BuTS9sy1NUpXKrWc3C+XlexWtlQxaMLZM0eUazEEHVEDyl wSk3a+ENpfow3Qu1h+dwmsGDSi8SHxDQ4G76y0aeK8icSZKw8HEj7FYB5cqoGqquSDHx SsvA== 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=XEWBDG19YZFk43AShqgdKddd9w0SZCNceU5fxWTF2Ig=; b=IlR7jW59mTuA5MwKa6BSMTWc7NL+mYO5z8k+Jp3+pWEJXty1Ocr8xW6GGqyeOqHZIQ 8lG/SkmdBuWmLV/smuauVIbz7RLK/bccDC+DktZN8kQTgJQZoAy3G6U/o4vsrDhYLwi+ aRS0fpSn3MmKScg+GH06V7wJ5da/9ecxw1w3dlwIc4Y8JpHmsff0sBntkRA752+FBjuz FCY12laQdkeTJ+8uc1+WSZQjk50fT1ClGbdqd3qF37FMH6kyyNa/JN1sM013NiBoIce5 4D5alXcPX4G32Kl4I+rPKd58lOwL4Y6CYpOK5tzJURdKwJ9pLJgRkLwJtMFTMYg8H2L4 cDnw== X-Gm-Message-State: APjAAAWECr6NXHTMjKO0gyRVaoOdRgHUIzueunHcOr1FvpopHEsMGVOk w19EQuUTz6uNdwPZjXXjcChCy+0nVbfBX9Hh X-Google-Smtp-Source: APXvYqz5QtpVZoWHVkz/+uQQJ5La6VN0kAnSw7BfCDE+9vFMZXEaXOQ/0Ki/xIKsIqDZp1NxbuJrxw== X-Received: by 2002:a1c:1981:: with SMTP id 123mr4538172wmz.88.1568219047310; Wed, 11 Sep 2019 09:24:07 -0700 (PDT) Return-Path: Received: from e111045-lin.nice.arm.com ([148.69.85.38]) by smtp.gmail.com with ESMTPSA id b7sm3001590wrj.28.2019.09.11.09.24.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Sep 2019 09:24:06 -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 v2] ArmVirtPkg: increase FD/FV size for NOOPT builds Date: Wed, 11 Sep 2019 17:23:54 +0100 Message-Id: <20190911162354.22107-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 --- 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