aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAl Stone <al.stone@linaro.org>2015-03-24 10:02:51 -0400
committerWill Deacon <will.deacon@arm.com>2015-03-26 11:13:08 -0400
commit6933de0ca0b7656db94f67731c8c53c7dcacae3a (patch)
tree4cd4aea11a3c57f7dd8ce846e462e95570eb9983
parentb09ca1ecf6d499d5a33f978c905d2fbcc79b55d9 (diff)
ARM64 / ACPI: Select ACPI_REDUCED_HARDWARE_ONLY if ACPI is enabled on ARM64
ACPI reduced hardware mode is disabled by default, but ARM64 can only run properly in ACPI hardware reduced mode, so select ACPI_REDUCED_HARDWARE_ONLY if ACPI is enabled on ARM64. If the firmware is not using hardware reduced ACPI mode, we will disable ACPI to avoid nightmare such as accessing some registers which are not available on ARM64. CC: Catalin Marinas <catalin.marinas@arm.com> CC: Will Deacon <will.deacon@arm.com> Reviewed-by: Grant Likely <grant.likely@linaro.org> Tested-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com> Tested-by: Yijing Wang <wangyijing@huawei.com> Tested-by: Mark Langsdorf <mlangsdo@redhat.com> Tested-by: Jon Masters <jcm@redhat.com> Tested-by: Timur Tabi <timur@codeaurora.org> Tested-by: Robert Richter <rrichter@cavium.com> Acked-by: Robert Richter <rrichter@cavium.com> Signed-off-by: Al Stone <al.stone@linaro.org> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> Signed-off-by: Will Deacon <will.deacon@arm.com>
-rw-r--r--arch/arm64/Kconfig1
-rw-r--r--arch/arm64/kernel/acpi.c8
2 files changed, 8 insertions, 1 deletions
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 1b8e97331ffb..d00ab9a71d59 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -1,5 +1,6 @@
1config ARM64 1config ARM64
2 def_bool y 2 def_bool y
3 select ACPI_REDUCED_HARDWARE_ONLY if ACPI
3 select ARCH_BINFMT_ELF_RANDOMIZE_PIE 4 select ARCH_BINFMT_ELF_RANDOMIZE_PIE
4 select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE 5 select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
5 select ARCH_HAS_GCOV_PROFILE_ALL 6 select ARCH_HAS_GCOV_PROFILE_ALL
diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c
index 6468f8898530..5819ef7aa2c3 100644
--- a/arch/arm64/kernel/acpi.c
+++ b/arch/arm64/kernel/acpi.c
@@ -303,6 +303,11 @@ static int __init acpi_parse_fadt(struct acpi_table_header *table)
303 */ 303 */
304 if (table->revision > 5 || 304 if (table->revision > 5 ||
305 (table->revision == 5 && fadt->minor_revision >= 1)) { 305 (table->revision == 5 && fadt->minor_revision >= 1)) {
306 if (!acpi_gbl_reduced_hardware) {
307 pr_err("Not hardware reduced ACPI mode, will not be supported\n");
308 goto disable_acpi;
309 }
310
306 /* 311 /*
307 * ACPI 5.1 only has two explicit methods to boot up SMP, 312 * ACPI 5.1 only has two explicit methods to boot up SMP,
308 * PSCI and Parking protocol, but the Parking protocol is 313 * PSCI and Parking protocol, but the Parking protocol is
@@ -319,8 +324,9 @@ static int __init acpi_parse_fadt(struct acpi_table_header *table)
319 324
320 pr_warn("Unsupported FADT revision %d.%d, should be 5.1+, will disable ACPI\n", 325 pr_warn("Unsupported FADT revision %d.%d, should be 5.1+, will disable ACPI\n",
321 table->revision, fadt->minor_revision); 326 table->revision, fadt->minor_revision);
322 disable_acpi();
323 327
328disable_acpi:
329 disable_acpi();
324 return -EINVAL; 330 return -EINVAL;
325} 331}
326 332