diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-07-08 05:14:58 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-08 05:14:58 -0400 |
commit | 3de352bbd86f890dd0c5e1c09a6a1b0b29e0f8ce (patch) | |
tree | d4c5eba8cd2abefd7c9f16d089393f0f5999cf63 /arch/x86/kernel/apic_32.c | |
parent | 1b8ba39a3fad9c58532f6dad12c94d6e675be656 (diff) | |
parent | 9340e1ccdf7b9b22a2be7f51cd74e8b5e11961bf (diff) |
Merge branch 'x86/mpparse' into x86/devel
Conflicts:
arch/x86/Kconfig
arch/x86/kernel/io_apic_32.c
arch/x86/kernel/setup_64.c
arch/x86/mm/init_32.c
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/apic_32.c')
-rw-r--r-- | arch/x86/kernel/apic_32.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/arch/x86/kernel/apic_32.c b/arch/x86/kernel/apic_32.c index ce4538ebb7fe..570c362eca8c 100644 --- a/arch/x86/kernel/apic_32.c +++ b/arch/x86/kernel/apic_32.c | |||
@@ -79,6 +79,11 @@ char system_vectors[NR_VECTORS] = { [0 ... NR_VECTORS-1] = SYS_VECTOR_FREE}; | |||
79 | */ | 79 | */ |
80 | int apic_verbosity; | 80 | int apic_verbosity; |
81 | 81 | ||
82 | int pic_mode; | ||
83 | |||
84 | /* Have we found an MP table */ | ||
85 | int smp_found_config; | ||
86 | |||
82 | static unsigned int calibration_result; | 87 | static unsigned int calibration_result; |
83 | 88 | ||
84 | static int lapic_next_event(unsigned long delta, | 89 | static int lapic_next_event(unsigned long delta, |
@@ -1202,7 +1207,7 @@ void __init init_apic_mappings(void) | |||
1202 | 1207 | ||
1203 | for (i = 0; i < nr_ioapics; i++) { | 1208 | for (i = 0; i < nr_ioapics; i++) { |
1204 | if (smp_found_config) { | 1209 | if (smp_found_config) { |
1205 | ioapic_phys = mp_ioapics[i].mpc_apicaddr; | 1210 | ioapic_phys = mp_ioapics[i].mp_apicaddr; |
1206 | if (!ioapic_phys) { | 1211 | if (!ioapic_phys) { |
1207 | printk(KERN_ERR | 1212 | printk(KERN_ERR |
1208 | "WARNING: bogus zero IO-APIC " | 1213 | "WARNING: bogus zero IO-APIC " |
@@ -1517,6 +1522,9 @@ void __cpuinit generic_processor_info(int apicid, int version) | |||
1517 | */ | 1522 | */ |
1518 | cpu = 0; | 1523 | cpu = 0; |
1519 | 1524 | ||
1525 | if (apicid > max_physical_apicid) | ||
1526 | max_physical_apicid = apicid; | ||
1527 | |||
1520 | /* | 1528 | /* |
1521 | * Would be preferable to switch to bigsmp when CONFIG_HOTPLUG_CPU=y | 1529 | * Would be preferable to switch to bigsmp when CONFIG_HOTPLUG_CPU=y |
1522 | * but we need to work other dependencies like SMP_SUSPEND etc | 1530 | * but we need to work other dependencies like SMP_SUSPEND etc |
@@ -1524,7 +1532,7 @@ void __cpuinit generic_processor_info(int apicid, int version) | |||
1524 | * if (CPU_HOTPLUG_ENABLED || num_processors > 8) | 1532 | * if (CPU_HOTPLUG_ENABLED || num_processors > 8) |
1525 | * - Ashok Raj <ashok.raj@intel.com> | 1533 | * - Ashok Raj <ashok.raj@intel.com> |
1526 | */ | 1534 | */ |
1527 | if (num_processors > 8) { | 1535 | if (max_physical_apicid >= 8) { |
1528 | switch (boot_cpu_data.x86_vendor) { | 1536 | switch (boot_cpu_data.x86_vendor) { |
1529 | case X86_VENDOR_INTEL: | 1537 | case X86_VENDOR_INTEL: |
1530 | if (!APIC_XAPIC(version)) { | 1538 | if (!APIC_XAPIC(version)) { |