diff options
Diffstat (limited to 'arch/x86/kernel/acpi')
-rw-r--r-- | arch/x86/kernel/acpi/boot.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 1a5b9a8e6c4f..ec881c6bfee0 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
@@ -198,6 +198,11 @@ static void __cpuinit acpi_register_lapic(int id, u8 enabled) | |||
198 | { | 198 | { |
199 | unsigned int ver = 0; | 199 | unsigned int ver = 0; |
200 | 200 | ||
201 | if (id >= (MAX_LOCAL_APIC-1)) { | ||
202 | printk(KERN_INFO PREFIX "skipped apicid that is too big\n"); | ||
203 | return; | ||
204 | } | ||
205 | |||
201 | if (!enabled) { | 206 | if (!enabled) { |
202 | ++disabled_cpus; | 207 | ++disabled_cpus; |
203 | return; | 208 | return; |
@@ -898,13 +903,13 @@ static int __init acpi_parse_madt_lapic_entries(void) | |||
898 | register_lapic_address(acpi_lapic_addr); | 903 | register_lapic_address(acpi_lapic_addr); |
899 | 904 | ||
900 | count = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_SAPIC, | 905 | count = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_SAPIC, |
901 | acpi_parse_sapic, MAX_APICS); | 906 | acpi_parse_sapic, MAX_LOCAL_APIC); |
902 | 907 | ||
903 | if (!count) { | 908 | if (!count) { |
904 | x2count = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_X2APIC, | 909 | x2count = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_X2APIC, |
905 | acpi_parse_x2apic, MAX_APICS); | 910 | acpi_parse_x2apic, MAX_LOCAL_APIC); |
906 | count = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_APIC, | 911 | count = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_APIC, |
907 | acpi_parse_lapic, MAX_APICS); | 912 | acpi_parse_lapic, MAX_LOCAL_APIC); |
908 | } | 913 | } |
909 | if (!count && !x2count) { | 914 | if (!count && !x2count) { |
910 | printk(KERN_ERR PREFIX "No LAPIC entries present\n"); | 915 | printk(KERN_ERR PREFIX "No LAPIC entries present\n"); |