Hi Patrick, On Sat, 27 Jul 2024 at 01:20, Patrick Rudolph <[email protected]> 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

