[PATCH 00/17] Implement ACPI on aarch64
Simon Glass
sjg at chromium.org
Mon Jul 29 17:28:55 CEST 2024
Hi Patrick,
On Sat, 27 Jul 2024 at 01:20, Patrick Rudolph
<patrick.rudolph at 9elements.com> wrote:
>
> Based on the existing work done by Simon Glass this series adds
> support for booting aarch64 devices using ACPI only. As target the
> Raspberry Pi4 was used, which is broadly available and allows easy
> testing of the proposed solution.
>
> The series is split into ACPI cleanups and code movements, adding
> Arm specific ACPI tables and finally SoC and mainboard related
> changes to boot a Linux on the RPi4. Currently only the mandatory
> ACPI tables are supported, allowing to boot into Linux without errors.
>
> The changes were tested on real hardware as well on QEMU v9.0:
>
> qemu-system-aarch64 -machine raspi4b -kernel u-boot.bin -cpu cortex-a72 \
> -smp 4 -m 2G -drive file=raspbian.img,format=raw,index=0 \
> -dtb bcm2711-rpi-4-b.dtb -nographic
>
> Please note that the current implementation still requires a DTB to be
> provided to U-Boot and that the DTB is used within U-Boot to load drivers,
> to disable/enable certain hardware blocks in ACPI. The DTB is not passed
> to the OS when using the bootefi cmd.
>
> Tested against FWTS V24.03.00.
>
> Known issues:
> - The QEMU support is currently limited as it doesn't emulate PCI, USB or
> ethernet devices!
> - The SMP bringup doesn't work on real hardware, but works in QEMU.
> - PCI isn't working on real hardware since the pcie_brcmstb Linux kernel
> module doesn't support ACPI yet.
Thank you for picking this up!
>
> Maximilian Brune (3):
> acpi: x86: Move SPCR and DBG2 into common code
> acpi: x86: Write FADT in common code
> serial: serial_pl01x: Implement .getinfo() for PL01
>
> Patrick Rudolph (12):
> acpi: x86: Move MADT to common code
> acpi: Fix typo
> acpi: Add define for GTDT
> arm: acpi: Add generic ACPI methods
> acpi: acpi_table: Bump revisions
> acpi: Add ACPITAB for PPTT and GTDT
> arm: mach-bcm283x: Map the ARM local MMIO as well
> arm: bcm283x: Write ACPI tables
> arm: cpu: Add ACPI parking protocol support
> arm: mach-bcm283x: Add ARMV8_MULTIENTRY support
> arm: mach-bcm283x: Enable ARMV8_MULTIENTRY
> configs: Add RPI4 ACPI defconfig
>
> Simon Glass (2):
> arm: mach-bcm283x: Bring in some header files from tianocore
> board: raspberrypi: Add ASL files from tianocore
>
> arch/arm/cpu/armv8/Makefile | 1 +
> arch/arm/cpu/armv8/parking_protocol_v8.S | 102 +++++
> arch/arm/cpu/armv8/start.S | 4 +
> arch/arm/include/asm/acpi_table.h | 70 ++++
> arch/arm/lib/Makefile | 1 +
> arch/arm/lib/acpi_table.c | 131 ++++++
> arch/arm/mach-bcm283x/Kconfig | 4 +
> arch/arm/mach-bcm283x/Makefile | 4 +
> arch/arm/mach-bcm283x/bcm2711_acpi.c | 172 ++++++++
> .../mach-bcm283x/include/mach/acpi/bcm2711.h | 152 +++++++
> .../mach-bcm283x/include/mach/acpi/bcm2836.h | 127 ++++++
> .../include/mach/acpi/bcm2836_gpio.h | 19 +
> .../include/mach/acpi/bcm2836_gpu.h | 47 +++
> .../include/mach/acpi/bcm2836_pwm.h | 33 ++
> .../include/mach/acpi/bcm2836_sdhost.h | 18 +
> .../include/mach/acpi/bcm2836_sdio.h | 21 +
> arch/arm/mach-bcm283x/init.c | 79 +++-
> arch/sandbox/lib/Makefile | 9 +-
> arch/sandbox/lib/acpi_table.c | 7 +
> arch/x86/cpu/apollolake/acpi.c | 20 +-
> arch/x86/cpu/baytrail/acpi.c | 17 +-
> arch/x86/cpu/intel_common/acpi.c | 20 +-
> arch/x86/cpu/quark/acpi.c | 19 +-
> arch/x86/cpu/tangier/acpi.c | 31 +-
> arch/x86/include/asm/acpi_table.h | 26 +-
> arch/x86/lib/acpi_table.c | 243 +-----------
> board/raspberrypi/rpi/.gitignore | 3 +
> board/raspberrypi/rpi/Makefile | 2 +
> board/raspberrypi/rpi/acpitables.h | 91 +++++
> board/raspberrypi/rpi/dsdt.asl | 290 ++++++++++++++
> board/raspberrypi/rpi/emmc.asl | 136 +++++++
> board/raspberrypi/rpi/gpudevs.asl | 372 ++++++++++++++++++
> board/raspberrypi/rpi/pci.asl | 177 +++++++++
> board/raspberrypi/rpi/pep.asl | 90 +++++
> board/raspberrypi/rpi/rhpx.asl | 195 +++++++++
> board/raspberrypi/rpi/rpi.c | 182 +++++++++
> board/raspberrypi/rpi/sdhc.asl | 111 ++++++
> board/raspberrypi/rpi/uart.asl | 208 ++++++++++
> boot/bootflow.c | 8 +-
> configs/rpi_4_acpi_defconfig | 79 ++++
> drivers/pci/pcie_brcmstb.c | 101 +----
> drivers/serial/serial_pl01x.c | 24 ++
> include/acpi/acpi_table.h | 107 +++--
> include/serial.h | 1 +
> lib/Kconfig | 15 +
> lib/acpi/acpi_table.c | 317 ++++++++++++++-
> 46 files changed, 3414 insertions(+), 472 deletions(-)
> create mode 100644 arch/arm/cpu/armv8/parking_protocol_v8.S
> create mode 100644 arch/arm/lib/acpi_table.c
> create mode 100644 arch/arm/mach-bcm283x/bcm2711_acpi.c
> create mode 100644 arch/arm/mach-bcm283x/include/mach/acpi/bcm2711.h
> create mode 100644 arch/arm/mach-bcm283x/include/mach/acpi/bcm2836.h
> create mode 100644 arch/arm/mach-bcm283x/include/mach/acpi/bcm2836_gpio.h
> create mode 100644 arch/arm/mach-bcm283x/include/mach/acpi/bcm2836_gpu.h
> create mode 100644 arch/arm/mach-bcm283x/include/mach/acpi/bcm2836_pwm.h
> create mode 100644 arch/arm/mach-bcm283x/include/mach/acpi/bcm2836_sdhost.h
> create mode 100644 arch/arm/mach-bcm283x/include/mach/acpi/bcm2836_sdio.h
> create mode 100644 arch/sandbox/lib/acpi_table.c
> create mode 100644 board/raspberrypi/rpi/.gitignore
> create mode 100644 board/raspberrypi/rpi/acpitables.h
> create mode 100644 board/raspberrypi/rpi/dsdt.asl
> create mode 100644 board/raspberrypi/rpi/emmc.asl
> create mode 100644 board/raspberrypi/rpi/gpudevs.asl
> create mode 100644 board/raspberrypi/rpi/pci.asl
> create mode 100644 board/raspberrypi/rpi/pep.asl
> create mode 100644 board/raspberrypi/rpi/rhpx.asl
> create mode 100644 board/raspberrypi/rpi/sdhc.asl
> create mode 100644 board/raspberrypi/rpi/uart.asl
> create mode 100644 configs/rpi_4_acpi_defconfig
>
> --
> 2.45.2
>
Regards,
Simon
More information about the U-Boot
mailing list