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:
parent
c333697c41
commit
e32940f726
|
@ -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 */
|
||||
|
|
Loading…
Reference in a new issue