aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86_64/kernel/genapic.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2007-05-02 13:27:04 -0400
committerAndi Kleen <andi@basil.nowhere.org>2007-05-02 13:27:04 -0400
commit3c43f03908de98fa8f7a9e8fc9411ebf4c2de298 (patch)
tree3e2c78fc91f29dfdfd29970e70982f0386863d17 /arch/x86_64/kernel/genapic.c
parent424df390101f9dfe015f0633aaec696c159b37a8 (diff)
[PATCH] x86: default to physical mode on hotplug CPU kernels
Default to physical mode on hotplug CPU kernels. Furher simplify and clean up the APIC initialization code. Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andi Kleen <ak@suse.de> Cc: Suresh Siddha <suresh.b.siddha@intel.com> Cc: Andi Kleen <ak@suse.de> Cc: "Li, Shaohua" <shaohua.li@intel.com> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: Andrew Morton <akpm@osdl.org>
Diffstat (limited to 'arch/x86_64/kernel/genapic.c')
-rw-r--r--arch/x86_64/kernel/genapic.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/arch/x86_64/kernel/genapic.c b/arch/x86_64/kernel/genapic.c
index 025f26ebb8d7..c08650a427e2 100644
--- a/arch/x86_64/kernel/genapic.c
+++ b/arch/x86_64/kernel/genapic.c
@@ -35,11 +35,8 @@ struct genapic __read_mostly *genapic = &apic_flat;
35/* 35/*
36 * Check the APIC IDs in bios_cpu_apicid and choose the APIC mode. 36 * Check the APIC IDs in bios_cpu_apicid and choose the APIC mode.
37 */ 37 */
38void __init clustered_apic_check(void) 38void __init setup_apic_routing(void)
39{ 39{
40 unsigned int i, max_apic = 0;
41 u8 id;
42
43#ifdef CONFIG_ACPI 40#ifdef CONFIG_ACPI
44 /* 41 /*
45 * Quirk: some x86_64 machines can only use physical APIC mode 42 * Quirk: some x86_64 machines can only use physical APIC mode
@@ -49,17 +46,10 @@ void __init clustered_apic_check(void)
49 if (acpi_gbl_FADT.header.revision > FADT2_REVISION_ID && 46 if (acpi_gbl_FADT.header.revision > FADT2_REVISION_ID &&
50 (acpi_gbl_FADT.flags & ACPI_FADT_APIC_PHYSICAL)) 47 (acpi_gbl_FADT.flags & ACPI_FADT_APIC_PHYSICAL))
51 genapic = &apic_physflat; 48 genapic = &apic_physflat;
49 else
52#endif 50#endif
53 51
54 for (i = 0; i < NR_CPUS; i++) { 52 if (cpus_weight(cpu_possible_map) <= 8)
55 id = bios_cpu_apicid[i];
56 if (id == BAD_APICID)
57 continue;
58 if (id > max_apic)
59 max_apic = id;
60 }
61
62 if (max_apic < 8)
63 genapic = &apic_flat; 53 genapic = &apic_flat;
64 else 54 else
65 genapic = &apic_physflat; 55 genapic = &apic_physflat;