42 lines
1.4 KiB
Diff
42 lines
1.4 KiB
Diff
|
From a7edc17544709d20f800dc0898096365a3d68613 Mon Sep 17 00:00:00 2001
|
||
|
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
|
||
|
Date: Sun, 2 Jun 2019 16:36:15 +0200
|
||
|
Subject: [PATCH] acpi/arm64: ignore 5.1 FADTs that are reported as 5.0
|
||
|
|
||
|
Some Qualcomm Snapdragon based laptops built to run Microsoft Windows
|
||
|
are clearly ACPI 5.1 based, given that that is the first ACPI revision
|
||
|
that supports ARM, and introduced the FADT 'arm_boot_flags' field,
|
||
|
which has a non-zero field on those systems.
|
||
|
|
||
|
So in these cases, infer from the ARM boot flags that the FADT must be
|
||
|
5.1 or later, and treat it as 5.1.
|
||
|
|
||
|
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
|
||
|
---
|
||
|
arch/arm64/kernel/acpi.c | 10 +++++++---
|
||
|
1 file changed, 7 insertions(+), 3 deletions(-)
|
||
|
|
||
|
diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c
|
||
|
index 803f0494dd3e3..7722e85fb69c3 100644
|
||
|
--- a/arch/arm64/kernel/acpi.c
|
||
|
+++ b/arch/arm64/kernel/acpi.c
|
||
|
@@ -155,10 +155,14 @@ static int __init acpi_fadt_sanity_check(void)
|
||
|
*/
|
||
|
if (table->revision < 5 ||
|
||
|
(table->revision == 5 && fadt->minor_revision < 1)) {
|
||
|
- pr_err("Unsupported FADT revision %d.%d, should be 5.1+\n",
|
||
|
+ pr_err(FW_BUG "Unsupported FADT revision %d.%d, should be 5.1+\n",
|
||
|
table->revision, fadt->minor_revision);
|
||
|
- ret = -EINVAL;
|
||
|
- goto out;
|
||
|
+
|
||
|
+ if (!fadt->arm_boot_flags) {
|
||
|
+ ret = -EINVAL;
|
||
|
+ goto out;
|
||
|
+ }
|
||
|
+ pr_err("FADT has ARM boot flags set, assuming 5.1\n");
|
||
|
}
|
||
|
|
||
|
if (!(fadt->flags & ACPI_FADT_HW_REDUCED)) {
|
||
|
|