From 475dac08a0523e699ee1a69a31f0811ae35b0f81 Mon Sep 17 00:00:00 2001 From: Vagrant Cascadian Date: Wed, 16 Oct 2019 22:29:21 -0700 Subject: [PATCH] gnu: arm-trusted-firmware: Add backported patches to disable .bin generation for rockchip platforms. * gnu/packages/patches/arm-trusted-firmware-optional-bin-generation.patch: New patch. * gnu/packages/patches/arm-trusted-firmware-rockchip-disable-binary.patch: New patch. * gnu/packages/firmware (make-arm-trusted-firmware): Add patches. * gnu/local.mk (dist_patch_DATA): Add patches. Signed-off-by: Vagrant Cascadian --- gnu/local.mk | 2 + gnu/packages/firmware.scm | 3 + ...ted-firmware-optional-bin-generation.patch | 86 +++++++++++++++++++ ...ted-firmware-rockchip-disable-binary.patch | 73 ++++++++++++++++ 4 files changed, 164 insertions(+) create mode 100644 gnu/packages/patches/arm-trusted-firmware-optional-bin-generation.patch create mode 100644 gnu/packages/patches/arm-trusted-firmware-rockchip-disable-binary.patch diff --git a/gnu/local.mk b/gnu/local.mk index 3fbfe0f2bb..83fb88c438 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -694,6 +694,8 @@ dist_patch_DATA = \ %D%/packages/patches/antlr3-3_1-fix-java8-compilation.patch \ %D%/packages/patches/antlr3-3_3-fix-java8-compilation.patch \ %D%/packages/patches/apr-skip-getservbyname-test.patch \ + %D%/packages/patches/arm-trusted-firmware-optional-bin-generation.patch \ + %D%/packages/patches/arm-trusted-firmware-rockchip-disable-binary.patch \ %D%/packages/patches/aspell-default-dict-dir.patch \ %D%/packages/patches/aspell-gcc-compat.patch \ %D%/packages/patches/ath9k-htc-firmware-binutils.patch \ diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index c473ccd920..3c2b3590e1 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -389,6 +389,9 @@ Virtual Machines. OVMF contains a sample UEFI firmware for QEMU and KVM.") (url "https://github.com/ARM-software/arm-trusted-firmware.git") (commit (string-append "v" version)))) (file-name (git-file-name "arm-trusted-firmware" version)) + (patches (search-patches + "arm-trusted-firmware-optional-bin-generation.patch" + "arm-trusted-firmware-rockchip-disable-binary.patch")) (sha256 (base32 "1gy5qskrjy8n3kxdcm1dx8b45l5b75n0pm8pq80wl6xic1ycy24r")))) diff --git a/gnu/packages/patches/arm-trusted-firmware-optional-bin-generation.patch b/gnu/packages/patches/arm-trusted-firmware-optional-bin-generation.patch new file mode 100644 index 0000000000..b2b8a12e1d --- /dev/null +++ b/gnu/packages/patches/arm-trusted-firmware-optional-bin-generation.patch @@ -0,0 +1,86 @@ +From b02de4cb14ee9c2bfff53d36f0b7ec6a2065bc94 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christoph=20M=C3=BCllner?= +Date: Wed, 24 Apr 2019 09:45:30 +0200 +Subject: [PATCH 1/2] build_macros: Add mechanism to prevent bin generation. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +On certain platforms it does not make sense to generate +TF-A binary images. For example a platform could make use of serveral +memory areas, which are non-continuous and the resulting binary +therefore would suffer from the padding-bytes. +Typically these platforms use the ELF image. + +This patch introduces a variable DISABLE_BIN_GENERATION, which +can be set to '1' in the platform makefile to prevent the binary +generation. + +Signed-off-by: Christoph Müllner +Change-Id: I62948e88bab685bb055fe6167d9660d14e604462 +--- + docs/user-guide.rst | 4 ++++ + make_helpers/build_macros.mk | 9 +++++++++ + make_helpers/defaults.mk | 3 +++ + 3 files changed, 16 insertions(+) + +diff --git a/docs/user-guide.rst b/docs/user-guide.rst +index 0848769b3..19919f112 100644 +--- a/docs/user-guide.rst ++++ b/docs/user-guide.rst +@@ -369,6 +369,10 @@ Common build options + - ``DEBUG``: Chooses between a debug and release build. It can take either 0 + (release) or 1 (debug) as values. 0 is the default. + ++- ``DISABLE_BIN_GENERATION``: Boolean option to disable the generation ++ of the binary image. If set to 1, then only the ELF image is built. ++ 0 is the default. ++ + - ``DYN_DISABLE_AUTH``: Provides the capability to dynamically disable Trusted + Board Boot authentication at runtime. This option is meant to be enabled only + for development platforms. ``TRUSTED_BOARD_BOOT`` flag must be set if this +diff --git a/make_helpers/build_macros.mk b/make_helpers/build_macros.mk +index 5d33954ad..2d41b2db1 100644 +--- a/make_helpers/build_macros.mk ++++ b/make_helpers/build_macros.mk +@@ -438,6 +438,11 @@ else + --script $(LINKERFILE) $(BUILD_DIR)/build_message.o \ + $(OBJS) $(LDPATHS) $(LIBWRAPPER) $(LDLIBS) $(BL_LIBS) + endif ++ifeq ($(DISABLE_BIN_GENERATION),1) ++ @${ECHO_BLANK_LINE} ++ @echo "Built $$@ successfully" ++ @${ECHO_BLANK_LINE} ++endif + + $(DUMP): $(ELF) + $${ECHO} " OD $$@" +@@ -451,7 +456,11 @@ $(BIN): $(ELF) + @${ECHO_BLANK_LINE} + + .PHONY: bl$(1) ++ifeq ($(DISABLE_BIN_GENERATION),1) ++bl$(1): $(ELF) $(DUMP) ++else + bl$(1): $(BIN) $(DUMP) ++endif + + all: bl$(1) + +diff --git a/make_helpers/defaults.mk b/make_helpers/defaults.mk +index be84f7791..dc797ed1f 100644 +--- a/make_helpers/defaults.mk ++++ b/make_helpers/defaults.mk +@@ -62,6 +62,9 @@ DEBUG := 0 + # Build platform + DEFAULT_PLAT := fvp + ++# Disable the generation of the binary image (ELF only). ++DISABLE_BIN_GENERATION := 0 ++ + # Enable capability to disable authentication dynamically. Only meant for + # development platforms. + DYN_DISABLE_AUTH := 0 +-- +2.20.1 + diff --git a/gnu/packages/patches/arm-trusted-firmware-rockchip-disable-binary.patch b/gnu/packages/patches/arm-trusted-firmware-rockchip-disable-binary.patch new file mode 100644 index 0000000000..8819a7cfad --- /dev/null +++ b/gnu/packages/patches/arm-trusted-firmware-rockchip-disable-binary.patch @@ -0,0 +1,73 @@ +From 42383dcf7db5debb9e183c7c5631974a4c2f91ea Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christoph=20M=C3=BCllner?= +Date: Wed, 24 Apr 2019 09:52:54 +0200 +Subject: [PATCH 2/2] rockchip: Disable binary generation for all SoCs. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +All supported Rockchip SoCs (RK3288, RK3328, RK3368 and RK3399) +have non-continuous memory areas in the linker script with a huge +gap between them. This results in extremely padded binary images +with a size of about 4 GiB. + +E.g. on the RK3399 we have the following memory areas (and base addresses): +RAM (0x1000), SRAM (0xFF8C0000), and PMUSRAM (0xFF3B0000). + +Consumers of the TF-A project (e.g. coreboot or U-Boot) therefore +use the ELF image instead, which has a size of a few hundred kBs. + +In order to prevent the generation of a huge and useless file, +this patch disables the binary generation for all affected Rockchip +SoCs. + +Signed-off-by: Christoph Müllner +Change-Id: I4ac65bdf1e598c3e1a59507897d183aee9a36916 +--- + plat/rockchip/rk3328/platform.mk | 2 ++ + plat/rockchip/rk3368/platform.mk | 2 ++ + plat/rockchip/rk3399/platform.mk | 2 ++ + 3 files changed, 6 insertions(+) + +diff --git a/plat/rockchip/rk3328/platform.mk b/plat/rockchip/rk3328/platform.mk +index 18b1b9419..01c5af6a2 100644 +--- a/plat/rockchip/rk3328/platform.mk ++++ b/plat/rockchip/rk3328/platform.mk +@@ -8,6 +8,8 @@ RK_PLAT := plat/rockchip + RK_PLAT_SOC := ${RK_PLAT}/${PLAT} + RK_PLAT_COMMON := ${RK_PLAT}/common + ++DISABLE_BIN_GENERATION := 1 ++ + include lib/libfdt/libfdt.mk + + PLAT_INCLUDES := -Idrivers/arm/gic/common/ \ +diff --git a/plat/rockchip/rk3368/platform.mk b/plat/rockchip/rk3368/platform.mk +index d1315fc58..4ec36ce06 100644 +--- a/plat/rockchip/rk3368/platform.mk ++++ b/plat/rockchip/rk3368/platform.mk +@@ -8,6 +8,8 @@ RK_PLAT := plat/rockchip + RK_PLAT_SOC := ${RK_PLAT}/${PLAT} + RK_PLAT_COMMON := ${RK_PLAT}/common + ++DISABLE_BIN_GENERATION := 1 ++ + include lib/libfdt/libfdt.mk + + PLAT_INCLUDES := -I${RK_PLAT_COMMON}/ \ +diff --git a/plat/rockchip/rk3399/platform.mk b/plat/rockchip/rk3399/platform.mk +index 101359856..25c498da8 100644 +--- a/plat/rockchip/rk3399/platform.mk ++++ b/plat/rockchip/rk3399/platform.mk +@@ -8,6 +8,8 @@ RK_PLAT := plat/rockchip + RK_PLAT_SOC := ${RK_PLAT}/${PLAT} + RK_PLAT_COMMON := ${RK_PLAT}/common + ++DISABLE_BIN_GENERATION := 1 ++ + include lib/libfdt/libfdt.mk + + PLAT_INCLUDES := -I${RK_PLAT_COMMON}/ \ +-- +2.20.1 +