xferlist: Drop old xferlist code

This is not needed now, as the startup protocol is handled in
arch-specific code early in boot.

Drop BLOBLIST_PASSAGE_MANDATORY as well, as OF_BLOBLIST is enough to
cover this. With standard passage the devicetree is accessed before the
bloblist is inited.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass
2025-04-17 06:43:24 -06:00
parent 009c239599
commit 081c6d079f
7 changed files with 5 additions and 83 deletions

View File

@@ -92,7 +92,6 @@ obj-y += psci-dt.o
obj-$(CONFIG_DEBUG_LL) += debug.o
obj-$(CONFIG_BLOBLIST) += xferlist.o
obj-$(CONFIG_GENERATE_ACPI_TABLE) += acpi_table.o
# For EABI conformant tool chains, provide eabi_compat()

View File

@@ -1,19 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0+ BSD-3-Clause */
/*
* Copyright (C) 2023 Linaro Limited
* Author: Raymond Mao <raymond.mao@linaro.org>
*/
#ifndef _XFERLIST_H_
#define _XFERLIST_H_
/*
* Boot parameters saved from start.S
* saved_args[0]: FDT base address
* saved_args[1]: Bloblist signature
* saved_args[2]: must be 0
* saved_args[3]: Bloblist base address
*/
extern unsigned long saved_args[];
#endif /* _XFERLIST_H_ */

View File

@@ -1066,12 +1066,6 @@ 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.
config BLOBLIST_PASSAGE
bool "Obtain bloblist from standard passage information"
help
@@ -1094,7 +1088,6 @@ 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

View File

@@ -504,15 +504,6 @@ int bloblist_reloc(void *to, uint to_size)
return 0;
}
/*
* Weak default function for getting bloblist from boot args.
*/
int __weak xferlist_from_boot_arg(ulong __always_unused addr,
ulong __always_unused size)
{
return -ENOENT;
}
int bloblist_init(void)
{
bool fixed = IS_ENABLED(CONFIG_BLOBLIST_FIXED);
@@ -580,23 +571,3 @@ int bloblist_init(void)
return 0;
}
int bloblist_check_reg_conv(ulong rfdt, ulong rzero, ulong rsig)
{
ulong version = BLOBLIST_REGCONV_VER;
ulong sigval;
sigval = (IS_ENABLED(CONFIG_64BIT)) ?
((BLOBLIST_MAGIC & ((1UL << BLOBLIST_REGCONV_SHIFT_64) - 1)) |
((version & BLOBLIST_REGCONV_MASK) << BLOBLIST_REGCONV_SHIFT_64)) :
((BLOBLIST_MAGIC & ((1UL << BLOBLIST_REGCONV_SHIFT_32) - 1)) |
((version & BLOBLIST_REGCONV_MASK) << BLOBLIST_REGCONV_SHIFT_32));
if (rzero || rsig != sigval ||
rfdt != (ulong)bloblist_find(BLOBLISTT_CONTROL_FDT, 0)) {
gd->bloblist = NULL; /* Reset the gd bloblist pointer */
return -EIO;
}
return 0;
}

View File

@@ -1,6 +1,7 @@
CONFIG_ARM=y
# CONFIG_ARM64_CRC32 is not set
CONFIG_ARCH_VEXPRESS64=y
CONFIG_BLOBLIST_SIZE_RELOC=0x10000
CONFIG_DEFAULT_DEVICE_TREE="arm_fvp"
CONFIG_IDENT_STRING=" arm_fvp"
@@ -8,4 +9,4 @@ CONFIG_IDENT_STRING=" arm_fvp"
CONFIG_BLOBLIST=y
CONFIG_BLOBLIST_PASSAGE=y
CONFIG_PASSAGE_IN=y
CONFIG_OF_BLOBLIST=y
CONFIG_OF_PASSAGE=y

View File

@@ -102,8 +102,8 @@ 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
\By default, ``vexpress_fvp_bloblist_defconfig`` uses the standard passage method
(CONFIG_OF_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.

View File

@@ -461,7 +461,7 @@ int bloblist_reloc(void *to, uint to_size);
* If CONFIG_BLOBLIST_ALLOC is selected, it allocates memory for a bloblist of
* size CONFIG_BLOBLIST_SIZE.
*
* If CONFIG_BLOBLIST_PASSAGE is selected, it uses the bloblist in the incoming
* If CONFIG_OF_BLOBLIST is selected, it uses the bloblist in the incoming
* standard passage. The size is detected automatically so CONFIG_BLOBLIST_SIZE
* can be 0.
*
@@ -471,27 +471,4 @@ int bloblist_reloc(void *to, uint to_size);
*/
int bloblist_init(void);
/**
* bloblist_check_reg_conv() - Check whether the bloblist is compliant to
* the register conventions according to the
* Firmware Handoff spec.
*
* @rfdt: Register that holds the FDT base address.
* @rzero: Register that must be zero.
* @rsig: Register that holds signature and register conventions version.
* Return: 0 if OK, -EIO if the bloblist is not compliant to the register
* conventions.
*/
int bloblist_check_reg_conv(ulong rfdt, ulong rzero, ulong rsig);
/**
* xferlist_from_boot_arg() - Get bloblist from the boot args and relocate it
* to the specified address.
*
* @addr: Address for the bloblist
* @size: Size of space reserved for the bloblist
* Return: 0 if OK, else on error
*/
int xferlist_from_boot_arg(ulong addr, ulong size);
#endif /* __BLOBLIST_H */