mirror of
https://github.com/torvalds/linux.git
synced 2024-12-02 09:01:34 +00:00
d5a10b976e
The recent fix to ignore invalid x2APIC entries inadvertently broke
systems with creative MADT APIC tables. The affected systems have APIC
MADT tables where all entries have invalid APIC IDs (0xFF), which means
they register exactly zero CPUs.
But the condition to ignore the entries of APIC IDs < 255 in the X2APIC
MADT table is solely based on the count of MADT APIC table entries.
As a consequence, the affected machines enumerate no secondary CPUs at
all because the APIC table has entries and therefore the X2APIC table
entries with APIC IDs < 255 are ignored.
Change the condition so that the APIC table preference for APIC IDs <
255 only becomes effective when the APIC table has valid APIC ID
entries.
IOW, an APIC table full of invalid APIC IDs is considered to be empty
which in consequence enables the X2APIC table entries with a APIC ID
< 255 and restores the expected behaviour.
Fixes:
|
||
---|---|---|
.. | ||
apei.c | ||
boot.c | ||
cppc.c | ||
cstate.c | ||
Makefile | ||
sleep.c | ||
sleep.h | ||
wakeup_32.S | ||
wakeup_64.S |