* [PATCH 1/4] bloblist: fix typo in code comments
2025-02-04 17:58 [PATCH v3 0/4] Enable bloblist support on Vexpress64 Harrison Mutai
@ 2025-02-04 17:58 ` Harrison Mutai
2025-02-04 17:58 ` [PATCH 2/4] board: vexpress64: default to hardware device tree Harrison Mutai
` (3 subsequent siblings)
4 siblings, 0 replies; 10+ messages in thread
From: Harrison Mutai @ 2025-02-04 17:58 UTC (permalink / raw)
To: Tom Rini; +Cc: nd, andre.przywara, manish.pandey2, Harrison Mutai, u-boot
Fix the two typos in the spelling of same and set in common/Kconfig and
include/bloblist.h.
Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
---
common/Kconfig | 6 +++---
include/bloblist.h | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/common/Kconfig b/common/Kconfig
index 7685914fa6..f9489872fd 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -1055,8 +1055,8 @@ choice
config BLOBLIST_FIXED
bool "Place bloblist at a fixed address in memory"
help
- Select this to used a fixed memory address for the bloblist. If the
- bloblist exists at this address from a previous phase, it used as is.
+ Select this to use a fixed memory address for the bloblist. If the
+ bloblist exists at this address from a previous phase, it is used as is.
If not it is created at this address in U-Boot.
config BLOBLIST_ALLOC
@@ -1085,7 +1085,7 @@ config BLOBLIST_SIZE
Sets the size of the bloblist in bytes. This must include all
overhead (alignment, bloblist header, record header). The bloblist
is set up in the first part of U-Boot to run (TPL, SPL or U-Boot
- proper), and this sane bloblist is used for subsequent phases.
+ proper), and this same bloblist is used for subsequent phases.
config BLOBLIST_SIZE_RELOC
hex "Size of bloblist after relocation"
diff --git a/include/bloblist.h b/include/bloblist.h
index f999391f74..03d9862c0f 100644
--- a/include/bloblist.h
+++ b/include/bloblist.h
@@ -463,7 +463,7 @@ int bloblist_init(void);
/**
* bloblist_maybe_init() - Init the bloblist system if not already done
*
- * Calls bloblist_init() if the GD_FLG_BLOBLIST_READY flag is not et
+ * Calls bloblist_init() if the GD_FLG_BLOBLIST_READY flag is not set
*
* Return: 0 if OK, -ve on error
*/
--
2.46.2
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH 2/4] board: vexpress64: default to hardware device tree
2025-02-04 17:58 [PATCH v3 0/4] Enable bloblist support on Vexpress64 Harrison Mutai
2025-02-04 17:58 ` [PATCH 1/4] bloblist: fix typo in code comments Harrison Mutai
@ 2025-02-04 17:58 ` Harrison Mutai
2025-02-04 17:58 ` [PATCH 3/4] bloblist: add support for CONFIG_BLOBLIST_PASSAGE Harrison Mutai
` (2 subsequent siblings)
4 siblings, 0 replies; 10+ messages in thread
From: Harrison Mutai @ 2025-02-04 17:58 UTC (permalink / raw)
To: Liviu Dudau, Tom Rini
Cc: nd, andre.przywara, manish.pandey2, Harrison Mutai, u-boot
When booting into the Linux kernel with semi-hosting, use the device
tree provided by hardware unless one is provided in the current
directory.
Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
---
include/configs/vexpress_aemv8.h | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/include/configs/vexpress_aemv8.h b/include/configs/vexpress_aemv8.h
index b5a17f93ef..5eee13b3fc 100644
--- a/include/configs/vexpress_aemv8.h
+++ b/include/configs/vexpress_aemv8.h
@@ -181,12 +181,14 @@
" if load hostfs - ${kernel_addr_r} ${kernel_name}; then" \
" setenv fdt_high 0xffffffffffffffff;" \
" setenv initrd_high 0xffffffffffffffff;" \
- " load hostfs - ${fdt_addr_r} ${fdtfile};" \
+ " if test -n load hostfs - ${fdt_addr_r} ${fdtfile}; then" \
+ " fdt move $fdtcontroladdr $fdt_addr_r;" \
+ " fi;" \
" load hostfs - ${ramdisk_addr_r} ${ramdisk_name};" \
" fdt addr ${fdt_addr_r};" \
" fdt resize;" \
" fdt chosen ${ramdisk_addr_r} ${filesize};" \
- " booti $kernel_addr_r - $fdt_addr_r;" \
+ " booti $kernel_addr_r - ${fdt_addr_r};" \
" fi;" \
"fi\0"
#define BOOTENV_DEV_NAME_SMH(devtypeu, devtypel, instance) "smh "
--
2.46.2
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH 3/4] bloblist: add support for CONFIG_BLOBLIST_PASSAGE
2025-02-04 17:58 [PATCH v3 0/4] Enable bloblist support on Vexpress64 Harrison Mutai
2025-02-04 17:58 ` [PATCH 1/4] bloblist: fix typo in code comments Harrison Mutai
2025-02-04 17:58 ` [PATCH 2/4] board: vexpress64: default to hardware device tree Harrison Mutai
@ 2025-02-04 17:58 ` Harrison Mutai
2025-02-04 17:58 ` [PATCH 4/4] board: vexpress64: enable bloblist for SPL handoff Harrison Mutai
2025-02-12 2:08 ` [PATCH v3 0/4] Enable bloblist support on Vexpress64 Tom Rini
4 siblings, 0 replies; 10+ messages in thread
From: Harrison Mutai @ 2025-02-04 17:58 UTC (permalink / raw)
To: Tom Rini; +Cc: nd, andre.przywara, manish.pandey2, Harrison Mutai, u-boot
When the configuration option CONFIG_BLOBLIST_PASSAGE is selected, the
bloblist present in the incoming standard passage is utilised in-place.
There is no need to specify the size of the bloblist as the system
automatically detects it using the header information.
Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
---
common/Kconfig | 8 +++++++-
common/bloblist.c | 18 ++++++++++--------
2 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/common/Kconfig b/common/Kconfig
index f9489872fd..7b2db46ef0 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -1066,6 +1066,12 @@ config BLOBLIST_ALLOC
specify a fixed address on systems where this is unknown or can
change at runtime.
+config BLOBLIST_PASSAGE
+ bool "Use bloblist in-place"
+ help
+ Use a bloblist in the incoming standard passage. The size is detected
+ automatically so CONFIG_BLOBLIST_SIZE can be 0.
+
endchoice
config BLOBLIST_ADDR
@@ -1080,6 +1086,7 @@ config BLOBLIST_ADDR
config BLOBLIST_SIZE
hex "Size of bloblist"
+ default 0x0 if BLOBLIST_PASSAGE
default 0x400
help
Sets the size of the bloblist in bytes. This must include all
@@ -1090,7 +1097,6 @@ config BLOBLIST_SIZE
config BLOBLIST_SIZE_RELOC
hex "Size of bloblist after relocation"
default BLOBLIST_SIZE if BLOBLIST_FIXED || BLOBLIST_ALLOC
- default 0x0 if BLOBLIST_PASSAGE
default 0x20000 if (ARM && EFI_LOADER && GENERATE_ACPI_TABLE)
help
Sets the size of the bloblist in bytes after relocation. Since U-Boot
diff --git a/common/bloblist.c b/common/bloblist.c
index 110bb9dc44..1fcd387593 100644
--- a/common/bloblist.c
+++ b/common/bloblist.c
@@ -475,6 +475,9 @@ int bloblist_reloc(void *to, uint to_size)
{
struct bloblist_hdr *hdr;
+ if (!to_size)
+ return 0;
+
if (to_size < gd->bloblist->total_size)
return -ENOSPC;
@@ -505,13 +508,6 @@ int bloblist_init(void)
* at a fixed address.
*/
bool from_addr = fixed && !xpl_is_first_phase();
- /*
- * If U-Boot is in the first phase that an arch custom routine should
- * install the bloblist passed from previous loader to this fixed
- * address.
- */
- bool from_boot_arg = fixed && xpl_is_first_phase();
-
if (xpl_prev_phase() == PHASE_TPL && !IS_ENABLED(CONFIG_TPL_BLOBLIST))
from_addr = false;
if (fixed)
@@ -519,7 +515,13 @@ int bloblist_init(void)
CONFIG_BLOBLIST_ADDR);
size = CONFIG_BLOBLIST_SIZE;
- if (from_boot_arg)
+
+ /*
+ * If the current boot stage is the first phase of U-Boot, then an
+ * architecture-specific routine should be used to handle the bloblist
+ * passed from the previous boot loader
+ */
+ if (xpl_is_first_phase() && !IS_ENABLED(CONFIG_BLOBLIST_ALLOC))
ret = xferlist_from_boot_arg(addr, size);
else if (from_addr)
ret = bloblist_check(addr, size);
--
2.46.2
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH 4/4] board: vexpress64: enable bloblist for SPL handoff
2025-02-04 17:58 [PATCH v3 0/4] Enable bloblist support on Vexpress64 Harrison Mutai
` (2 preceding siblings ...)
2025-02-04 17:58 ` [PATCH 3/4] bloblist: add support for CONFIG_BLOBLIST_PASSAGE Harrison Mutai
@ 2025-02-04 17:58 ` Harrison Mutai
2025-02-12 2:08 ` [PATCH v3 0/4] Enable bloblist support on Vexpress64 Tom Rini
4 siblings, 0 replies; 10+ messages in thread
From: Harrison Mutai @ 2025-02-04 17:58 UTC (permalink / raw)
To: Liviu Dudau, Tom Rini
Cc: nd, andre.przywara, manish.pandey2, Harrison Mutai, u-boot
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 | 2 +-
board/armltd/vexpress64/Makefile | 5 ++++-
board/armltd/vexpress64/vexpress64.c | 4 ++++
configs/vexpress_fvp_bloblist_defconfig | 5 +++++
doc/board/armltd/vexpress64.rst | 16 ++++++++++++++++
5 files changed, 30 insertions(+), 2 deletions(-)
create mode 100644 configs/vexpress_fvp_bloblist_defconfig
diff --git a/board/armltd/vexpress64/Kconfig b/board/armltd/vexpress64/Kconfig
index 584b5455e9..7e8709444f 100644
--- a/board/armltd/vexpress64/Kconfig
+++ b/board/armltd/vexpress64/Kconfig
@@ -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"
diff --git a/board/armltd/vexpress64/Makefile b/board/armltd/vexpress64/Makefile
index 1878fbed4e..b0dd1d0af8 100644
--- a/board/armltd/vexpress64/Makefile
+++ b/board/armltd/vexpress64/Makefile
@@ -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
diff --git a/board/armltd/vexpress64/vexpress64.c b/board/armltd/vexpress64/vexpress64.c
index b5ede58757..0b75c1358f 100644
--- a/board/armltd/vexpress64/vexpress64.c
+++ b/board/armltd/vexpress64/vexpress64.c
@@ -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
index 0000000000..dcc87db872
--- /dev/null
+++ b/configs/vexpress_fvp_bloblist_defconfig
@@ -0,0 +1,5 @@
+#include <configs/vexpress_fvp_defconfig>
+
+CONFIG_BLOBLIST=y
+CONFIG_BLOBLIST_PASSAGE=y
+CONFIG_BLOBLIST_SIZE_RELOC=0x10000
diff --git a/doc/board/armltd/vexpress64.rst b/doc/board/armltd/vexpress64.rst
index a7f771d266..4dadadb53d 100644
--- a/doc/board/armltd/vexpress64.rst
+++ b/doc/board/armltd/vexpress64.rst
@@ -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
----------
--
2.46.2
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH v3 0/4] Enable bloblist support on Vexpress64
2025-02-04 17:58 [PATCH v3 0/4] Enable bloblist support on Vexpress64 Harrison Mutai
` (3 preceding siblings ...)
2025-02-04 17:58 ` [PATCH 4/4] board: vexpress64: enable bloblist for SPL handoff Harrison Mutai
@ 2025-02-12 2:08 ` Tom Rini
4 siblings, 0 replies; 10+ messages in thread
From: Tom Rini @ 2025-02-12 2:08 UTC (permalink / raw)
To: Harrison Mutai; +Cc: nd, andre.przywara, manish.pandey2, u-boot
On Tue, 04 Feb 2025 17:58:38 +0000, Harrison Mutai wrote:
> This series of patches enhances the vexpress64 platform by enabling bloblist
> support. It also introduces support for CONFIG_BLOBLIST_PASSAGE. This is
> necessary to boot vexpress64 and other boards without manually specifying a
> fixed address and size for the bloblist.
>
> After this change, all the bloblist init modes are supported (i.e., fixed,
> alloc, passage) and Vexpress64 boots with CONFIG_BLOBLIST_PASSAGE.
>
> [...]
Applied to u-boot/next, thanks!
--
Tom
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 4/4] board: vexpress64: enable bloblist for SPL handoff
[not found] <20241218153933.37649-1-harrison.mutai@arm.com>
@ 2024-12-18 15:39 ` Harrison Mutai
2024-12-18 16:31 ` Tom Rini
0 siblings, 1 reply; 10+ messages in thread
From: Harrison Mutai @ 2024-12-18 15:39 UTC (permalink / raw)
To: David Feng, Linus Walleij, Peter Hoyes, Liviu Dudau, Tom Rini
Cc: nd, andre.przywara, manish.pandey2, Harrison Mutai, u-boot
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/Makefile | 3 ++-
board/armltd/vexpress64/vexpress64.c | 4 ++++
configs/vexpress_fvp_bloblist_defconfig | 5 +++++
doc/board/armltd/vexpress64.rst | 16 ++++++++++++++++
4 files changed, 27 insertions(+), 1 deletion(-)
create mode 100644 configs/vexpress_fvp_bloblist_defconfig
diff --git a/board/armltd/vexpress64/Makefile b/board/armltd/vexpress64/Makefile
index 1878fbed4e..4729787c5e 100644
--- a/board/armltd/vexpress64/Makefile
+++ b/board/armltd/vexpress64/Makefile
@@ -3,5 +3,6 @@
# (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
diff --git a/board/armltd/vexpress64/vexpress64.c b/board/armltd/vexpress64/vexpress64.c
index 0119f54f0d..f8bd5fbcf8 100644
--- a/board/armltd/vexpress64/vexpress64.c
+++ b/board/armltd/vexpress64/vexpress64.c
@@ -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.
@@ -206,6 +209,7 @@ void *board_fdt_blob_setup(int *err)
return NULL;
}
#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
index 0000000000..dcc87db872
--- /dev/null
+++ b/configs/vexpress_fvp_bloblist_defconfig
@@ -0,0 +1,5 @@
+#include <configs/vexpress_fvp_defconfig>
+
+CONFIG_BLOBLIST=y
+CONFIG_BLOBLIST_PASSAGE=y
+CONFIG_BLOBLIST_SIZE_RELOC=0x10000
diff --git a/doc/board/armltd/vexpress64.rst b/doc/board/armltd/vexpress64.rst
index a7f771d266..4dadadb53d 100644
--- a/doc/board/armltd/vexpress64.rst
+++ b/doc/board/armltd/vexpress64.rst
@@ -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
----------
--
2.46.2
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH 4/4] board: vexpress64: enable bloblist for SPL handoff
2024-12-18 15:39 ` [PATCH 4/4] board: vexpress64: enable bloblist for SPL handoff Harrison Mutai
@ 2024-12-18 16:31 ` Tom Rini
2024-12-19 16:04 ` Harrison Mutai
0 siblings, 1 reply; 10+ messages in thread
From: Tom Rini @ 2024-12-18 16:31 UTC (permalink / raw)
To: Harrison Mutai
Cc: David Feng, Linus Walleij, Peter Hoyes, Liviu Dudau, nd,
andre.przywara, manish.pandey2, u-boot
[-- Attachment #1: Type: text/plain, Size: 1295 bytes --]
On Wed, Dec 18, 2024 at 03:39:31PM +0000, Harrison Mutai wrote:
> 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>
[snip]
> diff --git a/configs/vexpress_fvp_bloblist_defconfig b/configs/vexpress_fvp_bloblist_defconfig
> new file mode 100644
> index 0000000000..dcc87db872
> --- /dev/null
> +++ b/configs/vexpress_fvp_bloblist_defconfig
> @@ -0,0 +1,5 @@
> +#include <configs/vexpress_fvp_defconfig>
> +
> +CONFIG_BLOBLIST=y
> +CONFIG_BLOBLIST_PASSAGE=y
> +CONFIG_BLOBLIST_SIZE_RELOC=0x10000
I wonder if this means we should also do:
diff --git a/common/Kconfig b/common/Kconfig
index 11066ec64315..cca33ed28f32 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -1087,7 +1087,6 @@ config BLOBLIST_SIZE
config BLOBLIST_SIZE_RELOC
hex "Size of bloblist after relocation"
default BLOBLIST_SIZE if BLOBLIST_FIXED || BLOBLIST_ALLOC
- default 0x0 if BLOBLIST_PASSAGE
default 0x20000 if (ARM && EFI_LOADER && GENERATE_ACPI_TABLE)
help
Sets the size of the bloblist in bytes after relocation. Since U-Boot
Because in this case we do need to set the size of the bloblist we use
internally to non-zero?
--
Tom
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 4/4] board: vexpress64: enable bloblist for SPL handoff
2024-12-18 16:31 ` Tom Rini
@ 2024-12-19 16:04 ` Harrison Mutai
2024-12-27 16:19 ` Tom Rini
0 siblings, 1 reply; 10+ messages in thread
From: Harrison Mutai @ 2024-12-19 16:04 UTC (permalink / raw)
To: Tom Rini
Cc: David Feng, Linus Walleij, Peter Hoyes, Liviu Dudau, nd,
andre.przywara, manish.pandey2, u-boot
On 18/12/2024 16:31, Tom Rini wrote:
> On Wed, Dec 18, 2024 at 03:39:31PM +0000, Harrison Mutai wrote:
>
>> 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>
> [snip]
>> diff --git a/configs/vexpress_fvp_bloblist_defconfig b/configs/vexpress_fvp_bloblist_defconfig
>> new file mode 100644
>> index 0000000000..dcc87db872
>> --- /dev/null
>> +++ b/configs/vexpress_fvp_bloblist_defconfig
>> @@ -0,0 +1,5 @@
>> +#include <configs/vexpress_fvp_defconfig>
>> +
>> +CONFIG_BLOBLIST=y
>> +CONFIG_BLOBLIST_PASSAGE=y
>> +CONFIG_BLOBLIST_SIZE_RELOC=0x10000
>
> I wonder if this means we should also do:
>
> diff --git a/common/Kconfig b/common/Kconfig
> index 11066ec64315..cca33ed28f32 100644
> --- a/common/Kconfig
> +++ b/common/Kconfig
> @@ -1087,7 +1087,6 @@ config BLOBLIST_SIZE
> config BLOBLIST_SIZE_RELOC
> hex "Size of bloblist after relocation"
> default BLOBLIST_SIZE if BLOBLIST_FIXED || BLOBLIST_ALLOC
> - default 0x0 if BLOBLIST_PASSAGE
> default 0x20000 if (ARM && EFI_LOADER && GENERATE_ACPI_TABLE)
> help
> Sets the size of the bloblist in bytes after relocation. Since U-Boot
>
> Because in this case we do need to set the size of the bloblist we use
> internally to non-zero?
>
That makes sense. The relocation in board_f will fail, as
reserve_bloblist relies on this value being non-zero. However, if
CONFIG_BLOBLIST_PASSAGE implies GD_FLG_SKIP_RELOC, then the relocation
may not be necessary?
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 4/4] board: vexpress64: enable bloblist for SPL handoff
2024-12-19 16:04 ` Harrison Mutai
@ 2024-12-27 16:19 ` Tom Rini
0 siblings, 0 replies; 10+ messages in thread
From: Tom Rini @ 2024-12-27 16:19 UTC (permalink / raw)
To: Harrison Mutai
Cc: David Feng, Linus Walleij, Peter Hoyes, Liviu Dudau, nd,
andre.przywara, manish.pandey2, u-boot
[-- Attachment #1: Type: text/plain, Size: 2070 bytes --]
On Thu, Dec 19, 2024 at 04:04:04PM +0000, Harrison Mutai wrote:
> On 18/12/2024 16:31, Tom Rini wrote:
> > On Wed, Dec 18, 2024 at 03:39:31PM +0000, Harrison Mutai wrote:
> >
> > > 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>
> > [snip]
> > > diff --git a/configs/vexpress_fvp_bloblist_defconfig b/configs/vexpress_fvp_bloblist_defconfig
> > > new file mode 100644
> > > index 0000000000..dcc87db872
> > > --- /dev/null
> > > +++ b/configs/vexpress_fvp_bloblist_defconfig
> > > @@ -0,0 +1,5 @@
> > > +#include <configs/vexpress_fvp_defconfig>
> > > +
> > > +CONFIG_BLOBLIST=y
> > > +CONFIG_BLOBLIST_PASSAGE=y
> > > +CONFIG_BLOBLIST_SIZE_RELOC=0x10000
> >
> > I wonder if this means we should also do:
> >
> > diff --git a/common/Kconfig b/common/Kconfig
> > index 11066ec64315..cca33ed28f32 100644
> > --- a/common/Kconfig
> > +++ b/common/Kconfig
> > @@ -1087,7 +1087,6 @@ config BLOBLIST_SIZE
> > config BLOBLIST_SIZE_RELOC
> > hex "Size of bloblist after relocation"
> > default BLOBLIST_SIZE if BLOBLIST_FIXED || BLOBLIST_ALLOC
> > - default 0x0 if BLOBLIST_PASSAGE
> > default 0x20000 if (ARM && EFI_LOADER && GENERATE_ACPI_TABLE)
> > help
> > Sets the size of the bloblist in bytes after relocation. Since U-Boot
> >
> > Because in this case we do need to set the size of the bloblist we use
> > internally to non-zero?
> >
> That makes sense. The relocation in board_f will fail, as reserve_bloblist
> relies on this value being non-zero. However, if CONFIG_BLOBLIST_PASSAGE
> implies GD_FLG_SKIP_RELOC, then the relocation may not be necessary?
We don't need to worry about the GD_FLG_SKIP_RELOC case really, it's a
corner case of the ARC architecture and nothing else. We do want to
however copy the bloblist from where it was passed to us (possibly in
the middle of memory for example) and move it to an area we can reserve.
--
Tom
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread