Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=949ec325c79add68af13705b68a885a1efb84234
Commit:     949ec325c79add68af13705b68a885a1efb84234
Parent:     b3ca74a2bfc66262d21443b160815eb26d6699e6
Author:     Yinghai Lu <[EMAIL PROTECTED]>
AuthorDate: Wed Jan 30 13:30:46 2008 +0100
Committer:  Ingo Molnar <[EMAIL PROTECTED]>
CommitDate: Wed Jan 30 13:30:46 2008 +0100

    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 <[EMAIL PROTECTED]>
    Cc: Andi Kleen <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Ingo Molnar <[EMAIL PROTECTED]>
    Signed-off-by: Thomas Gleixner <[EMAIL PROTECTED]>
---
 arch/x86/kernel/smpboot_64.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/arch/x86/kernel/smpboot_64.c b/arch/x86/kernel/smpboot_64.c
index ddefb38..8ac8eb6 100644
--- a/arch/x86/kernel/smpboot_64.c
+++ b/arch/x86/kernel/smpboot_64.c
@@ -861,6 +861,18 @@ void __init smp_set_apicids(void)
        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
  * 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)
 {
        nmi_watchdog_default();
+       smp_cpu_index_default();
        current_cpu_data = boot_cpu_data;
        current_thread_info()->cpu = 0;  /* needed? */
        smp_set_apicids();
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to