Linux ACPI
 help / color / mirror / Atom feed
From: Al Stone <al.stone@linaro.org>
To: linux-acpi@vger.kernel.org
Cc: linaro-acpi@lists.linaro.org, linaro-kernel@lists.linaro.org,
	patches@linaro.org, Al Stone <al.stone@linaro.org>
Subject: [PATCH 2/4] ACPI: workaround x86 firmware with mis-matched FADT/MADT revisions
Date: Wed, 14 Oct 2015 15:26:23 -0600	[thread overview]
Message-ID: <1444857985-28844-3-git-send-email-al.stone@linaro.org> (raw)
In-Reply-To: <1444857985-28844-1-git-send-email-al.stone@linaro.org>

Looking across multiple versions of the ACPI specification, certain
versions introduce new revision numbers for the FADT and/or MADT
tables.  So, for example, an FADT indicating it is revision 4 should
not be paired with an MADT revision of anything less than 2.

However, there are systems out there that do not update the revision
fields in the FADT and MADT tables as they should.  So, for arm64, we
can be stricter in complying with the specification, but we need to
relax the checking for legacy systems.

Signed-off-by: Al Stone <al.stone@linaro.org>
---
 drivers/acpi/tables.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c
index e5cfd72..3b5ddfb 100644
--- a/drivers/acpi/tables.c
+++ b/drivers/acpi/tables.c
@@ -407,9 +407,17 @@ static int __init bad_madt_entry(struct acpi_table_header *table,
 		ms++;
 	}
 	if (!ms->num_types) {
-		pr_err("undefined version for either FADT %d.%d or MADT %d\n",
-		       major, minor, madt->header.revision);
-		return 1;
+		if (IS_ENABLED(CONFIG_ARM64)) {
+			/* Enforce this stricture on arm64... */
+			pr_err("undefined version for either FADT %d.%d or MADT %d\n",
+			       major, minor, madt->header.revision);
+			return 1;
+		} else {
+			/* ... but relax it on legacy systems so they boot */
+			pr_warn("undefined version for either FADT %d.%d or MADT %d\n",
+			        major, minor, madt->header.revision);
+			return 0;
+		}
 	}
 
 	if (entry->type >= ms->num_types) {
-- 
2.4.3


  parent reply	other threads:[~2015-10-14 21:26 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-14 21:26 [PATCH 0/4] Fix regressions uncovered by bad_madt_entry() patches Al Stone
2015-10-14 21:26 ` [PATCH 1/4] ACPI: workaround x86 firmware using reserved MADT subtable IDs Al Stone
2015-10-14 23:34   ` Rafael J. Wysocki
2015-10-14 21:26 ` Al Stone [this message]
2015-10-14 23:36   ` [PATCH 2/4] ACPI: workaround x86 firmware with mis-matched FADT/MADT revisions Rafael J. Wysocki
2015-10-14 21:26 ` [PATCH 3/4] ACPI: workaround FADT always being revision 2 Al Stone
2015-10-14 23:38   ` Rafael J. Wysocki
2015-10-14 21:26 ` [PATCH 4/4] ACPI: for bad_madt_entry(), the GIC ITS table is 20 bytes long, not 16 Al Stone
2015-10-14 23:39   ` Rafael J. Wysocki
2015-10-14 23:44 ` [PATCH 0/4] Fix regressions uncovered by bad_madt_entry() patches Rafael J. Wysocki
2015-10-15  0:23   ` Al Stone
2015-10-15  0:37     ` Rafael J. Wysocki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1444857985-28844-3-git-send-email-al.stone@linaro.org \
    --to=al.stone@linaro.org \
    --cc=linaro-acpi@lists.linaro.org \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=patches@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox