[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] x86/ACPI: Fix logging of MADT entries
commit fa6696e63b6e490f3348ad973b30e361d68e366f Author: Simon Gaiser <simon@xxxxxxxxxxxxxxxxxxxxxx> AuthorDate: Tue Sep 19 11:02:13 2023 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Tue Sep 19 11:02:13 2023 +0200 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: 47342d8f490c ("x86/ACPI: Ignore entries with invalid APIC IDs when parsing MADT") Link: https://lore.kernel.org/xen-devel/0bd3583c-a55d-9a68-55b1-c383499d46d8@xxxxxxxx/ # [1] Link: https://lore.kernel.org/xen-devel/f780d40e-c828-c57a-b19c-16ee15c1454a@xxxxxxxx/ # [2] Signed-off-by: Simon Gaiser <simon@xxxxxxxxxxxxxxxxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> --- xen/arch/x86/acpi/boot.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/xen/arch/x86/acpi/boot.c b/xen/arch/x86/acpi/boot.c index ead41bd535..170f9783c5 100644 --- a/xen/arch/x86/acpi/boot.c +++ b/xen/arch/x86/acpi/boot.c @@ -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; -- generated by git-patchbot for /home/xen/git/xen.git#master
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |