On 28/07/2014 19:29, Sudeep Holla wrote:
On 24/07/14 14:00, Hanjun Guo wrote:
From: Al Stone <al.stone@xxxxxxxxxx>
As we want to get ACPI tables to parse and then use the information
for system initialization, we should get the RSDP (Root System
Description Pointer) first, it then locates Extended Root Description
Table (XSDT) which contains all the 64-bit physical address that
pointer to other boot-time tables.
Introduce acpi.c and its related head file in this patch to provide
fundamental needs of extern variables and functions for ACPI core,
and then get boot-time tables as needed.
- asm/cpu.h need for ACPI core and will be updated in the future to
add definitions for arch_(un)register_cpu which are required for
ACPI based physical CPU hotplug;
- asm/acenv.h for arch specific ACPICA environments and
implementation;
- asm/acpi.h for arch specific variables and functions needed by
ACPI driver core;
- acpi.c for ARM64 related ACPI implementation for ACPI driver
core;
acpi_boot_table_init() is introduced to get RSDP and boot-time tables,
it will be called in setup_arch() before paging_init(), so we should
use eary_memremap() mechanism here to get the RSDP and all the table
pointers.
Signed-off-by: Al Stone <al.stone@xxxxxxxxxx>
Signed-off-by: Graeme Gregory <graeme.gregory@xxxxxxxxxx>
Signed-off-by: Tomasz Nowicki <tomasz.nowicki@xxxxxxxxxx>
Signed-off-by: Hanjun Guo <hanjun.guo@xxxxxxxxxx>
---
arch/arm64/include/asm/acenv.h | 18 ++++++++++
arch/arm64/include/asm/acpi.h | 41 ++++++++++++++++++++++
arch/arm64/include/asm/cpu.h | 11 ++++++
arch/arm64/kernel/Makefile | 1 +
arch/arm64/kernel/acpi.c | 76
++++++++++++++++++++++++++++++++++++++++
arch/arm64/kernel/setup.c | 4 +++
6 files changed, 151 insertions(+)
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/cpu.h
create mode 100644 arch/arm64/kernel/acpi.c
This is actually required for a patch that is now upstreamed. Comment+
+/*
+ * MADT must provide at least one GICC structure
+ * for GIC initialization, so CPU will be
+ * always available in MADT on ARM64
+ */
+static inline bool acpi_has_cpu_in_madt(void)
+{
+ return 1;
+}
+
I don't see the user of this function in the series, it's better to
remove. Moreover the comment is so misleading. We will have CPU UID
not the CPU itself in MADT.
should actually say that its checking for the posibility that the CPU
can be initialised from the MADT. Its used from core in crash kernel
case where boot CPU is not necessarily CPU0 like spec demands.