board: vexpress64: enable bloblist for SPL handoff
authorHarrison Mutai <harrison.mutai@arm.com>
Tue, 4 Feb 2025 17:58:42 +0000 (17:58 +0000)
committerTom Rini <trini@konsulko.com>
Wed, 12 Feb 2025 00:08:58 +0000 (18:08 -0600)
Enable bloblist on vexpress64 platforms to facilitate information
passing from TF-A using the firmware handoff framework.

Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
board/armltd/vexpress64/Kconfig
board/armltd/vexpress64/Makefile
board/armltd/vexpress64/vexpress64.c
configs/vexpress_fvp_bloblist_defconfig [new file with mode: 0644]
doc/board/armltd/vexpress64.rst

index 584b545..7e87094 100644 (file)
@@ -28,7 +28,7 @@ choice
 config TARGET_VEXPRESS64_BASE_FVP
        bool "Support Versatile Express ARMv8a FVP BASE model"
        select VEXPRESS64_BASE_MODEL
-       imply OF_HAS_PRIOR_STAGE
+       imply OF_HAS_PRIOR_STAGE if !BLOBLIST
 
 config TARGET_VEXPRESS64_BASER_FVP
        bool "Support Versatile Express ARMv8r64 FVP BASE model"
index 1878fbe..b0dd1d0 100644 (file)
@@ -3,5 +3,8 @@
 # (C) Copyright 2000-2004
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
 
-obj-y  := vexpress64.o lowlevel_init.o
+obj-y  := vexpress64.o
+
+obj-$(CONFIG_OF_HAS_PRIOR_STAGE)       += lowlevel_init.o
+
 obj-$(CONFIG_TARGET_VEXPRESS64_JUNO)   += pcie.o
index b5ede58..0b75c13 100644 (file)
@@ -100,7 +100,9 @@ int dram_init_banksize(void)
  * Push the variable into the .data section so that it
  * does not get cleared later.
  */
+#ifdef CONFIG_OF_HAS_PRIOR_STAGE
 unsigned long __section(".data") prior_stage_fdt_address[2];
+#endif
 
 #ifdef CONFIG_OF_BOARD
 
@@ -151,6 +153,7 @@ static phys_addr_t find_dtb_in_nor_flash(const char *partname)
 }
 #endif
 
+#ifdef CONFIG_OF_HAS_PRIOR_STAGE
 /*
  * Filter for a valid DTB, as TF-A happens to provide a pointer to some
  * data structure using the DTB format, which we cannot use.
@@ -201,6 +204,7 @@ int board_fdt_blob_setup(void **fdtp)
        return -ENXIO;
 }
 #endif
+#endif
 
 /* Actual reset is done via PSCI. */
 void reset_cpu(void)
diff --git a/configs/vexpress_fvp_bloblist_defconfig b/configs/vexpress_fvp_bloblist_defconfig
new file mode 100644 (file)
index 0000000..dcc87db
--- /dev/null
@@ -0,0 +1,5 @@
+#include <configs/vexpress_fvp_defconfig>
+
+CONFIG_BLOBLIST=y
+CONFIG_BLOBLIST_PASSAGE=y
+CONFIG_BLOBLIST_SIZE_RELOC=0x10000
index a7f771d..4dadadb 100644 (file)
@@ -43,6 +43,22 @@ Juno is an Arm development board with the following features:
 
 More details can be found in the board documentation [3]_.
 
+Bloblist Support
+----------------
+
+The ``vexpress_fvp_bloblist_defconfig`` configures U-Boot to be compiled for
+Vexpress64 with Bloblist as the primary method for information handoff between
+boot stages. U-Boot offers three methods to set up a bloblist: using a
+predefined bloblist at a specified address, dynamically allocating memory for a
+bloblist, or utilizing a standard passage-provided bloblist with automatic size
+detection.
+
+By default, ``vexpress_fvp_bloblist_defconfig`` uses the standard passage method
+(CONFIG_BLOBLIST_PASSAGE) because TF-A provides a Transfer List in non-secure
+memory that U-Boot can utilise. This Bloblist, which is referred to as a Transfer List in
+TF-A, contains all necessary data for the handoff process, including DT and ACPI
+tables.
+
 References
 ----------