aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/es7000_32.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/es7000_32.c')
-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/*