acpi: skip disabled LAPIC entries

disabled LAPIC entries overwrote the bootstrap processor
apic causing the machine panic with: "no bootstrap processor".
(problem with lenovo X230)

just ignore entries that are disabled or collide with
entries already found. (should not happen)
This commit is contained in:
cinap_lenrek 2013-07-07 12:44:30 +02:00
parent c333697c41
commit e32940f726

View file

@ -401,16 +401,21 @@ Foundapic:
a->lintr[0] = ApicIMASK;
a->lintr[1] = ApicIMASK;
a->flags = p[4] & PcmpEN;
if(a->flags & PcmpEN){
a->machno = machno++;
/*
* platform firmware should list the boot processor
* as the first processor entry in the MADT
*/
if(a->machno == 0)
a->flags |= PcmpBP;
/* skip disabled processors */
if((a->flags & PcmpEN) == 0 || mpapic[a->apicno] != nil){
xfree(a);
break;
}
a->machno = machno++;
/*
* platform firmware should list the boot processor
* as the first processor entry in the MADT
*/
if(a->machno == 0)
a->flags |= PcmpBP;
mpapic[a->apicno] = a;
break;
case 0x01: /* I/O APIC */