From 41e56f422df47b8bc1a7699ff258999f900a6290 Mon Sep 17 00:00:00 2001 From: Chris Kay Date: Mon, 5 Jun 2023 17:22:54 +0100 Subject: [PATCH] feat(fvp): allow configurable FVP Trusted SRAM size In some build configurations TF-A can exceed the existing 256KB SRAM, triggering a build failure. More recent versions of the base FVP allow you to configure a larger Trusted SRAM of 512KB. This change introduces the `FVP_TRUSTED_SRAM_SIZE` build option, which allows you to explicitly specify how much of the Trusted SRAM to utilise, e.g.: FVP_TRUSTED_SRAM_SIZE=384 This allows previously-failing configurations to build successfully by utilising more than the originally-allocated 256KB of the Trusted SRAM while maintaining compatibility with older configurations/models that only require/have 256KB. Change-Id: I8344d3718564cd2bd53f1e6860e2fe341ae240b0 Signed-off-by: Chris Kay --- docs/plat/arm/arm-build-options.rst | 6 ++++++ plat/arm/board/fvp/include/platform_def.h | 2 +- plat/arm/board/fvp/platform.mk | 7 +++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/plat/arm/arm-build-options.rst b/docs/plat/arm/arm-build-options.rst index e7e7ee703..6c782cf72 100644 --- a/docs/plat/arm/arm-build-options.rst +++ b/docs/plat/arm/arm-build-options.rst @@ -169,6 +169,12 @@ Arm CSS Platform-Specific Build Options require all the CPUs to execute the CPU specific power down sequence to complete a warm reboot sequence in which only the CPUs are power cycled. +Arm FVP Build Options +--------------------- + +- ``FVP_TRUSTED_SRAM_SIZE``: Size (in kilobytes) of the Trusted SRAM region to + utilize when building for the FVP platform. This option defaults to 256. + -------------- .. |FIP in a GPT image| image:: ../../resources/diagrams/FIP_in_a_GPT_image.png diff --git a/plat/arm/board/fvp/include/platform_def.h b/plat/arm/board/fvp/include/platform_def.h index 9e72ba08c..cd468e1f7 100644 --- a/plat/arm/board/fvp/include/platform_def.h +++ b/plat/arm/board/fvp/include/platform_def.h @@ -43,7 +43,7 @@ */ #define PLAT_ARM_CLUSTER_COUNT U(FVP_CLUSTER_COUNT) -#define PLAT_ARM_TRUSTED_SRAM_SIZE UL(0x00040000) /* 256 KB */ +#define PLAT_ARM_TRUSTED_SRAM_SIZE (FVP_TRUSTED_SRAM_SIZE * UL(1024)) #define PLAT_ARM_TRUSTED_ROM_BASE UL(0x00000000) #define PLAT_ARM_TRUSTED_ROM_SIZE UL(0x04000000) /* 64 MB */ diff --git a/plat/arm/board/fvp/platform.mk b/plat/arm/board/fvp/platform.mk index 25c963b61..436cab310 100644 --- a/plat/arm/board/fvp/platform.mk +++ b/plat/arm/board/fvp/platform.mk @@ -24,6 +24,10 @@ FVP_GICR_REGION_PROTECTION := 0 FVP_DT_PREFIX := fvp-base-gicv3-psci +# Size (in kilobytes) of the Trusted SRAM region to utilize when building for +# the FVP platform. This option defaults to 256. +FVP_TRUSTED_SRAM_SIZE := 256 + # This is a very trickly TEMPORARY fix. Enabling ALL features exceeds BL31's # progbits limit. We need a way to build all useful configurations while waiting # on the fvp to increase its SRAM size. The problem is twofild: @@ -104,6 +108,9 @@ $(eval $(call add_define,FVP_MAX_PE_PER_CPU)) # Pass FVP_GICR_REGION_PROTECTION to the build system. $(eval $(call add_define,FVP_GICR_REGION_PROTECTION)) +# Pass FVP_TRUSTED_SRAM_SIZE to the build system. +$(eval $(call add_define,FVP_TRUSTED_SRAM_SIZE)) + # Sanity check the cluster count and if FVP_CLUSTER_COUNT <= 2, # choose the CCI driver , else the CCN driver ifeq ($(FVP_CLUSTER_COUNT), 0)