ARM64: ACPI: enable ACPI_SPCR_TABLE
SBBR mentions SPCR as a mandatory ACPI table. So enable it for ARM64 Earlycon should be set up as early as possible. ACPI boot tables are mapped in arch/arm64/kernel/acpi.c:acpi_boot_table_init() that is called from setup_arch() and that's where we parse SPCR. So it has to be opted-in per-arch. When ACPI_SPCR_TABLE is defined initialization of DT earlycon is deferred until the DT/ACPI decision is done. Initialize DT earlycon if ACPI is disabled. Acked-by: Will Deacon <will.deacon@arm.com> Acked-by: Hanjun Guo <hanjun.guo@linaro.org> Signed-off-by: Aleksey Makarov <aleksey.makarov@linaro.org> Tested-by: Kefeng Wang <wangkefeng.wang@huawei.com> Tested-by: Christopher Covington <cov@codeaurora.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
ad1696f6f0
commit
888125a712
@ -4,6 +4,7 @@ config ARM64
|
|||||||
select ACPI_GENERIC_GSI if ACPI
|
select ACPI_GENERIC_GSI if ACPI
|
||||||
select ACPI_REDUCED_HARDWARE_ONLY if ACPI
|
select ACPI_REDUCED_HARDWARE_ONLY if ACPI
|
||||||
select ACPI_MCFG if ACPI
|
select ACPI_MCFG if ACPI
|
||||||
|
select ACPI_SPCR_TABLE if ACPI
|
||||||
select ARCH_HAS_DEVMEM_IS_ALLOWED
|
select ARCH_HAS_DEVMEM_IS_ALLOWED
|
||||||
select ARCH_HAS_ACPI_TABLE_UPGRADE if ACPI
|
select ARCH_HAS_ACPI_TABLE_UPGRADE if ACPI
|
||||||
select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
|
select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include <linux/memblock.h>
|
#include <linux/memblock.h>
|
||||||
#include <linux/of_fdt.h>
|
#include <linux/of_fdt.h>
|
||||||
#include <linux/smp.h>
|
#include <linux/smp.h>
|
||||||
|
#include <linux/serial_core.h>
|
||||||
|
|
||||||
#include <asm/cputype.h>
|
#include <asm/cputype.h>
|
||||||
#include <asm/cpu_ops.h>
|
#include <asm/cpu_ops.h>
|
||||||
@ -206,7 +207,7 @@ void __init acpi_boot_table_init(void)
|
|||||||
if (param_acpi_off ||
|
if (param_acpi_off ||
|
||||||
(!param_acpi_on && !param_acpi_force &&
|
(!param_acpi_on && !param_acpi_force &&
|
||||||
of_scan_flat_dt(dt_scan_depth1_nodes, NULL)))
|
of_scan_flat_dt(dt_scan_depth1_nodes, NULL)))
|
||||||
return;
|
goto done;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ACPI is disabled at this point. Enable it in order to parse
|
* ACPI is disabled at this point. Enable it in order to parse
|
||||||
@ -226,6 +227,14 @@ void __init acpi_boot_table_init(void)
|
|||||||
if (!param_acpi_force)
|
if (!param_acpi_force)
|
||||||
disable_acpi();
|
disable_acpi();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
done:
|
||||||
|
if (acpi_disabled) {
|
||||||
|
if (earlycon_init_is_deferred)
|
||||||
|
early_init_dt_scan_chosen_stdout();
|
||||||
|
} else {
|
||||||
|
parse_spcr(earlycon_init_is_deferred);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_ACPI_APEI
|
#ifdef CONFIG_ACPI_APEI
|
||||||
|
Reference in New Issue
Block a user