From: Patrick Rudolph <patrick.rudolph@9elements.com>
To: u-boot@lists.denx.de, linux-kernel@vger.kernel.org
Cc: Patrick Rudolph <patrick.rudolph@9elements.com>,
Simon Glass <sjg@chromium.org>, Tom Rini <trini@konsulko.com>
Subject: [PATCH v5 31/36] armv8: cpu: Enable ACPI parking protocol
Date: Thu, 26 Sep 2024 09:59:19 +0200 [thread overview]
Message-ID: <20240926080021.148031-32-patrick.rudolph@9elements.com> (raw)
In-Reply-To: <20240926080021.148031-1-patrick.rudolph@9elements.com>
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.rudolph@9elements.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
---
arch/arm/cpu/armv8/start.S | 12 ++++++++++++
1 file changed, 12 insertions(+)
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
next prev parent reply other threads:[~2024-09-26 8:10 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-26 7:58 [PATCH v5 00/36] Implement ACPI on aarch64 Patrick Rudolph
2024-09-26 7:58 ` [PATCH v5 01/36] acpi: x86: Move SPCR and DBG2 into common code Patrick Rudolph
2024-09-26 7:58 ` [PATCH v5 02/36] acpi: x86: Write FADT in " Patrick Rudolph
2024-09-26 7:58 ` [PATCH v5 03/36] acpi: x86: Move MADT to " Patrick Rudolph
2024-09-26 7:58 ` [PATCH v5 04/36] acpi: Fix typo Patrick Rudolph
2024-09-26 7:58 ` [PATCH v5 05/36] serial: serial_pl01x: Implement .getinfo() for PL01 Patrick Rudolph
2024-09-26 7:58 ` [PATCH v5 06/36] acpi: Add define for GTDT Patrick Rudolph
2024-09-26 7:58 ` [PATCH v5 07/36] arm: acpi: Add generic ACPI methods Patrick Rudolph
2024-09-26 7:58 ` [PATCH v5 08/36] acpi: Add fill_madt to acpi_ops Patrick Rudolph
2024-09-26 7:58 ` [PATCH v5 09/36] acpi: acpi_table: Bump revisions Patrick Rudolph
2024-09-26 7:58 ` [PATCH v5 10/36] acpi: Add ACPITAB for PPTT and GTDT Patrick Rudolph
2024-09-26 7:58 ` [PATCH v5 11/36] acpi: acpi_table: Add IORT support Patrick Rudolph
2024-09-26 7:59 ` [PATCH v5 12/36] acpi: Move function prototype Patrick Rudolph
2024-09-26 7:59 ` [PATCH v5 13/36] acpi_table: Support platforms with unusable RSDT Patrick Rudolph
2024-09-26 7:59 ` [PATCH v5 14/36] efi_loader: Allocate and write ACPI tables Patrick Rudolph
2024-09-26 21:04 ` Simon Glass
2024-09-26 7:59 ` [PATCH v5 15/36] acpi: Add processor device Patrick Rudolph
2024-09-26 7:59 ` [PATCH v5 16/36] drivers: usb: Add generic XHCI Patrick Rudolph
2024-09-26 21:28 ` Simon Glass
2024-09-26 7:59 ` [PATCH v5 17/36] drivers: ata: Rename ahci_mvebu Patrick Rudolph
2024-09-26 22:10 ` Tony Dinh
2024-09-26 7:59 ` [PATCH v5 18/36] drivers/cpu: Add generic armv8 cpu driver Patrick Rudolph
2024-09-26 7:59 ` [PATCH v5 19/36] arm: gic-v3-its: Rename objects Patrick Rudolph
2024-09-26 7:59 ` [PATCH v5 20/36] arm: gic-v3-its: Implement of_xlate Patrick Rudolph
2024-09-26 7:59 ` [PATCH v5 21/36] arm: lib: Add GICV2 driver Patrick Rudolph
2024-09-26 7:59 ` [PATCH v5 22/36] drivers: misc: irq-uclass: Update irq_get_by_index Patrick Rudolph
2024-09-26 7:59 ` [PATCH v5 23/36] drivers/arm: Implement acpi_fill_madt Patrick Rudolph
2024-09-26 7:59 ` [PATCH v5 24/36] common: Enable BLOBLIST_TABLES on arm Patrick Rudolph
2024-09-26 7:59 ` [PATCH v5 25/36] board: emulation: Add QEMU sbsa support Patrick Rudolph
2024-09-26 21:28 ` Simon Glass
2024-10-01 10:49 ` Patrick Rudolph
2024-10-01 15:05 ` Tom Rini
2024-10-01 15:17 ` Patrick Rudolph
2024-09-26 7:59 ` [PATCH v5 26/36] arm: mach-bcm283x: Map the ARM local MMIO as well Patrick Rudolph
2024-09-26 7:59 ` [PATCH v5 27/36] arm: mach-bcm283x: Bring in some header files from tianocore Patrick Rudolph
2024-09-26 7:59 ` [PATCH v5 28/36] arm: bcm283x: Generate ACPI tables Patrick Rudolph
2024-09-26 7:59 ` [PATCH v5 29/36] board: raspberrypi: Add ASL files from tianocore Patrick Rudolph
2024-09-26 7:59 ` [PATCH v5 30/36] arm: cpu: Add ACPI parking protocol support Patrick Rudolph
2024-09-26 21:28 ` Simon Glass
2024-09-26 7:59 ` Patrick Rudolph [this message]
2024-09-26 7:59 ` [PATCH v5 32/36] arm: mach-bcm283x: Add ARMV8_MULTIENTRY support Patrick Rudolph
2024-09-26 21:29 ` Simon Glass
2024-09-26 7:59 ` [PATCH v5 33/36] arm: mach-bcm283x: Enable ARMV8_MULTIENTRY Patrick Rudolph
2024-09-26 7:59 ` [PATCH v5 34/36] bloblist: Fix use of uninitialized variable Patrick Rudolph
2024-09-26 7:59 ` [PATCH v5 35/36] configs: Add RPI4 ACPI defconfig Patrick Rudolph
2024-09-27 3:31 ` Tom Rini
2024-09-26 7:59 ` [PATCH v5 36/36] azure-pipelines: Enable qemu_sbsa Patrick Rudolph
2024-09-26 21:29 ` Simon Glass
2024-09-27 3:32 ` Tom Rini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240926080021.148031-32-patrick.rudolph@9elements.com \
--to=patrick.rudolph@9elements.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sjg@chromium.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox