All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/20] Make ACPI core running on ARM64
@ 2014-01-17 12:24 ` Hanjun Guo
  0 siblings, 0 replies; 226+ messages in thread
From: Hanjun Guo @ 2014-01-17 12:24 UTC (permalink / raw)
  To: Rafael J. Wysocki, Catalin Marinas, Will Deacon,
	Russell King - ARM Linux
  Cc: linux-acpi, linux-arm-kernel, Grant Likely, Matthew Garrett,
	Olof Johansson, Linus Walleij, Bjorn Helgaas, Rob Herring,
	Mark Rutland, Arnd Bergmann, patches, linux-kernel,
	linaro-kernel, linaro-acpi, Charles.Garcia-Tobin, Hanjun Guo

This patch set trys to make ACPI core running on ARM64.

1. Why ACPI is needed ?
ACPI provides standard interfaces for power managment, themal
control, device enumeration and configuration and etc. So ACPI
can make OS and hardware decoupling and make people upgrade
software or hardware more easily.

ACPI is more than that. It can provide standard error report
interface called ACPI Platform Error Interface (APEI) for
RAS features, and provide standard interface for dynamic
system device reconfigurations such as CPU/memory/computer
node hot-add and hot-remove, this is especially useful
for servers.

2. Does ACPI run propably on ARM64 ?
ACPI spec 5.0 introduces hardware reduced mode, GICC/GICD,
GTDT for arch timer and etc for Socs.

This makes it possible to run ACPI on ARM/ARM64. Some
company already did that (UEFI+ACPI) on ARM platforms.
ACPI spec for ARM/ARM64 is still need to be improved and
people are working on that, but for now, we can run ACPI
propably except for some new features such as PSCI and
GICv3.

3. What we did in this patch set
patch 1-8(Hanjun Guo) will make ACPI core running on ARM64 and
make the compilation is ok on ARM64.

patch 9-12 will enumeration cpus presented by MADT table.
since PSCI is not available for ACPI 5.0, we use spin-table
method for SMP initialization.

patch 13-16 will initialize GIC in the system. ACPI only
support one GIC and only report information about GICC and
GICD, so there will some limitations for GICv3 and GICH
for GICv2 for virtualization.

patch 17-19 and patch from Amit will finish the arch timer
initialization. We get informatiom from GTDT
(Generic Timer Description Table) to initialize arch timer
and introduce a macro CLOCKSOURCE_ACPI_DECLARE to do the
same job as CLOCKSOURCE_OF_DECLARE to make it scalable for
other timers.

All the ACPI tables are available with BSD license at:
git://git.linaro.org/arm/acpi/acpi-asl.git

Changs since last RFC version:
1) Introduce some PCI functions when PCI is enabled
2) Select ACPI_REDUCED_HARDWARE_ONLY if ACPI is enabled
3) Remove ACPI based CPU hotplug code
4) Use spin-table method for SMP initialization
5) Add macro CLOCKSOURCE_ACPI_DECLARE for ACPI timer init
6) Address lots of comments and suggestions in last RFC version
7) Remove RFC tag and make all the patches seperated as two
   parts, one is "ACPI: Some patches to prepare for running ACPI
   on !x86 and !ia64", and another is this one.
8) Rebased on 3.13-rc8.

Amit Daniel Kachhap (1):
  clocksource / acpi: Add macro CLOCKSOURCE_ACPI_DECLARE

Hanjun Guo (19):
  ARM64 / ACPI: Make PCI optional for ACPI on ARM64
  ARM64 : Add dummy asm/cpu.h
  ARM64 / ACPI: Introduce the skeleton of _PDC related for ARM64
  ARM64 / ACPI: Introduce arm_core.c and its related head file
  ARM64 / ACPI: Introduce lowlevel suspend function
  ARM64 / ACPI: Introduce some PCI functions when PCI is enabled
  ARM64 / ACPI: Enable ARM64 in Kconfig
  ARM64 / ACPI: Select ACPI_REDUCED_HARDWARE_ONLY if ACPI is enabled on
    ARM64
  ARM64 / ACPI: Implement core functions for parsing MADT table
  ARM64 / ACPI: Enumerate possible/present CPU set and map logical cpu
    id to APIC id
  ARM64 / ACPI: Get the enable method for SMP initialization
  ARM64 / ACPI: Use Parked Address in GIC structure for spin table SMP
    initialisation
  ARM64 / ACPI: Define ACPI_IRQ_MODEL_GIC needed for arm
  Irqchip / gic: Set as default domain so we can access from ACPI
  ACPI / ARM64: Update acpi_register_gsi to register with the core IRQ
    subsystem
  ACPI / GIC: Initialize GIC using the information in MADT
  clocksource / arch_timer: Use ACPI GTDT table to initialize arch
    timer
  clocksource / ACPI: Introduce clocksource_acpi_init() using
    CLOCKSOURCE_ACPI_DECLARE
  ARM64 / clocksource: Use clocksource_acpi_init()

 arch/arm64/Kconfig                   |    3 +
 arch/arm64/Makefile                  |    1 +
 arch/arm64/include/asm/acpi.h        |  112 +++++++
 arch/arm64/include/asm/cpu.h         |   25 ++
 arch/arm64/include/asm/cpu_ops.h     |    1 +
 arch/arm64/include/asm/pci.h         |   20 ++
 arch/arm64/include/asm/processor.h   |    2 +
 arch/arm64/include/asm/smp.h         |    2 +-
 arch/arm64/kernel/cpu_ops.c          |    2 +-
 arch/arm64/kernel/irq.c              |    6 +
 arch/arm64/kernel/process.c          |    3 +
 arch/arm64/kernel/setup.c            |    6 +
 arch/arm64/kernel/smp.c              |   42 ++-
 arch/arm64/kernel/smp_spin_table.c   |   12 +-
 arch/arm64/kernel/time.c             |    6 +
 arch/arm64/pci/Makefile              |    1 +
 arch/arm64/pci/pci.c                 |   33 ++
 drivers/acpi/Kconfig                 |   11 +-
 drivers/acpi/Makefile                |    4 +-
 drivers/acpi/bus.c                   |    3 +
 drivers/acpi/internal.h              |    7 +
 drivers/acpi/osl.c                   |    3 +-
 drivers/acpi/plat/Makefile           |    1 +
 drivers/acpi/plat/arm-core.c         |  599 ++++++++++++++++++++++++++++++++++
 drivers/acpi/tables.c                |   21 ++
 drivers/clocksource/Makefile         |    1 +
 drivers/clocksource/arm_arch_timer.c |  101 +++++-
 drivers/clocksource/clksrc-acpi.c    |   36 ++
 drivers/irqchip/irq-gic.c            |    7 +
 include/asm-generic/vmlinux.lds.h    |   10 +
 include/linux/acpi.h                 |    7 +
 include/linux/clocksource.h          |   15 +
 include/linux/pci.h                  |   33 +-
 33 files changed, 1099 insertions(+), 37 deletions(-)
 create mode 100644 arch/arm64/include/asm/acpi.h
 create mode 100644 arch/arm64/include/asm/cpu.h
 create mode 100644 arch/arm64/include/asm/pci.h
 create mode 100644 arch/arm64/pci/Makefile
 create mode 100644 arch/arm64/pci/pci.c
 create mode 100644 drivers/acpi/plat/Makefile
 create mode 100644 drivers/acpi/plat/arm-core.c
 create mode 100644 drivers/clocksource/clksrc-acpi.c

-- 
1.7.9.5


^ permalink raw reply	[flat|nested] 226+ messages in thread

end of thread, other threads:[~2014-01-27 11:26 UTC | newest]

Thread overview: 226+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-01-17 12:24 [PATCH 00/20] Make ACPI core running on ARM64 Hanjun Guo
2014-01-17 12:24 ` Hanjun Guo
2014-01-17 12:24 ` [PATCH 01/20] ARM64 / ACPI: Make PCI optional for ACPI " Hanjun Guo
2014-01-17 12:24   ` Hanjun Guo
2014-01-17 16:00   ` Bjorn Helgaas
2014-01-17 16:00     ` Bjorn Helgaas
2014-01-17 16:00     ` Bjorn Helgaas
2014-01-20  9:33     ` Hanjun Guo
2014-01-20  9:33       ` Hanjun Guo
2014-01-20  9:33       ` Hanjun Guo
2014-01-17 12:24 ` [PATCH 02/20] ARM64 : Add dummy asm/cpu.h Hanjun Guo
2014-01-17 12:24   ` Hanjun Guo
2014-01-17 14:22   ` Sudeep Holla
2014-01-17 14:22     ` Sudeep Holla
2014-01-17 14:22     ` Sudeep Holla
2014-01-20  8:58     ` Hanjun Guo
2014-01-20  8:58       ` Hanjun Guo
2014-01-20  8:58       ` Hanjun Guo
2014-01-23 16:15   ` Catalin Marinas
2014-01-23 16:15     ` Catalin Marinas
2014-01-23 16:15     ` Catalin Marinas
2014-01-24 14:41     ` Hanjun Guo
2014-01-24 14:41       ` Hanjun Guo
2014-01-24 14:41       ` Hanjun Guo
2014-01-17 12:24 ` [PATCH 03/20] ARM64 / ACPI: Introduce the skeleton of _PDC related for ARM64 Hanjun Guo
2014-01-17 12:24   ` Hanjun Guo
2014-01-17 14:25   ` Sudeep Holla
2014-01-17 14:25     ` Sudeep Holla
2014-01-20  9:20     ` Hanjun Guo
2014-01-20  9:20       ` Hanjun Guo
2014-01-20  9:20       ` Hanjun Guo
2014-01-23 16:19       ` Catalin Marinas
2014-01-23 16:19         ` Catalin Marinas
2014-01-23 16:19         ` Catalin Marinas
2014-01-24 14:43         ` Hanjun Guo
2014-01-24 14:43           ` Hanjun Guo
2014-01-24 14:43           ` Hanjun Guo
2014-01-23 18:03   ` Catalin Marinas
2014-01-23 18:03     ` Catalin Marinas
2014-01-23 18:03     ` Catalin Marinas
2014-01-24 15:35     ` Hanjun Guo
2014-01-24 15:35       ` Hanjun Guo
2014-01-24 15:35       ` Hanjun Guo
2014-01-17 12:24 ` [PATCH 04/20] ARM64 / ACPI: Introduce arm_core.c and its related head file Hanjun Guo
2014-01-17 12:24   ` Hanjun Guo
2014-01-17 14:12   ` Will Deacon
2014-01-17 14:12     ` Will Deacon
2014-01-17 14:12     ` Will Deacon
2014-01-18  4:05     ` Hanjun Guo
2014-01-18  4:05       ` Hanjun Guo
2014-01-18  4:05       ` Hanjun Guo
2014-01-17 16:56   ` Sudeep Holla
2014-01-17 16:56     ` Sudeep Holla
2014-01-20 12:26     ` Hanjun Guo
2014-01-20 12:26       ` Hanjun Guo
2014-01-20 12:26       ` Hanjun Guo
2014-01-22 11:54   ` Lorenzo Pieralisi
2014-01-22 11:54     ` Lorenzo Pieralisi
2014-01-22 11:54     ` Lorenzo Pieralisi
2014-01-23 15:56     ` [Linaro-acpi] " Tomasz Nowicki
2014-01-23 15:56       ` Tomasz Nowicki
2014-01-23 15:56       ` Tomasz Nowicki
2014-01-24  9:09       ` Hanjun Guo
2014-01-24  9:09         ` Hanjun Guo
2014-01-24  9:09         ` Hanjun Guo
2014-01-24 12:53         ` Lorenzo Pieralisi
2014-01-24 12:53           ` Lorenzo Pieralisi
2014-01-24 12:53           ` Lorenzo Pieralisi
2014-01-24 16:44           ` Tomasz Nowicki
2014-01-24 16:44             ` Tomasz Nowicki
2014-01-24 16:44             ` Tomasz Nowicki
2014-01-17 12:24 ` [PATCH 05/20] ARM64 / ACPI: Introduce lowlevel suspend function Hanjun Guo
2014-01-17 12:24   ` Hanjun Guo
2014-01-17 12:25 ` [PATCH 06/20] ARM64 / ACPI: Introduce some PCI functions when PCI is enabled Hanjun Guo
2014-01-17 12:25   ` Hanjun Guo
2014-01-17 14:04   ` Arnd Bergmann
2014-01-17 14:04     ` Arnd Bergmann
2014-01-20  8:08     ` Hanjun Guo
2014-01-20  8:08       ` Hanjun Guo
2014-01-20  8:20       ` Arnd Bergmann
2014-01-20  8:20         ` Arnd Bergmann
2014-01-20 14:13         ` Hanjun Guo
2014-01-20 14:13           ` Hanjun Guo
2014-01-20 18:39           ` Arnd Bergmann
2014-01-20 18:39             ` Arnd Bergmann
2014-01-20 18:39             ` Arnd Bergmann
2014-01-21  3:40             ` Hanjun Guo
2014-01-21  3:40               ` Hanjun Guo
2014-01-17 12:25 ` [PATCH 07/20] ARM64 / ACPI: Enable ARM64 in Kconfig Hanjun Guo
2014-01-17 12:25   ` Hanjun Guo
2014-01-17 14:34   ` Sudeep Holla
2014-01-17 14:34     ` Sudeep Holla
2014-01-20  9:30     ` Hanjun Guo
2014-01-20  9:30       ` Hanjun Guo
2014-01-20  9:30       ` Hanjun Guo
2014-01-23 16:39   ` Catalin Marinas
2014-01-23 16:39     ` Catalin Marinas
2014-01-23 16:39     ` Catalin Marinas
2014-01-24 14:45     ` Hanjun Guo
2014-01-24 14:45       ` Hanjun Guo
2014-01-24 14:45       ` Hanjun Guo
2014-01-17 12:25 ` [PATCH 08/20] ARM64 / ACPI: Select ACPI_REDUCED_HARDWARE_ONLY if ACPI is enabled on ARM64 Hanjun Guo
2014-01-17 12:25   ` Hanjun Guo
2014-01-17 12:25 ` [PATCH 09/20] ARM64 / ACPI: Implement core functions for parsing MADT table Hanjun Guo
2014-01-17 12:25   ` Hanjun Guo
2014-01-17 14:12   ` Arnd Bergmann
2014-01-17 14:12     ` Arnd Bergmann
2014-01-20  8:49     ` Hanjun Guo
2014-01-20  8:49       ` Hanjun Guo
2014-01-23 17:54   ` Marc Zyngier
2014-01-23 17:54     ` Marc Zyngier
2014-01-23 17:54     ` Marc Zyngier
2014-01-24 15:34     ` Hanjun Guo
2014-01-24 15:34       ` Hanjun Guo
2014-01-24 15:34       ` Hanjun Guo
2014-01-24 20:57       ` Arnd Bergmann
2014-01-24 20:57         ` Arnd Bergmann
2014-01-24 20:57         ` Arnd Bergmann
2014-01-17 12:25 ` [PATCH 10/20] ARM64 / ACPI: Enumerate possible/present CPU set and map logical cpu id to APIC id Hanjun Guo
2014-01-17 12:25   ` Hanjun Guo
2014-01-17 17:37   ` Sudeep Holla
2014-01-17 17:37     ` Sudeep Holla
2014-01-17 17:37     ` Sudeep Holla
2014-01-20 14:00     ` Hanjun Guo
2014-01-20 14:00       ` Hanjun Guo
2014-01-20 14:00       ` Hanjun Guo
2014-01-22 15:53   ` Lorenzo Pieralisi
2014-01-22 15:53     ` Lorenzo Pieralisi
2014-01-22 15:53     ` Lorenzo Pieralisi
2014-01-24 14:37     ` Hanjun Guo
2014-01-24 14:37       ` Hanjun Guo
2014-01-24 14:37       ` Hanjun Guo
2014-01-24 15:35       ` Lorenzo Pieralisi
2014-01-24 15:35         ` Lorenzo Pieralisi
2014-01-24 15:35         ` Lorenzo Pieralisi
2014-01-24 16:02         ` Hanjun Guo
2014-01-24 16:02           ` Hanjun Guo
2014-01-24 16:02           ` Hanjun Guo
2014-01-17 12:25 ` [PATCH 11/20] ARM64 / ACPI: Get the enable method for SMP initialization Hanjun Guo
2014-01-17 12:25   ` Hanjun Guo
2014-01-23 17:50   ` Catalin Marinas
2014-01-23 17:50     ` Catalin Marinas
2014-01-23 17:50     ` Catalin Marinas
2014-01-24 14:57     ` Hanjun Guo
2014-01-24 14:57       ` Hanjun Guo
2014-01-24 14:57       ` Hanjun Guo
2014-01-17 12:25 ` [PATCH 12/20] ARM64 / ACPI: Use Parked Address in GIC structure for spin table SMP initialisation Hanjun Guo
2014-01-17 12:25   ` Hanjun Guo
2014-01-17 14:15   ` Arnd Bergmann
2014-01-17 14:15     ` Arnd Bergmann
2014-01-17 14:35     ` Tomasz Nowicki
2014-01-17 14:35       ` Tomasz Nowicki
2014-01-17 12:25 ` [PATCH 13/20] ARM64 / ACPI: Define ACPI_IRQ_MODEL_GIC needed for arm Hanjun Guo
2014-01-17 12:25   ` Hanjun Guo
2014-01-17 12:25 ` [PATCH 14/20] Irqchip / gic: Set as default domain so we can access from ACPI Hanjun Guo
2014-01-17 12:25   ` Hanjun Guo
2014-01-17 12:25 ` [PATCH 15/20] ACPI / ARM64: Update acpi_register_gsi to register with the core IRQ subsystem Hanjun Guo
2014-01-17 12:25   ` Hanjun Guo
2014-01-17 12:25 ` =?yes?q?=5BPATCH=2016/20=5D=20ACPI=20/=20GIC=3A=20Initialize=20GIC=20using=20the=20information=20in=20MADT?= Hanjun Guo
2014-01-17 12:25   ` =?yes?q?=5BPATCH=2016/20=5D=20ACPI=20/=20GIC=3A=20Initialize=20GIC=20using=20the=20information=20in=20MADT?= Hanjun Guo
2014-01-17 12:25 ` [PATCH 17/20] clocksource / arch_timer: Use ACPI GTDT table to initialize arch timer Hanjun Guo
2014-01-17 12:25   ` Hanjun Guo
2014-01-27 11:26   ` Mark Rutland
2014-01-27 11:26     ` Mark Rutland
2014-01-27 11:26     ` Mark Rutland
2014-01-17 12:25 ` [PATCH 18/20] clocksource / acpi: Add macro CLOCKSOURCE_ACPI_DECLARE Hanjun Guo
2014-01-17 12:25   ` Hanjun Guo
2014-01-17 14:21   ` Arnd Bergmann
2014-01-17 14:21     ` Arnd Bergmann
2014-01-20  9:08     ` Hanjun Guo
2014-01-20  9:08       ` Hanjun Guo
2014-01-22 11:46       ` Mark Rutland
2014-01-22 11:46         ` Mark Rutland
2014-01-22 11:46         ` Mark Rutland
2014-01-22 14:56         ` Arnd Bergmann
2014-01-22 14:56           ` Arnd Bergmann
2014-01-22 14:56           ` Arnd Bergmann
2014-01-22 15:17           ` Mark Rutland
2014-01-22 15:17             ` Mark Rutland
2014-01-22 15:17             ` Mark Rutland
2014-01-22 15:47             ` Arnd Bergmann
2014-01-22 15:47               ` Arnd Bergmann
2014-01-22 15:47               ` Arnd Bergmann
2014-01-24  9:19           ` Hanjun Guo
2014-01-24  9:19             ` Hanjun Guo
2014-01-24  9:19             ` Hanjun Guo
2014-01-24  0:46         ` Hanjun Guo
2014-01-24  0:46           ` Hanjun Guo
2014-01-24  0:46           ` Hanjun Guo
2014-01-22  8:26   ` Linus Walleij
2014-01-22  8:26     ` Linus Walleij
2014-01-22  8:26     ` Linus Walleij
2014-01-22 11:45     ` Mark Rutland
2014-01-22 11:45       ` Mark Rutland
2014-01-22 11:45       ` Mark Rutland
2014-01-22 14:38       ` Linus Walleij
2014-01-22 14:38         ` Linus Walleij
2014-01-22 14:38         ` Linus Walleij
2014-01-24  0:20       ` Hanjun Guo
2014-01-24  0:20         ` Hanjun Guo
2014-01-24  0:20         ` Hanjun Guo
2014-01-24 12:08         ` Mark Rutland
2014-01-24 12:08           ` Mark Rutland
2014-01-24 12:08           ` Mark Rutland
2014-01-24 15:15           ` Catalin Marinas
2014-01-24 15:15             ` Catalin Marinas
2014-01-24 15:15             ` Catalin Marinas
2014-01-24 15:44             ` Mark Rutland
2014-01-24 15:44               ` Mark Rutland
2014-01-24 15:44               ` Mark Rutland
2014-01-24 15:53             ` Hanjun Guo
2014-01-24 15:53               ` Hanjun Guo
2014-01-24 15:53               ` Hanjun Guo
2014-01-24  0:12     ` Hanjun Guo
2014-01-24  0:12       ` Hanjun Guo
2014-01-24  0:12       ` Hanjun Guo
2014-01-24 12:32       ` Mark Rutland
2014-01-24 12:32         ` Mark Rutland
2014-01-24 12:32         ` Mark Rutland
2014-01-24 15:45         ` Hanjun Guo
2014-01-24 15:45           ` Hanjun Guo
2014-01-24 15:45           ` Hanjun Guo
2014-01-17 12:25 ` [PATCH 19/20] clocksource / ACPI: Introduce clocksource_acpi_init() using CLOCKSOURCE_ACPI_DECLARE Hanjun Guo
2014-01-17 12:25   ` Hanjun Guo
2014-01-17 12:25 ` [PATCH 20/20] ARM64 / clocksource: Use clocksource_acpi_init() Hanjun Guo
2014-01-17 12:25   ` Hanjun Guo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.