[PATCH v4 30/35] arm: cpu: Add ACPI parking protocol support
Simon Glass
sjg at chromium.org
Thu Sep 19 16:09:44 CEST 2024
On Wed, 18 Sept 2024 at 17:23, Patrick Rudolph
<patrick.rudolph at 9elements.com> wrote:
>
> 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 at 9elements.com>
> Cc: Simon Glass <sjg at chromium.org>
> Cc: Tom Rini <trini at konsulko.com>
> ---
> Changelog v2:
> - Use shorter function names
> - Drop the use of atomics, they do not work on real hardware
> - Rewrite code and verify on real hardware that CPUs are spinning
> inside their parking protocol spin-loop code
> Changelog v4:
> - Shorten names
> - Fix coding style
> - Drop extern from the headers
> ---
> arch/arm/cpu/armv8/Makefile | 1 +
> arch/arm/cpu/armv8/acpi_park_v8.S | 113 ++++++++++++++++++++++
> arch/arm/include/asm/acpi_table.h | 32 +++++++
> arch/arm/lib/acpi_table.c | 149 ++++++++++++++++++++++++++++++
> include/acpi/acpi_table.h | 10 ++
> include/bloblist.h | 1 +
> lib/Kconfig | 16 ++++
> lib/acpi/acpi_table.c | 4 +
More information about the U-Boot
mailing list