mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/ACPI: Fix logging of MADT entries
The recent change to ignore MADT entries with invalid APIC IDs also
affected logging of MADT entries. That's not desired [1] [2], so restore
the old behavior.
Fixes: 47342d8f49 ("x86/ACPI: Ignore entries with invalid APIC IDs when parsing MADT")
Link: https://lore.kernel.org/xen-devel/0bd3583c-a55d-9a68-55b1-c383499d46d8@suse.com/ # [1]
Link: https://lore.kernel.org/xen-devel/f780d40e-c828-c57a-b19c-16ee15c1454a@suse.com/ # [2]
Signed-off-by: Simon Gaiser <simon@invisiblethingslab.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
93d2ee85f1
commit
fa6696e63b
1 file changed
+12
-10
+12
-10
@@ -87,21 +87,22 @@ acpi_parse_x2apic(struct acpi_subtable_header *header, const unsigned long end)
|
||||
if (BAD_MADT_ENTRY(processor, end))
|
||||
return -EINVAL;
|
||||
|
||||
/* Ignore entries with invalid x2APIC ID */
|
||||
if (processor->local_apic_id == 0xffffffff)
|
||||
return 0;
|
||||
|
||||
/* Don't register processors that cannot be onlined. */
|
||||
if (madt_revision >= 5 &&
|
||||
!(processor->lapic_flags & ACPI_MADT_ENABLED) &&
|
||||
!(processor->lapic_flags & ACPI_MADT_ONLINE_CAPABLE))
|
||||
return 0;
|
||||
|
||||
if ((processor->lapic_flags & ACPI_MADT_ENABLED) || opt_cpu_info) {
|
||||
if ((processor->lapic_flags & ACPI_MADT_ENABLED) ||
|
||||
processor->local_apic_id != 0xffffffff || opt_cpu_info) {
|
||||
acpi_table_print_madt_entry(header);
|
||||
log = true;
|
||||
}
|
||||
|
||||
/* Ignore entries with invalid x2APIC ID */
|
||||
if (processor->local_apic_id == 0xffffffff)
|
||||
return 0;
|
||||
|
||||
/* Record local apic id only when enabled and fitting. */
|
||||
if (processor->local_apic_id >= MAX_APICS ||
|
||||
processor->uid >= MAX_MADT_ENTRIES) {
|
||||
@@ -146,19 +147,20 @@ acpi_parse_lapic(struct acpi_subtable_header * header, const unsigned long end)
|
||||
if (BAD_MADT_ENTRY(processor, end))
|
||||
return -EINVAL;
|
||||
|
||||
/* Ignore entries with invalid APIC ID */
|
||||
if (processor->id == 0xff)
|
||||
return 0;
|
||||
|
||||
/* Don't register processors that cannot be onlined. */
|
||||
if (madt_revision >= 5 &&
|
||||
!(processor->lapic_flags & ACPI_MADT_ENABLED) &&
|
||||
!(processor->lapic_flags & ACPI_MADT_ONLINE_CAPABLE))
|
||||
return 0;
|
||||
|
||||
if ((processor->lapic_flags & ACPI_MADT_ENABLED) || opt_cpu_info)
|
||||
if ((processor->lapic_flags & ACPI_MADT_ENABLED) ||
|
||||
processor->id != 0xff || opt_cpu_info)
|
||||
acpi_table_print_madt_entry(header);
|
||||
|
||||
/* Ignore entries with invalid APIC ID */
|
||||
if (processor->id == 0xff)
|
||||
return 0;
|
||||
|
||||
/* Record local apic id only when enabled */
|
||||
if (processor->lapic_flags & ACPI_MADT_ENABLED) {
|
||||
x86_acpiid_to_apicid[processor->processor_id] = processor->id;
|
||||
|
||||