diff for duplicates of <561EB923.6010109@redhat.com> diff --git a/a/2.txt b/N1/2.txt index 2a18a24..dfa8185 100644 --- a/a/2.txt +++ b/N1/2.txt @@ -1,4 +1,4 @@ ->From 52a2011c4998674d80c4456e6fd8ba11beaee65c Mon Sep 17 00:00:00 2001 +From 52a2011c4998674d80c4456e6fd8ba11beaee65c Mon Sep 17 00:00:00 2001 From: Al Stone <ahs3@redhat.com> Date: Tue, 13 Oct 2015 15:29:15 -0600 Subject: [PATCH 1/4] ACPI: workaround x86 firmware using reserved MADT diff --git a/a/3.txt b/N1/3.txt index be920df..5b9aabb 100644 --- a/a/3.txt +++ b/N1/3.txt @@ -1,4 +1,4 @@ ->From 8b7e93421a1bd3a35ed6200fb778b87e9bff34c5 Mon Sep 17 00:00:00 2001 +From 8b7e93421a1bd3a35ed6200fb778b87e9bff34c5 Mon Sep 17 00:00:00 2001 From: Al Stone <ahs3@redhat.com> Date: Tue, 13 Oct 2015 15:51:13 -0600 Subject: [PATCH 2/4] ACPI: workaround x86 firmware with mis-matched FADT/MADT diff --git a/a/4.txt b/N1/4.txt index 4d55e46..47d578e 100644 --- a/a/4.txt +++ b/N1/4.txt @@ -1,4 +1,4 @@ ->From 773dd448360098b6faf6c171dd716371d603f3ef Mon Sep 17 00:00:00 2001 +From 773dd448360098b6faf6c171dd716371d603f3ef Mon Sep 17 00:00:00 2001 From: Al Stone <ahs3@redhat.com> Date: Tue, 13 Oct 2015 16:23:21 -0600 Subject: [PATCH 3/4] ACPI: workaround FADT always being revision 2 diff --git a/a/5.txt b/N1/5.txt index 584e51c..2260ca1 100644 --- a/a/5.txt +++ b/N1/5.txt @@ -1,4 +1,4 @@ ->From 6d3189ccfcbac9a61e6502df70499bd2ee808509 Mon Sep 17 00:00:00 2001 +From 6d3189ccfcbac9a61e6502df70499bd2ee808509 Mon Sep 17 00:00:00 2001 From: Al Stone <ahs3@redhat.com> Date: Tue, 13 Oct 2015 16:31:50 -0600 Subject: [PATCH 4/4] ACPI: for bad_madt_entry(), the GIC ITS table is 20 bytes diff --git a/a/content_digest b/N1/content_digest index af2844e..9406fe8 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -10,7 +10,7 @@ "ref\0561C8351.3030304@erley.org\0" "From\0Al Stone <ahs3@redhat.com>\0" "Subject\0Re: [Linaro-acpi] [PATCH v5 0/5] Provide better MADT subtable sanity checks\0" - "Date\0Wed, 14 Oct 2015 14:20:51 -0600\0" + "Date\0Wed, 14 Oct 2015 20:20:51 +0000\0" "To\0Pat Erley <pat-lkml@erley.org>" Al Stone <al.stone@linaro.org> Hanjun Guo <hanjun.guo@linaro.org> @@ -128,7 +128,7 @@ "\01:2\0" "fn\00001-ACPI-workaround-x86-firmware-using-reserved-MADT-sub.patch\0" "b\0" - ">From 52a2011c4998674d80c4456e6fd8ba11beaee65c Mon Sep 17 00:00:00 2001\n" + "From 52a2011c4998674d80c4456e6fd8ba11beaee65c Mon Sep 17 00:00:00 2001\n" "From: Al Stone <ahs3@redhat.com>\n" "Date: Tue, 13 Oct 2015 15:29:15 -0600\n" "Subject: [PATCH 1/4] ACPI: workaround x86 firmware using reserved MADT\n" @@ -179,7 +179,7 @@ "\01:3\0" "fn\00002-ACPI-workaround-x86-firmware-with-mis-matched-FADT-M.patch\0" "b\0" - ">From 8b7e93421a1bd3a35ed6200fb778b87e9bff34c5 Mon Sep 17 00:00:00 2001\n" + "From 8b7e93421a1bd3a35ed6200fb778b87e9bff34c5 Mon Sep 17 00:00:00 2001\n" "From: Al Stone <ahs3@redhat.com>\n" "Date: Tue, 13 Oct 2015 15:51:13 -0600\n" "Subject: [PATCH 2/4] ACPI: workaround x86 firmware with mis-matched FADT/MADT\n" @@ -230,7 +230,7 @@ "\01:4\0" "fn\00003-ACPI-workaround-FADT-always-being-revision-2.patch\0" "b\0" - ">From 773dd448360098b6faf6c171dd716371d603f3ef Mon Sep 17 00:00:00 2001\n" + "From 773dd448360098b6faf6c171dd716371d603f3ef Mon Sep 17 00:00:00 2001\n" "From: Al Stone <ahs3@redhat.com>\n" "Date: Tue, 13 Oct 2015 16:23:21 -0600\n" "Subject: [PATCH 3/4] ACPI: workaround FADT always being revision 2\n" @@ -312,7 +312,7 @@ "\01:5\0" "fn\00004-ACPI-for-bad_madt_entry-the-GIC-ITS-table-is-20-byte.patch\0" "b\0" - ">From 6d3189ccfcbac9a61e6502df70499bd2ee808509 Mon Sep 17 00:00:00 2001\n" + "From 6d3189ccfcbac9a61e6502df70499bd2ee808509 Mon Sep 17 00:00:00 2001\n" "From: Al Stone <ahs3@redhat.com>\n" "Date: Tue, 13 Oct 2015 16:31:50 -0600\n" "Subject: [PATCH 4/4] ACPI: for bad_madt_entry(), the GIC ITS table is 20 bytes\n" @@ -352,4 +352,4 @@ "-- \n" 2.4.3 -85546ec3f0bad433bac00109ffeeb2d93b3548062816186ba92e1e451bbbaa2d +f2d7aa87648bace2ce5a51394ef525afe94c09c4ccc429dda9aa685cc697d208
diff --git a/a/1.txt b/N2/1.txt index aee2b6d..dc34161 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -95,5 +95,33 @@ al Al Stone Software Engineer Red Hat, Inc. -ahs3@redhat.com +ahs3 at redhat.com ----------------------------------- +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: 0001-ACPI-workaround-x86-firmware-using-reserved-MADT-sub.patch +Type: text/x-patch +Size: 1788 bytes +Desc: not available +URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151014/461d0443/attachment-0004.bin> +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: 0002-ACPI-workaround-x86-firmware-with-mis-matched-FADT-M.patch +Type: text/x-patch +Size: 1756 bytes +Desc: not available +URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151014/461d0443/attachment-0005.bin> +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: 0003-ACPI-workaround-FADT-always-being-revision-2.patch +Type: text/x-patch +Size: 2909 bytes +Desc: not available +URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151014/461d0443/attachment-0006.bin> +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: 0004-ACPI-for-bad_madt_entry-the-GIC-ITS-table-is-20-byte.patch +Type: text/x-patch +Size: 1627 bytes +Desc: not available +URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151014/461d0443/attachment-0007.bin> diff --git a/a/2.hdr b/a/2.hdr deleted file mode 100644 index a96028b..0000000 --- a/a/2.hdr +++ /dev/null @@ -1,6 +0,0 @@ -Content-Type: text/x-patch; - name="0001-ACPI-workaround-x86-firmware-using-reserved-MADT-sub.patch" -Content-Transfer-Encoding: 7bit -Content-Disposition: attachment; - filename*0="0001-ACPI-workaround-x86-firmware-using-reserved-MADT-sub.pa"; - filename*1="tch" diff --git a/a/2.txt b/a/2.txt deleted file mode 100644 index 2a18a24..0000000 --- a/a/2.txt +++ /dev/null @@ -1,48 +0,0 @@ ->From 52a2011c4998674d80c4456e6fd8ba11beaee65c Mon Sep 17 00:00:00 2001 -From: Al Stone <ahs3@redhat.com> -Date: Tue, 13 Oct 2015 15:29:15 -0600 -Subject: [PATCH 1/4] ACPI: workaround x86 firmware using reserved MADT - subtable IDs - -According to the ACPI specification, version 6.0, table 5-46, MADT -subtable IDs in the range of 0x10-0x7f are reserved for possible -future use by the specification. The function bad_madt_entry() tries -to enforce the spec, but it turns out there are x86 machines that use -0x7f even though they should not. - -So, continue to enforce this rule for arm64, since we're starting out -fresh, but relax it for systems already out there so we don't keep them -from booting. - -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 a2ed38a..e5cfd72 100644 ---- a/drivers/acpi/tables.c -+++ b/drivers/acpi/tables.c -@@ -413,9 +413,17 @@ static int __init bad_madt_entry(struct acpi_table_header *table, - } - - if (entry->type >= ms->num_types) { -- pr_err("undefined MADT subtable type for FADT %d.%d: %d (length %d)\n", -- major, minor, entry->type, entry->length); -- return 1; -+ if (IS_ENABLED(CONFIG_ARM64)) { -+ /* Enforce this stricture on arm64... */ -+ pr_err("undefined MADT subtable type for FADT %d.%d: %d (length %d)\n", -+ major, minor, entry->type, entry->length); -+ return 1; -+ } else { -+ /* ... but relax it on legacy systems so they boot */ -+ pr_warn("undefined MADT subtable type for FADT %d.%d: %d (length %d)\n", -+ major, minor, entry->type, entry->length); -+ return 0; -+ } - } - - /* verify that the table is allowed for this version of the spec */ --- -2.4.3 diff --git a/a/3.hdr b/a/3.hdr deleted file mode 100644 index 8124d72..0000000 --- a/a/3.hdr +++ /dev/null @@ -1,6 +0,0 @@ -Content-Type: text/x-patch; - name="0002-ACPI-workaround-x86-firmware-with-mis-matched-FADT-M.patch" -Content-Transfer-Encoding: 7bit -Content-Disposition: attachment; - filename*0="0002-ACPI-workaround-x86-firmware-with-mis-matched-FADT-M.pa"; - filename*1="tch" diff --git a/a/3.txt b/a/3.txt deleted file mode 100644 index be920df..0000000 --- a/a/3.txt +++ /dev/null @@ -1,48 +0,0 @@ ->From 8b7e93421a1bd3a35ed6200fb778b87e9bff34c5 Mon Sep 17 00:00:00 2001 -From: Al Stone <ahs3@redhat.com> -Date: Tue, 13 Oct 2015 15:51:13 -0600 -Subject: [PATCH 2/4] ACPI: workaround x86 firmware with mis-matched FADT/MADT - revisions - -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 diff --git a/a/4.hdr b/a/4.hdr deleted file mode 100644 index 2f0435c..0000000 --- a/a/4.hdr +++ /dev/null @@ -1,5 +0,0 @@ -Content-Type: text/x-patch; - name="0003-ACPI-workaround-FADT-always-being-revision-2.patch" -Content-Transfer-Encoding: 7bit -Content-Disposition: attachment; - filename="0003-ACPI-workaround-FADT-always-being-revision-2.patch" diff --git a/a/4.txt b/a/4.txt deleted file mode 100644 index 4d55e46..0000000 --- a/a/4.txt +++ /dev/null @@ -1,79 +0,0 @@ ->From 773dd448360098b6faf6c171dd716371d603f3ef Mon Sep 17 00:00:00 2001 -From: Al Stone <ahs3@redhat.com> -Date: Tue, 13 Oct 2015 16:23:21 -0600 -Subject: [PATCH 3/4] ACPI: workaround FADT always being revision 2 - -In some environments, the FADT revision number is always 2, independent -of any other factors indicating that it may be a newer revision. So, -we cannot rely on the FADT and MADT revisions being in proper step. For -those environments, relax the checking so we only enforce the size check, -even if we do issue warnings on other problems. - -If we do not relax the rules, these systems will not boot as they have in -the past. - -Signed-off-by: Al Stone <al.stone@linaro.org> ---- - drivers/acpi/tables.c | 34 +++++++++++++++++++++++++++++----- - 1 file changed, 29 insertions(+), 5 deletions(-) - -diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c -index 3b5ddfb..790d4b0 100644 ---- a/drivers/acpi/tables.c -+++ b/drivers/acpi/tables.c -@@ -416,7 +416,6 @@ static int __init bad_madt_entry(struct acpi_table_header *table, - /* ... 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; - } - } - -@@ -430,16 +429,41 @@ static int __init bad_madt_entry(struct acpi_table_header *table, - /* ... but relax it on legacy systems so they boot */ - pr_warn("undefined MADT subtable type for FADT %d.%d: %d (length %d)\n", - major, minor, entry->type, entry->length); -- return 0; - } - } - - /* verify that the table is allowed for this version of the spec */ - len = ms->lengths[entry->type]; - if (!len) { -- pr_err("MADT subtable %d not defined for FADT %d.%d\n", -- entry->type, major, minor); -- return 1; -+ if (IS_ENABLED(CONFIG_ARM64)) { -+ pr_err("MADT subtable %d not defined for FADT %d.%d\n", -+ entry->type, major, minor); -+ return 1; -+ } else { -+ pr_warn("MADT subtable %d not defined for FADT %d.%d\n", -+ entry->type, major, minor); -+ } -+ } -+ -+ /* -+ * When we get this far, we may have issued warnings on either -+ * a mismatch in FADT/MADT revisions, or have noted that the subtable -+ * ID is not defined for the MADT revision we're using. On some -+ * architectures, this is an error, but for legacy systems, we need -+ * to push on with other checks of the subtable. -+ * -+ * In fact, there are environments where the *only* value the FADT -+ * revision will ever have is 2, regardless of anything else. So, -+ * for those systems to boot, we have to pretend the MADT is the -+ * latest version to allow all known subtables since we have no way -+ * to determine what revision it should be. -+ */ -+ if (!IS_ENABLED(CONFIG_ARM64) && major == 2) { -+ ms = spec_info; -+ while (ms->num_types != 0) -+ ms++; -+ ms--; -+ len = ms->lengths[entry->type]; - } - - /* verify that the length is what we expect */ --- -2.4.3 diff --git a/a/5.hdr b/a/5.hdr deleted file mode 100644 index 30f40dc..0000000 --- a/a/5.hdr +++ /dev/null @@ -1,6 +0,0 @@ -Content-Type: text/x-patch; - name="0004-ACPI-for-bad_madt_entry-the-GIC-ITS-table-is-20-byte.patch" -Content-Transfer-Encoding: 7bit -Content-Disposition: attachment; - filename*0="0004-ACPI-for-bad_madt_entry-the-GIC-ITS-table-is-20-byte.pa"; - filename*1="tch" diff --git a/a/5.txt b/a/5.txt deleted file mode 100644 index 584e51c..0000000 --- a/a/5.txt +++ /dev/null @@ -1,39 +0,0 @@ ->From 6d3189ccfcbac9a61e6502df70499bd2ee808509 Mon Sep 17 00:00:00 2001 -From: Al Stone <ahs3@redhat.com> -Date: Tue, 13 Oct 2015 16:31:50 -0600 -Subject: [PATCH 4/4] ACPI: for bad_madt_entry(), the GIC ITS table is 20 bytes - long, not 16 - -Correct a typo where bad_madt_entry() expected the MADT GIC ITS subtable -to be 16 bytes long, but it is actually 20 bytes. This is a cut'n'paste -error picked up from the spec and inadvertently replicated in code. - -Signed-off-by: Al Stone <al.stone@linaro.org> ---- - drivers/acpi/tables.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c -index 790d4b0..1b7c13e 100644 ---- a/drivers/acpi/tables.c -+++ b/drivers/acpi/tables.c -@@ -292,7 +292,7 @@ void acpi_table_print_madt_entry(struct acpi_subtable_header *header) - * GICD 0xc 24 24 24 - * GICv2m MSI 0xd 24 24 - * GICR 0xe 16 16 -- * GIC ITS 0xf 16 -+ * GIC ITS 0xf 20 - * - * In the table, each length entry is what should be in the length - * field of the subtable, and -- in general -- it should match the -@@ -366,7 +366,7 @@ static struct acpi_madt_subtable_lengths spec_info[] = { - .madt_version = 3, - .num_types = 16, - .lengths = { 8, 12, 10, 8, 6, 12, 16, SUBTABLE_VARIABLE, -- 16, 16, 12, 80, 24, 24, 16, 16 } -+ 16, 16, 12, 80, 24, 24, 16, 20 } - }, - { /* terminator */ - .major_version = 0, --- -2.4.3 diff --git a/a/content_digest b/N2/content_digest index af2844e..3813f9f 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -8,23 +8,11 @@ "ref\0561B2FCA.1010504@erley.org\0" "ref\0561C1D87.8010106@linaro.org\0" "ref\0561C8351.3030304@erley.org\0" - "From\0Al Stone <ahs3@redhat.com>\0" - "Subject\0Re: [Linaro-acpi] [PATCH v5 0/5] Provide better MADT subtable sanity checks\0" + "From\0ahs3@redhat.com (Al Stone)\0" + "Subject\0[Linaro-acpi] [PATCH v5 0/5] Provide better MADT subtable sanity checks\0" "Date\0Wed, 14 Oct 2015 14:20:51 -0600\0" - "To\0Pat Erley <pat-lkml@erley.org>" - Al Stone <al.stone@linaro.org> - Hanjun Guo <hanjun.guo@linaro.org> - " Rafael J. Wysocki <rjw@rjwysocki.net>\0" - "Cc\0linaro-kernel@lists.linaro.org" - linux-ia64@vger.kernel.org - linaro-acpi@lists.linaro.org - linux-pm@vger.kernel.org - linux-kernel@vger.kernel.org - linux-acpi@vger.kernel.org - patches@linaro.org - Hanjun Guo <guohanjun@huawei.com> - " linux-arm-kernel@lists.infradead.org\0" - "\01:1\0" + "To\0linux-arm-kernel@lists.infradead.org\0" + "\00:1\0" "b\0" "On 10/12/2015 10:06 PM, Pat Erley wrote:\n" "> On 10/12/2015 01:52 PM, Al Stone wrote:\n" @@ -123,233 +111,35 @@ "Al Stone\n" "Software Engineer\n" "Red Hat, Inc.\n" - "ahs3@redhat.com\n" - ----------------------------------- - "\01:2\0" - "fn\00001-ACPI-workaround-x86-firmware-using-reserved-MADT-sub.patch\0" - "b\0" - ">From 52a2011c4998674d80c4456e6fd8ba11beaee65c Mon Sep 17 00:00:00 2001\n" - "From: Al Stone <ahs3@redhat.com>\n" - "Date: Tue, 13 Oct 2015 15:29:15 -0600\n" - "Subject: [PATCH 1/4] ACPI: workaround x86 firmware using reserved MADT\n" - " subtable IDs\n" - "\n" - "According to the ACPI specification, version 6.0, table 5-46, MADT\n" - "subtable IDs in the range of 0x10-0x7f are reserved for possible\n" - "future use by the specification. The function bad_madt_entry() tries\n" - "to enforce the spec, but it turns out there are x86 machines that use\n" - "0x7f even though they should not.\n" - "\n" - "So, continue to enforce this rule for arm64, since we're starting out\n" - "fresh, but relax it for systems already out there so we don't keep them\n" - "from booting.\n" - "\n" - "Signed-off-by: Al Stone <al.stone@linaro.org>\n" - "---\n" - " drivers/acpi/tables.c | 14 +++++++++++---\n" - " 1 file changed, 11 insertions(+), 3 deletions(-)\n" - "\n" - "diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c\n" - "index a2ed38a..e5cfd72 100644\n" - "--- a/drivers/acpi/tables.c\n" - "+++ b/drivers/acpi/tables.c\n" - "@@ -413,9 +413,17 @@ static int __init bad_madt_entry(struct acpi_table_header *table,\n" - " \t}\n" - " \n" - " \tif (entry->type >= ms->num_types) {\n" - "-\t\tpr_err(\"undefined MADT subtable type for FADT %d.%d: %d (length %d)\\n\",\n" - "-\t\t major, minor, entry->type, entry->length);\n" - "-\t\treturn 1;\n" - "+\t\tif (IS_ENABLED(CONFIG_ARM64)) {\n" - "+\t\t\t/* Enforce this stricture on arm64... */\n" - "+\t\t\tpr_err(\"undefined MADT subtable type for FADT %d.%d: %d (length %d)\\n\",\n" - "+\t\t\t major, minor, entry->type, entry->length);\n" - "+\t\t\treturn 1;\n" - "+\t\t} else {\n" - "+\t\t\t/* ... but relax it on legacy systems so they boot */\n" - "+\t\t\tpr_warn(\"undefined MADT subtable type for FADT %d.%d: %d (length %d)\\n\",\n" - "+\t\t\t major, minor, entry->type, entry->length);\n" - "+\t\t\treturn 0;\n" - "+\t\t}\n" - " \t}\n" - " \n" - " \t/* verify that the table is allowed for this version of the spec */\n" - "-- \n" - 2.4.3 - "\01:3\0" - "fn\00002-ACPI-workaround-x86-firmware-with-mis-matched-FADT-M.patch\0" - "b\0" - ">From 8b7e93421a1bd3a35ed6200fb778b87e9bff34c5 Mon Sep 17 00:00:00 2001\n" - "From: Al Stone <ahs3@redhat.com>\n" - "Date: Tue, 13 Oct 2015 15:51:13 -0600\n" - "Subject: [PATCH 2/4] ACPI: workaround x86 firmware with mis-matched FADT/MADT\n" - " revisions\n" - "\n" - "Looking across multiple versions of the ACPI specification, certain\n" - "versions introduce new revision numbers for the FADT and/or MADT\n" - "tables. So, for example, an FADT indicating it is revision 4 should\n" - "not be paired with an MADT revision of anything less than 2.\n" - "\n" - "However, there are systems out there that do not update the revision\n" - "fields in the FADT and MADT tables as they should. So, for arm64, we\n" - "can be stricter in complying with the specification, but we need to\n" - "relax the checking for legacy systems.\n" - "\n" - "Signed-off-by: Al Stone <al.stone@linaro.org>\n" - "---\n" - " drivers/acpi/tables.c | 14 +++++++++++---\n" - " 1 file changed, 11 insertions(+), 3 deletions(-)\n" - "\n" - "diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c\n" - "index e5cfd72..3b5ddfb 100644\n" - "--- a/drivers/acpi/tables.c\n" - "+++ b/drivers/acpi/tables.c\n" - "@@ -407,9 +407,17 @@ static int __init bad_madt_entry(struct acpi_table_header *table,\n" - " \t\tms++;\n" - " \t}\n" - " \tif (!ms->num_types) {\n" - "-\t\tpr_err(\"undefined version for either FADT %d.%d or MADT %d\\n\",\n" - "-\t\t major, minor, madt->header.revision);\n" - "-\t\treturn 1;\n" - "+\t\tif (IS_ENABLED(CONFIG_ARM64)) {\n" - "+\t\t\t/* Enforce this stricture on arm64... */\n" - "+\t\t\tpr_err(\"undefined version for either FADT %d.%d or MADT %d\\n\",\n" - "+\t\t\t major, minor, madt->header.revision);\n" - "+\t\t\treturn 1;\n" - "+\t\t} else {\n" - "+\t\t\t/* ... but relax it on legacy systems so they boot */\n" - "+\t\t\tpr_warn(\"undefined version for either FADT %d.%d or MADT %d\\n\",\n" - "+\t\t\t major, minor, madt->header.revision);\n" - "+\t\t\treturn 0;\n" - "+\t\t}\n" - " \t}\n" - " \n" - " \tif (entry->type >= ms->num_types) {\n" - "-- \n" - 2.4.3 - "\01:4\0" - "fn\00003-ACPI-workaround-FADT-always-being-revision-2.patch\0" - "b\0" - ">From 773dd448360098b6faf6c171dd716371d603f3ef Mon Sep 17 00:00:00 2001\n" - "From: Al Stone <ahs3@redhat.com>\n" - "Date: Tue, 13 Oct 2015 16:23:21 -0600\n" - "Subject: [PATCH 3/4] ACPI: workaround FADT always being revision 2\n" - "\n" - "In some environments, the FADT revision number is always 2, independent\n" - "of any other factors indicating that it may be a newer revision. So,\n" - "we cannot rely on the FADT and MADT revisions being in proper step. For\n" - "those environments, relax the checking so we only enforce the size check,\n" - "even if we do issue warnings on other problems.\n" - "\n" - "If we do not relax the rules, these systems will not boot as they have in\n" - "the past.\n" - "\n" - "Signed-off-by: Al Stone <al.stone@linaro.org>\n" - "---\n" - " drivers/acpi/tables.c | 34 +++++++++++++++++++++++++++++-----\n" - " 1 file changed, 29 insertions(+), 5 deletions(-)\n" - "\n" - "diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c\n" - "index 3b5ddfb..790d4b0 100644\n" - "--- a/drivers/acpi/tables.c\n" - "+++ b/drivers/acpi/tables.c\n" - "@@ -416,7 +416,6 @@ static int __init bad_madt_entry(struct acpi_table_header *table,\n" - " \t\t\t/* ... but relax it on legacy systems so they boot */\n" - " \t\t\tpr_warn(\"undefined version for either FADT %d.%d or MADT %d\\n\",\n" - " \t\t\t major, minor, madt->header.revision);\n" - "-\t\t\treturn 0;\n" - " \t\t}\n" - " \t}\n" - " \n" - "@@ -430,16 +429,41 @@ static int __init bad_madt_entry(struct acpi_table_header *table,\n" - " \t\t\t/* ... but relax it on legacy systems so they boot */\n" - " \t\t\tpr_warn(\"undefined MADT subtable type for FADT %d.%d: %d (length %d)\\n\",\n" - " \t\t\t major, minor, entry->type, entry->length);\n" - "-\t\t\treturn 0;\n" - " \t\t}\n" - " \t}\n" - " \n" - " \t/* verify that the table is allowed for this version of the spec */\n" - " \tlen = ms->lengths[entry->type];\n" - " \tif (!len) {\n" - "-\t\tpr_err(\"MADT subtable %d not defined for FADT %d.%d\\n\",\n" - "-\t\t\t entry->type, major, minor);\n" - "-\t\treturn 1;\n" - "+\t\tif (IS_ENABLED(CONFIG_ARM64)) {\n" - "+\t\t\tpr_err(\"MADT subtable %d not defined for FADT %d.%d\\n\",\n" - "+\t\t\t entry->type, major, minor);\n" - "+\t\t\treturn 1;\n" - "+\t\t} else {\n" - "+\t\t\tpr_warn(\"MADT subtable %d not defined for FADT %d.%d\\n\",\n" - "+\t\t\t entry->type, major, minor);\n" - "+\t\t}\n" - "+\t}\n" - "+\n" - "+\t/*\n" - "+\t * When we get this far, we may have issued warnings on either\n" - "+\t * a mismatch in FADT/MADT revisions, or have noted that the subtable\n" - "+\t * ID is not defined for the MADT revision we're using. On some\n" - "+\t * architectures, this is an error, but for legacy systems, we need\n" - "+\t * to push on with other checks of the subtable.\n" - "+\t *\n" - "+\t * In fact, there are environments where the *only* value the FADT\n" - "+\t * revision will ever have is 2, regardless of anything else. So,\n" - "+\t * for those systems to boot, we have to pretend the MADT is the\n" - "+\t * latest version to allow all known subtables since we have no way\n" - "+\t * to determine what revision it should be.\n" - "+\t */\n" - "+\tif (!IS_ENABLED(CONFIG_ARM64) && major == 2) {\n" - "+\t\tms = spec_info;\n" - "+\t\twhile (ms->num_types != 0)\n" - "+\t\t\tms++;\n" - "+\t\tms--;\n" - "+\t\tlen = ms->lengths[entry->type];\n" - " \t}\n" - " \n" - " \t/* verify that the length is what we expect */\n" - "-- \n" - 2.4.3 - "\01:5\0" - "fn\00004-ACPI-for-bad_madt_entry-the-GIC-ITS-table-is-20-byte.patch\0" - "b\0" - ">From 6d3189ccfcbac9a61e6502df70499bd2ee808509 Mon Sep 17 00:00:00 2001\n" - "From: Al Stone <ahs3@redhat.com>\n" - "Date: Tue, 13 Oct 2015 16:31:50 -0600\n" - "Subject: [PATCH 4/4] ACPI: for bad_madt_entry(), the GIC ITS table is 20 bytes\n" - " long, not 16\n" - "\n" - "Correct a typo where bad_madt_entry() expected the MADT GIC ITS subtable\n" - "to be 16 bytes long, but it is actually 20 bytes. This is a cut'n'paste\n" - "error picked up from the spec and inadvertently replicated in code.\n" - "\n" - "Signed-off-by: Al Stone <al.stone@linaro.org>\n" - "---\n" - " drivers/acpi/tables.c | 4 ++--\n" - " 1 file changed, 2 insertions(+), 2 deletions(-)\n" - "\n" - "diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c\n" - "index 790d4b0..1b7c13e 100644\n" - "--- a/drivers/acpi/tables.c\n" - "+++ b/drivers/acpi/tables.c\n" - "@@ -292,7 +292,7 @@ void acpi_table_print_madt_entry(struct acpi_subtable_header *header)\n" - " * GICD 0xc 24 24 24\n" - " * GICv2m MSI 0xd 24 24\n" - " * GICR 0xe 16 16\n" - "- * GIC ITS 0xf 16\n" - "+ * GIC ITS 0xf 20\n" - " *\n" - " * In the table, each length entry is what should be in the length\n" - " * field of the subtable, and -- in general -- it should match the\n" - "@@ -366,7 +366,7 @@ static struct acpi_madt_subtable_lengths spec_info[] = {\n" - " \t\t.madt_version = 3,\n" - " \t\t.num_types = 16,\n" - " \t\t.lengths = { 8, 12, 10, 8, 6, 12, 16, SUBTABLE_VARIABLE,\n" - "-\t\t\t 16, 16, 12, 80, 24, 24, 16, 16 }\n" - "+\t\t\t 16, 16, 12, 80, 24, 24, 16, 20 }\n" - " \t},\n" - " \t{ /* terminator */\n" - " \t\t.major_version = 0,\n" - "-- \n" - 2.4.3 + "ahs3 at redhat.com\n" + "-----------------------------------\n" + "-------------- next part --------------\n" + "A non-text attachment was scrubbed...\n" + "Name: 0001-ACPI-workaround-x86-firmware-using-reserved-MADT-sub.patch\n" + "Type: text/x-patch\n" + "Size: 1788 bytes\n" + "Desc: not available\n" + "URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151014/461d0443/attachment-0004.bin>\n" + "-------------- next part --------------\n" + "A non-text attachment was scrubbed...\n" + "Name: 0002-ACPI-workaround-x86-firmware-with-mis-matched-FADT-M.patch\n" + "Type: text/x-patch\n" + "Size: 1756 bytes\n" + "Desc: not available\n" + "URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151014/461d0443/attachment-0005.bin>\n" + "-------------- next part --------------\n" + "A non-text attachment was scrubbed...\n" + "Name: 0003-ACPI-workaround-FADT-always-being-revision-2.patch\n" + "Type: text/x-patch\n" + "Size: 2909 bytes\n" + "Desc: not available\n" + "URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151014/461d0443/attachment-0006.bin>\n" + "-------------- next part --------------\n" + "A non-text attachment was scrubbed...\n" + "Name: 0004-ACPI-for-bad_madt_entry-the-GIC-ITS-table-is-20-byte.patch\n" + "Type: text/x-patch\n" + "Size: 1627 bytes\n" + "Desc: not available\n" + URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151014/461d0443/attachment-0007.bin> -85546ec3f0bad433bac00109ffeeb2d93b3548062816186ba92e1e451bbbaa2d +66a287544c594bccb9a0f21bf354501149dae027b0fdc475c968b7e8b18aaeb3
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.