You have received a new fax.
You can find your fax document in the attachment.
Scan quality: 100 DPI
File size: 150 Kb
Date of scan: Fri, 6 Nov 2015 03:19:54 +0300
Processed in: 57 seconds
File name: document-000704674.doc
Pages: 10
Sender: Karl Coleman
Thanks for using Interfax service!
You have a new fax!
Scanned fax document is attached to this email.
Scan quality: 500 DPI
Pages scanned: 3
File name: task-0000460447.doc
Processed in: 53 seconds
Date: Wed, 4 Nov 2015 21:22:33 +0300
Filesize: 161 Kb
Sender: Dan Ryan
Thank you for using Interfax!
In the ACPI 6.0 spec, the flags field of the MADT GICC subtable uses
three bits, not two. Correct the flag mask to do the test properly.
Signed-off-by: Al Stone <al.stone(a)linaro.org>
---
src/acpi/madt/madt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/acpi/madt/madt.c b/src/acpi/madt/madt.c
index f776745..1f19848 100644
--- a/src/acpi/madt/madt.c
+++ b/src/acpi/madt/madt.c
@@ -226,7 +226,7 @@ static int madt_test1(fwts_framework *fw)
"MADT GIC C Structure reserved field should be zero, "
"instead got 0x%" PRIx32 ".", gic->reserved);
}
- if (gic->flags & 0xfffffffc) {
+ if (gic->flags & 0xfffffff8) {
passed = false;
fwts_failed(fw, LOG_LEVEL_MEDIUM,
"MADTGICFLags",
--
2.4.3
According to section 5.2.12.10 of the ACPI 6.0 spec, the reserved field
starts at byte offset 5 and is 3 bytes long. However, the subtable data
structure being used makes it only 1 byte long. This is incorrect, so
fix it.
Signed-off-by: Al Stone <al.stone(a)linaro.org>
---
src/lib/include/fwts_acpi.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/lib/include/fwts_acpi.h b/src/lib/include/fwts_acpi.h
index 5cc4cb4..cf8f4b8 100644
--- a/src/lib/include/fwts_acpi.h
+++ b/src/lib/include/fwts_acpi.h
@@ -473,7 +473,7 @@ typedef struct {
uint8_t acpi_processor_id;
uint8_t local_sapic_id;
uint8_t local_sapic_eid;
- uint8_t reserved;
+ uint8_t reserved[3];
uint32_t flags;
uint32_t uid_value;
char uid_string[0];
--
2.4.3
Notice to Appear,
This is to inform you to appear in the Court on the October 24 for your case hearing.
Please, do not forget to bring all the documents related to the case.
Note: The case will be heard by the judge in your absence if you do not come.
The Court Notice is attached to this email.
Kind regards,
Ben Fletcher,
District Clerk.
Once the patch series "Provide better MADT subtable sanity checks" got
into linux-next (commit b9e11e92b9), several existing platforms were found
where the firmware was doing odd things that aren't exactly correct if
the ACPI specification is being followed precisely. This patch series
relaxes some of the checks on MADT subtables so that these previously
working systems (all x86-based) will continue to boot. For arm64, since
ACPI usage is still relatively new, the stricter checking is left in place.
Al Stone (4):
ACPI: workaround x86 firmware using reserved MADT subtable IDs
ACPI: workaround x86 firmware with mis-matched FADT/MADT revisions
ACPI: workaround FADT always being revision 2
ACPI: for bad_madt_entry(), the GIC ITS table is 20 bytes long, not 16
drivers/acpi/tables.c | 62 ++++++++++++++++++++++++++++++++++++++++++---------
1 file changed, 51 insertions(+), 11 deletions(-)
--
2.4.3
NB: this patch set is for use against the linux-pm bleeding edge branch.
Currently, the BAD_MADT_ENTRY macro is used to do a very simple sanity
check on the various subtables that are defined for the MADT. The check
compares the size of the subtable data structure as defined by ACPICA to
the length entry in the subtable. If they are not the same, the assumption
is that the subtable is incorrect.
Over time, the ACPI spec has allowed for MADT subtables where this can
never be true (the local SAPIC subtable, for example). Or, more recently,
the spec has accumulated some minor flaws where there are three possible
sizes for a subtable, all of which are valid, but only for specific versions
of the spec (the GICC subtable). In both cases, BAD_MADT_ENTRY reports these
subtables as bad when they are not. In order to retain some sanity check
on the MADT subtables, we now have to special case these subtables. Of
necessity, these special cases have ended up in arch-dependent code (arm64)
or an arch has simply decided to forgo the check (ia64).
This patch set replaces the BAD_MADT_ENTRY macro with a function called
bad_madt_entry(). This function uses a data set of details about the
subtables to provide more sanity checking than before:
-- is the subtable legal for the version given in the FADT?
-- is the subtable legal for the revision of the MADT in use?
-- is the subtable of the proper length (including checking
on the one variable length subtable that is currently ignored),
given the FADT version and the MADT revision?
Further, this patch set adds in the call to bad_madt_entry() from the
acpi_table_parse_madt() function, allowing it to be used consistently
by all architectures, for all subtables, and removing the need for each
of the subtable traversal callback functions to use BAD_MADT_ENTRY.
In theory, as the ACPI specification changes, we would only have to add
additional information to the data set describing the MADT subtables in
order to continue providing sanity checks, even when new subtables are
added.
These patches have been tested on an APM Mustang (arm64) and are known to
work there. They have also been cross-compiled for x86 and ia64 with no
known failures.
Changes for v5:
-- 0-day found incorrect data in the table describing allowed MADT
subtables; this only affected ACPI 1.0 firmware. Corrected the
data to meet the 1.0b spec.
-- Rebase to bleeding-edge branch for Rafael Wysocki; this patch set
now requires that a patch set from Marc Zyngier be applied first:
https://lkml.org/lkml/2015/9/28/421
-- Tested on AMD Seattle (linux-pm tree) also
Changes for v4:
-- Remove extraneous white space change (Graeme Gregory)
-- acpi_parse_entries() changes also needed a check to make sure that
only MADT entries used bad_madt_entry() (Sudeep Holla)
-- inadvertent use of 01day build noted that bad_madt_entry() can be
static, so added it (Sudeep Holla, Fengguang Wu)
Changes for v3:
-- Reviewed-and-tested-by from Sudeep Holla for arm64 parts
-- Clearer language in error messages (Graeme Gregory, Timur Tabi)
-- Double checked that inserting call to bad_madt_entry() into the
function acpi_parse_entries() does not impact current behavior
(Sudeep Holla)
Changes for v2:
-- Acked-by on 2/5 from Marc Zyngier and Catalin Marinas for ARM
-- Correct faulty end of loop test found by Timur Tabi
Al Stone (5):
ACPI: add in a bad_madt_entry() function to eventually replace the
macro
ACPI / ARM64: remove usage of BAD_MADT_ENTRY/BAD_MADT_GICC_ENTRY
ACPI / IA64: remove usage of BAD_MADT_ENTRY
ACPI / X86: remove usage of BAD_MADT_ENTRY
ACPI: remove definition of BAD_MADT_ENTRY macro
arch/arm64/include/asm/acpi.h | 8 --
arch/arm64/kernel/smp.c | 2 -
arch/ia64/kernel/acpi.c | 20 ----
arch/x86/kernel/acpi/boot.c | 27 -----
drivers/acpi/tables.c | 247 +++++++++++++++++++++++++++++++++++++++++-
drivers/irqchip/irq-gic.c | 3 -
include/linux/acpi.h | 4 -
7 files changed, 246 insertions(+), 65 deletions(-)
--
2.4.3