Re: [PATCH v3 00/17] Introduce ACPI for ARM64 based on ACPI 5.1

Grant Likely
2014-09-11T13:29:47Z

On Mon, 1 Sep 2014 22:57:38 +0800, Hanjun Guo <hanjun.guo@linaro.org> wrote:
> ACPI 5.1 has been released and now be freely available for
> download [1]. It fixed some major gaps to run ACPI on ARM,
> this patch just follow the ACPI 5.1 spec and prepare the
> code to run ACPI on ARM64.
>
> ACPI 5.1 has some major changes for the following tables and
> method which are essential for ARM platforms:
> 1) MADT table updates.
> 2) FADT updates for PSCI
> 3) GTDT
>
> This patch set is the ARM64 ACPI core patches covered MADT, FADT
> and GTDT, platform board specific drivers are not covered by this
> patch set, but we provide drivers for Juno to boot with ACPI only
> in the follwing patch set for review purpose.
>
> We first introduce acpi.c and its related head file which are needed
> by ACPI core, and then get RSDP to extract all the ACPI boot-time tables.
> When all the boot-time tables (FADT, MADT, GTDT) are ready, then
> parse them to init the sytem when booted. Specifically,
> a) we use FADT to init PSCI and use PSCI to boot SMP;
> b) Use MADT for GIC init and SMP init;
> c) GTDT for arch timer init.
>
> This patch set is based on 3.17-rc2 and was tested by Graeme on Juno
> and FVP base model boot with ACPI only OK, if you want to test them,
> you can pull from acpi-5.1-v3 branch in leg/acpi repo:
> git://git.linaro.org/leg/acpi/acpi.git
>
> Updates since v2:
> - Refactor the code to make SMP/PSCI init with less sperated init
> path by Tomasz
> - make ACPI depend on EXPERT
> - Address lots of comments from Catalin, Sudeep, Geoff
> - Add Juno device ACPI driver patches for review
>
> Updates since v1:
> - Set ACPI default off on ARM64 suggested by Olof;
> - Rebase the patch set on top of linux-next branch/linux-pm tree which
> includes the ACPICA for full ACPI 5.1 support.
> - Update the document as suggested;
> - Adress lots of comments from Mark, Sudeep, Randy, Naresh, Olof, Geoff
> and more...
>
> [1]: http://www.uefi.org/sites/default/files/resources/ACPI_5_1release.pdf

I've read through this entire series now. In my mind, aside from a few
comments that I know you're addressing, this is ready. The hooks into
arm64 core code are not terribly invasive, it is nicely organized and
manageable. Get the next version out ASAP, but I would also like to see
the diffs from this version to the next so I don't need to review the
entire series again.

Regarding the requests to refactor ACPICA to work better for ARM. I
completely agree that it should be done, but I do not think it should be
a prerequisite to getting this core support merged. That kind of
refactoring is far easier to justify when it has immediate improvement
on the mainline codebase, and it gives us a working baseline to test
against. Doing it the other way around just makes things harder.

I would really like to see the next version of this series go into
linux-next. I think this is ready for some wider exposure. Have you got
a branch being pulled into Fengguang's autobuilder yet?

g.

>
> Al Stone (3):
> ARM64 / ACPI: Get RSDP and ACPI boot-time tables
> ARM64 / ACPI: Introduce early_param for "acpi"
> ARM64 / ACPI: Select ACPI_REDUCED_HARDWARE_ONLY if ACPI is enabled on
> ARM64
>
> Ashwin Chaugule (1):
> ACPI / table: Add new function to get table entries
>
> Graeme Gregory (4):
> ARM64 / ACPI: Introduce lowlevel suspend function
> ARM64 / ACPI: If we chose to boot from acpi then disable FDT
> ARM64 / ACPI: Enable ARM64 in Kconfig
> Documentation: ACPI for ARM64
>
> Hanjun Guo (8):
> ARM64: Move the init of cpu_logical_map(0) before
> unflatten_device_tree()
> ARM64 / ACPI: Make PCI optional for ACPI on ARM64
> ARM64 / ACPI: Parse FADT table to get PSCI flags for PSCI init
> ACPI / table: Print GIC information when MADT is parsed
> ARM64 / ACPI: Parse MADT for SMP initialization
> ACPI / processor: Make it possible to get CPU hardware ID via GICC
> ARM64 / ACPI: Introduce ACPI_IRQ_MODEL_GIC and register device's gsi
> ARM64 / ACPI: Parse GTDT to initialize arch timer
>
> Tomasz Nowicki (1):
> ARM64 / ACPI: Add GICv2 specific ACPI boot support
>
> Documentation/arm64/arm-acpi.txt | 218 +++++++++++++++++++++
> Documentation/kernel-parameters.txt | 3 +-
> arch/arm64/Kconfig | 3 +
> arch/arm64/include/asm/acenv.h | 18 ++
> arch/arm64/include/asm/acpi.h | 108 ++++++++++
> arch/arm64/include/asm/cpu_ops.h | 1 +
> arch/arm64/include/asm/pci.h | 11 ++
> arch/arm64/include/asm/psci.h | 3 +-
> arch/arm64/include/asm/smp.h | 5 +-
> arch/arm64/kernel/Makefile | 1 +
> arch/arm64/kernel/acpi.c | 359 ++++++++++++++++++++++++++++++++++
> arch/arm64/kernel/cpu_ops.c | 4 +-
> arch/arm64/kernel/irq.c | 5 +
> arch/arm64/kernel/psci.c | 78 +++++---
> arch/arm64/kernel/setup.c | 23 ++-
> arch/arm64/kernel/smp.c | 2 +-
> arch/arm64/kernel/time.c | 7 +
> drivers/acpi/Kconfig | 6 +-
> drivers/acpi/Makefile | 2 +-
> drivers/acpi/bus.c | 3 +
> drivers/acpi/internal.h | 5 +
> drivers/acpi/processor_core.c | 37 ++++
> drivers/acpi/tables.c | 113 +++++++++--
> drivers/clocksource/arm_arch_timer.c | 117 +++++++++--
> drivers/irqchip/irq-gic.c | 114 +++++++++++
> include/linux/acpi.h | 5 +
> include/linux/clocksource.h | 6 +
> include/linux/irqchip/arm-gic-acpi.h | 33 ++++
> include/linux/pci.h | 37 +++-
> 29 files changed, 1237 insertions(+), 90 deletions(-)
> create mode 100644 Documentation/arm64/arm-acpi.txt
> create mode 100644 arch/arm64/include/asm/acenv.h
> create mode 100644 arch/arm64/include/asm/acpi.h
> create mode 100644 arch/arm64/include/asm/pci.h
> create mode 100644 arch/arm64/kernel/acpi.c
> create mode 100644 include/linux/irqchip/arm-gic-acpi.h
>
> --
> 1.7.9.5
>