Hi Simon, On Thu, Sep 19, 2024 at 4:09 PM Simon Glass <s...@chromium.org> wrote: > > On Wed, 18 Sept 2024 at 17:23, Patrick Rudolph > <patrick.rudo...@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.rudo...@9elements.com> > > Cc: Simon Glass <s...@chromium.org> > > Cc: Tom Rini <tr...@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 +
There's something missing here... Is it reviewed by you?