|
@@ -83,27 +83,17 @@ static int map_lsapic_id(struct acpi_subtable_header *entry,
|
|
|
{
|
|
|
struct acpi_madt_local_sapic *lsapic =
|
|
|
(struct acpi_madt_local_sapic *)entry;
|
|
|
- u32 tmp = (lsapic->id << 8) | lsapic->eid;
|
|
|
|
|
|
- /* Only check enabled APICs*/
|
|
|
if (!(lsapic->lapic_flags & ACPI_MADT_ENABLED))
|
|
|
return 0;
|
|
|
|
|
|
- /* Device statement declaration type */
|
|
|
if (device_declaration) {
|
|
|
- if (entry->length < 16)
|
|
|
- printk(KERN_ERR PREFIX
|
|
|
- "Invalid LSAPIC with Device type processor (SAPIC ID %#x)\n",
|
|
|
- tmp);
|
|
|
- else if (lsapic->uid == acpi_id)
|
|
|
- goto found;
|
|
|
- /* Processor statement declaration type */
|
|
|
- } else if (lsapic->processor_id == acpi_id)
|
|
|
- goto found;
|
|
|
+ if ((entry->length < 16) || (lsapic->uid != acpi_id))
|
|
|
+ return 0;
|
|
|
+ } else if (lsapic->processor_id != acpi_id)
|
|
|
+ return 0;
|
|
|
|
|
|
- return 0;
|
|
|
-found:
|
|
|
- *apic_id = tmp;
|
|
|
+ *apic_id = (lsapic->id << 8) | lsapic->eid;
|
|
|
return 1;
|
|
|
}
|
|
|
|