local x2apic enumeration is broken
The case for ACPI_MADT_TYPE_LOCAL_X2APIC in acpi_probe() is broken in two ways.
First, it dereferences mpa which is either undefined or points to an unrelated object. The code needs to use mpx2a->Uid instead of mpa->ProcessorId.
And second, the LocalApicId can be 255 and higher for x2apic objects, and as such right-shifting LocalApicId by 8 and comparing to 0 is not correct.
Updated by Electric Monk over 6 years ago
- Status changed from New to Closed
- % Done changed from 0 to 100
commit 6025f1db7d005ffd81a92cbdc542e14e20b246ea Author: Hans Rosenfeld <email@example.com> Date: 2016-03-30T22:33:34.000Z 6806 local x2apic enumeration is broken Reviewed by: Josef 'Jeff' Sipek <firstname.lastname@example.org> Reviewed by: Dan McDonald <email@example.com> Reviewed by: Garrett D'Amore <firstname.lastname@example.org> Approved by: Robert Mustacchi <email@example.com>