aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel
diff options
context:
space:
mode:
authorYinghai Lu <yinghai@kernel.org>2008-11-18 11:14:14 -0500
committerIngo Molnar <mingo@elte.hu>2008-11-18 11:35:40 -0500
commitb5fe363b7d89577fcfda9b6cf0efc32760bbccc6 (patch)
tree42a9e04349bbd1538004b7b084144da65c38d486 /arch/x86/kernel
parentf632ddcc0786149c0e4bef9b6b44c96a75c0d074 (diff)
x86: use update_genapic to get rid of ES7000_CLUSTERED_APIC v2
Impact: clean up We can autodetect those system that need cluster apic, and update genapic accordingly. We can also remove wakeup.h for e7000, because it's default one is now the same as overall default mach_wakecpu.h Signed-off-by: Yinghai Lu <yinghai@kernel.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel')
-rw-r--r--arch/x86/kernel/es7000_32.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/arch/x86/kernel/es7000_32.c b/arch/x86/kernel/es7000_32.c
index fb3bfe66fbe2..71d7be624d46 100644
--- a/arch/x86/kernel/es7000_32.c
+++ b/arch/x86/kernel/es7000_32.c
@@ -38,6 +38,7 @@
38#include <asm/io.h> 38#include <asm/io.h>
39#include <asm/nmi.h> 39#include <asm/nmi.h>
40#include <asm/smp.h> 40#include <asm/smp.h>
41#include <asm/atomic.h>
41#include <asm/apicdef.h> 42#include <asm/apicdef.h>
42#include <mach_mpparse.h> 43#include <mach_mpparse.h>
43#include <asm/genapic.h> 44#include <asm/genapic.h>
@@ -163,7 +164,6 @@ es7000_rename_gsi(int ioapic, int gsi)
163 return gsi; 164 return gsi;
164} 165}
165 166
166#ifdef CONFIG_ES7000_CLUSTERED_APIC
167static int wakeup_secondary_cpu_via_mip(int cpu, unsigned long eip) 167static int wakeup_secondary_cpu_via_mip(int cpu, unsigned long eip)
168{ 168{
169 unsigned long vect = 0, psaival = 0; 169 unsigned long vect = 0, psaival = 0;
@@ -182,13 +182,24 @@ static int wakeup_secondary_cpu_via_mip(int cpu, unsigned long eip)
182 return 0; 182 return 0;
183} 183}
184 184
185static void noop_wait_for_deassert(atomic_t *deassert_not_used)
186{
187}
188
185static int __init es7000_update_genapic(void) 189static int __init es7000_update_genapic(void)
186{ 190{
187 genapic->wakeup_cpu = wakeup_secondary_cpu_via_mip; 191 genapic->wakeup_cpu = wakeup_secondary_cpu_via_mip;
188 192
193 /* MPENTIUMIII */
194 if (boot_cpu_data.x86 == 6 &&
195 (boot_cpu_data.x86_model >= 7 || boot_cpu_data.x86_model <= 11)) {
196 es7000_update_genapic_to_cluster();
197 genapic->wait_for_init_deassert = noop_wait_for_deassert;
198 genapic->wakeup_cpu = wakeup_secondary_cpu_via_mip;
199 }
200
189 return 0; 201 return 0;
190} 202}
191#endif
192 203
193void __init 204void __init
194setup_unisys(void) 205setup_unisys(void)
@@ -206,9 +217,7 @@ setup_unisys(void)
206 es7000_plat = ES7000_CLASSIC; 217 es7000_plat = ES7000_CLASSIC;
207 ioapic_renumber_irq = es7000_rename_gsi; 218 ioapic_renumber_irq = es7000_rename_gsi;
208 219
209#ifdef CONFIG_ES7000_CLUSTERED_APIC
210 x86_quirks->update_genapic = es7000_update_genapic; 220 x86_quirks->update_genapic = es7000_update_genapic;
211#endif
212} 221}
213 222
214/* 223/*