On Wed, 18 Sept 2024 at 17:27, Patrick Rudolph <patrick.rudo...@9elements.com> wrote: > > Update the generic entry point code to support the ACPI parking protocol. > The ACPI parking protocol can be used when PSCI is not available to bring > up secondary CPU cores. > > When enabled secondary CPUs will enter U-Boot proper and spin in their own > 4KiB reserved memory page, which also acts as mailbox with the OS to > release the CPU. > > TEST: Boots all CPUs on qemu-system-aarch64 -machine raspi4b > > Signed-off-by: Patrick Rudolph <patrick.rudo...@9elements.com> > --- > arch/arm/cpu/armv8/start.S | 12 ++++++++++++ > 1 file changed, 12 insertions(+) >
Reviewed-by: Simon Glass <s...@chromium.org> > diff --git a/arch/arm/cpu/armv8/start.S b/arch/arm/cpu/armv8/start.S > index 7461280261..544a4a5364 100644 > --- a/arch/arm/cpu/armv8/start.S > +++ b/arch/arm/cpu/armv8/start.S > @@ -178,6 +178,18 @@ pie_fixup_done: > branch_if_master x0, master_cpu > b spin_table_secondary_jump > /* never return */ > +#elif defined(CONFIG_ACPI_PARKING_PROTOCOL) && !defined(CONFIG_SPL_BUILD) > + branch_if_master x0, master_cpu > + /* > + * Waits for ACPI parking protocol memory to be allocated and the > spin-table > + * code to be written. Once ready the secondary CPUs will jump and > spin in > + * their own 4KiB memory region, which is also used as mailbox, until > released > + * by the OS. > + * The mechanism is similar to the DT enable-method = "spin-table", > but works > + * with ACPI enabled platforms. > + */ > + b acpi_pp_secondary_jump > + /* never return */ > #elif defined(CONFIG_ARMV8_MULTIENTRY) > branch_if_master x0, master_cpu > > -- > 2.46.0 >