x86: set cpu_index to nr_cpus instead of 0
Some BIOSes that support two/four dualcore/quadcore systems, will get: ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) Processor #0 15:1 APIC version 16 ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled) Processor #1 15:1 APIC version 16 ACPI: LAPIC (acpi_id[0x03] lapic_id[0x02] enabled) Processor #2 15:1 APIC version 16 ACPI: LAPIC (acpi_id[0x04] lapic_id[0x03] enabled) Processor #3 15:1 APIC version 16 ACPI: LAPIC (acpi_id[0x05] lapic_id[0x84] disabled) ACPI: LAPIC (acpi_id[0x06] lapic_id[0x85] disabled) ACPI: LAPIC (acpi_id[0x07] lapic_id[0x86] disabled) ACPI: LAPIC (acpi_id[0x08] lapic_id[0x87] disabled) ACPI: LAPIC (acpi_id[0x09] lapic_id[0x88] disabled) ACPI: LAPIC (acpi_id[0x0a] lapic_id[0x89] disabled) ACPI: LAPIC (acpi_id[0x0b] lapic_id[0x8a] disabled) ACPI: LAPIC (acpi_id[0x0c] lapic_id[0x8b] disabled) ACPI: LAPIC (acpi_id[0x0d] lapic_id[0x8c] disabled) ACPI: LAPIC (acpi_id[0x0e] lapic_id[0x8d] disabled) ACPI: LAPIC (acpi_id[0x0f] lapic_id[0x8e] disabled) ACPI: LAPIC (acpi_id[0x10] lapic_id[0x8f] disabled) SMP: Allowing 16 CPUs, 12 hotplug CPUs the /proc/cpuinfo will show a bunch of NULL cpus with cpu_index=0 so assign impossible cpu_index value at first instead of 0. Signed-off-by: Yinghai Lu <yinghai.lu@sun.com> Cc: Andi Kleen <ak@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
b3ca74a2bf
commit
949ec325c7
1 changed files with 13 additions and 0 deletions
|
@ -861,6 +861,18 @@ void __init smp_set_apicids(void)
|
||||||
x86_cpu_to_apicid_ptr = NULL;
|
x86_cpu_to_apicid_ptr = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void __init smp_cpu_index_default(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
struct cpuinfo_x86 *c;
|
||||||
|
|
||||||
|
for_each_cpu_mask(i, cpu_possible_map) {
|
||||||
|
c = &cpu_data(i);
|
||||||
|
/* mark all to hotplug */
|
||||||
|
c->cpu_index = NR_CPUS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prepare for SMP bootup. The MP table or ACPI has been read
|
* Prepare for SMP bootup. The MP table or ACPI has been read
|
||||||
* earlier. Just do some sanity checking here and enable APIC mode.
|
* earlier. Just do some sanity checking here and enable APIC mode.
|
||||||
|
@ -868,6 +880,7 @@ void __init smp_set_apicids(void)
|
||||||
void __init smp_prepare_cpus(unsigned int max_cpus)
|
void __init smp_prepare_cpus(unsigned int max_cpus)
|
||||||
{
|
{
|
||||||
nmi_watchdog_default();
|
nmi_watchdog_default();
|
||||||
|
smp_cpu_index_default();
|
||||||
current_cpu_data = boot_cpu_data;
|
current_cpu_data = boot_cpu_data;
|
||||||
current_thread_info()->cpu = 0; /* needed? */
|
current_thread_info()->cpu = 0; /* needed? */
|
||||||
smp_set_apicids();
|
smp_set_apicids();
|
||||||
|
|
Loading…
Reference in a new issue