u-boot/lib/acpi
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.c acpi: support 64bit in acpi_find_table for DSDT and FACS 2024-01-07 13:49:08 -07:00
acpi_device.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
acpi_dp.c include: export uuid.h 2024-09-12 17:35:37 +02:00
acpi_table.c arm: cpu: Add ACPI parking protocol support 2024-10-27 17:24:13 -06:00
acpi_writer.c acpi: Kconfig symbol CONFIG_QFW_ACPI 2024-01-07 13:49:15 -07:00
acpigen.c acpi: Add processor device 2024-10-27 17:24:13 -06:00
base.c acpi: Write pointers to tables instead of addresses 2024-01-07 13:45:07 -07:00
csrt.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
dsdt.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
facs.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
Makefile acpi: Kconfig symbol CONFIG_QFW_ACPI 2024-01-07 13:49:15 -07:00
mcfg.c lib: Remove <common.h> inclusion from these files 2023-12-21 08:54:37 -05:00
ssdt.c acpi: set creator_revision in acpi_fill_header 2024-07-03 07:36:32 +01:00