u-boot/lib
Patrick Rudolph 34bfe8eff8 arm: cpu: Add ACPI parking protocol support
On Arm platforms that use ACPI they cannot rely on the "spin-table"
CPU bringup usually defined in the FDT. Thus implement the
'ACPI Multi-processor Startup for ARM Platforms', also referred to as
'ACPI parking protocol'.

The ACPI parking protocol works similar to the spin-table mechanism, but
the specification also covers lots of shortcomings of the spin-table
implementations.

Every CPU defined in the ACPI MADT table has it's own 4K page where the
spinloop code and the OS mailbox resides. When selected the U-Boot board
code must make sure that the secondary CPUs enter u-boot after relocation
as well, so that they can enter the spinloop code residing in the ACPI
parking protocol pages.

The OS will then write to the mailbox and generate an IPI to release the
CPUs from the spinloop code.

For now it's only implemented on ARMv8, but can easily be extended to
other platforms, like ARMv7.

TEST: Boots all CPUs on qemu-system-aarch64 -machine raspi4b

Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Cc: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
2024-10-27 17:24:13 -06:00
..
acpi arm: cpu: Add ACPI parking protocol support 2024-10-27 17:24:13 -06:00
aes lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
at91 lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
blake2 lib: Remove duplicate newlines 2024-07-15 12:12:18 -06:00
bzip2 lib: Remove duplicate newlines 2024-07-15 12:12:18 -06:00
crypt lib: Remove duplicate newlines 2024-07-15 12:12:18 -06:00
crypto lib: crypto: fix ASYMMETRIC_KEY_TYPE dependency 2024-08-30 13:57:05 -06:00
dhry lib: Remove duplicate newlines 2024-07-15 12:12:18 -06:00
ecdsa Add mkimage secp521r1 ECDSA curve support 2024-10-02 13:35:56 -06:00
efi include: export uuid.h 2024-09-12 17:35:37 +02:00
efi_driver efi_driver: provide SBI based runtime system reset 2024-02-28 14:38:47 +01:00
efi_loader Prepare v2024.10-rc6 2024-09-30 17:48:12 -06:00
efi_selftest lib: Remove duplicate newlines 2024-07-15 12:12:18 -06:00
fwu_updates fwu: do not allow capsule processing on exceeding Trial Counter threshold 2024-09-19 10:52:50 +03:00
libavb lib: Remove duplicate newlines 2024-07-15 12:12:18 -06:00
libfdt fdt_region: move fdt_region.c to common/ from lib/libfdt/ 2020-04-26 14:23:55 -06:00
lzma lib: Remove duplicate newlines 2024-07-15 12:12:18 -06:00
lzo lib: Remove duplicate newlines 2024-07-15 12:12:18 -06:00
optee lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
rsa lib: add missing line breaks in debug messages 2024-04-10 09:34:53 -06:00
zlib zlib: Fix big performance regression 2024-07-19 16:48:07 -06:00
zstd lib: Remove duplicate newlines 2024-07-15 12:12:18 -06:00
.gitignore lib: ignore oid_registry_data.c file 2020-01-22 17:47:57 -05:00
abuf.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
addr_map.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
aes.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
alist.c alist: Add support for an allocated pointer list 2024-08-07 08:49:10 -06:00
asm-offsets.c global_data: Remove environment members if not used 2024-08-26 14:06:08 -06:00
asn1_decoder.c common: Drop linux/printk.h from common header 2023-09-24 09:54:57 -04:00
bch.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
binman.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
bitrev.c
charset.c efi_loader: add an EFI variable with the file contents 2024-04-20 08:22:24 +02:00
circbuf.c lib: Remove duplicate newlines 2024-07-15 12:12:18 -06:00
crc7.c lib: Remove duplicate newlines 2024-07-15 12:12:18 -06:00
crc8.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
crc16-ccitt.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
crc16.c crc16: Move standard CRC-16 implementation from ubifs to lib 2022-04-21 14:32:40 -04:00
crc32.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
crc32c.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
ctype.c
date.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
display_options.c include: Move snprintf to stdio.h 2024-05-22 08:55:29 -06:00
div64.c common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
elf.c lib: move phdr increment to for loop heading 2024-08-27 18:01:21 -06:00
errno.c sandbox: errno: avoid conflict with libc's errno 2021-05-24 14:21:30 -04:00
errno_str.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
fdt-libcrypto.c lib/rsa: Make fdt_add_bignum() available outside of RSA code 2021-04-14 15:06:08 -04:00
fdtdec.c fdtdec: Support separate BSS for all XPL builds 2024-10-03 11:52:16 -06:00
fdtdec_common.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
fdtdec_test.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
getopt.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
gunzip.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
gzip.c Revert "Revert "Merge patch series "zlib: Address CVE-2016-9841""" 2024-07-05 13:57:02 -06:00
hang.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
hash-checksum.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
hashtable.c lib: Remove duplicate newlines 2024-07-15 12:12:18 -06:00
hexdump.c include: Move snprintf to stdio.h 2024-05-22 08:55:29 -06:00
image-sparse.c lib: sparse: Fix error checking for write_sparse_chunk_raw 2024-02-09 09:42:04 +01:00
initcall.c initcall: Correct use of relocation offset 2024-07-04 09:25:20 -06:00
Kconfig arm: cpu: Add ACPI parking protocol support 2024-10-27 17:24:13 -06:00
ldiv.c
linux_compat.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
linux_string.c
list_sort.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
lmb.c lmb: add logic to print lmb flag strings 2024-09-03 14:08:51 -06:00
lz4.c lib: Remove duplicate newlines 2024-07-15 12:12:18 -06:00
lz4_wrapper.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
Makefile lmb: allow lmb module to be used in SPL 2024-09-03 14:08:50 -06:00
md5.c lib: Remove duplicate newlines 2024-07-15 12:12:18 -06:00
membuff.c lib: membuff: fix readline not returning line in case of overflow 2024-01-09 14:58:33 +01:00
net_utils.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
of_live.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
oid_registry.c lib: add oid registry utility 2019-12-06 16:44:20 -05:00
panic.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
physmem.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
qsort.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
rand.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
rational.c lib: rational: copy the rational fraction lib routines from Linux 2021-06-11 16:34:52 +05:30
rbtree.c
rc4.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
rtc-lib.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
semihosting.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
sha1.c lib/sha*.c: Update header list 2023-12-21 08:54:37 -05:00
sha256.c lib/sha*.c: Update header list 2023-12-21 08:54:37 -05:00
sha512.c lib/sha*.c: Update header list 2023-12-21 08:54:37 -05:00
slre.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
smbios-parser.c smbios: correctly name Structure Table Maximum Size field 2024-02-02 19:57:45 +01:00
smbios.c smbios: add extended Extended BIOS ROM Size 2024-07-31 08:29:16 +02:00
sscanf.c xen: Code style conformity 2020-08-24 14:11:31 -04:00
string.c lib: Remove duplicate newlines 2024-07-15 12:12:18 -06:00
strto.c lib: Handle a special case with str_to_list() 2024-08-07 08:49:10 -06:00
tables_csum.c lib: make table_compute_checksum() arguments const 2024-01-09 10:08:52 +01:00
time.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
tiny-printf.c tiny-printf: Correct return values 2024-10-03 11:52:16 -06:00
tpm-common.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
tpm-utils.h doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
tpm-v1.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
tpm-v2.c tpm: allow the user to select the compiled algorithms 2024-06-30 13:58:31 +02:00
tpm_api.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
tpm_tcg2.c tpm: Untangle tpm2_get_pcr_info() 2024-06-30 13:58:31 +02:00
trace.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
uuid.c include: export uuid.h 2024-09-12 17:35:37 +02:00
vsprintf.c include: export uuid.h 2024-09-12 17:35:37 +02:00
xxhash.c