On Mon, 1 Sep 2014 22:57:38 +0800, Hanjun Guo <hanjun.guo@xxxxxxxxxx> 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 > -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html