File tree Expand file tree Collapse file tree 1 file changed +9
-0
lines changed Expand file tree Collapse file tree 1 file changed +9
-0
lines changed Original file line number Diff line number Diff line change @@ -62,6 +62,7 @@ int acpi_fix_pin2_polarity __initdata;
62
62
63
63
#ifdef CONFIG_X86_LOCAL_APIC
64
64
static u64 acpi_lapic_addr __initdata = APIC_DEFAULT_PHYS_BASE ;
65
+ static bool acpi_support_online_capable ;
65
66
#endif
66
67
67
68
#ifdef CONFIG_X86_IO_APIC
@@ -138,6 +139,8 @@ static int __init acpi_parse_madt(struct acpi_table_header *table)
138
139
139
140
pr_debug ("Local APIC address 0x%08x\n" , madt -> address );
140
141
}
142
+ if (madt -> header .revision >= 5 )
143
+ acpi_support_online_capable = true;
141
144
142
145
default_acpi_madt_oem_check (madt -> header .oem_id ,
143
146
madt -> header .oem_table_id );
@@ -239,6 +242,12 @@ acpi_parse_lapic(union acpi_subtable_headers * header, const unsigned long end)
239
242
if (processor -> id == 0xff )
240
243
return 0 ;
241
244
245
+ /* don't register processors that can not be onlined */
246
+ if (acpi_support_online_capable &&
247
+ !(processor -> lapic_flags & ACPI_MADT_ENABLED ) &&
248
+ !(processor -> lapic_flags & ACPI_MADT_ONLINE_CAPABLE ))
249
+ return 0 ;
250
+
242
251
/*
243
252
* We need to register disabled CPU as well to permit
244
253
* counting disabled CPUs. This allows us to size
You can’t perform that action at this time.
0 commit comments