diff options
Diffstat (limited to 'arch/x86/kernel/es7000_32.c')
-rw-r--r-- | arch/x86/kernel/es7000_32.c | 17 |
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 | ||
167 | static int wakeup_secondary_cpu_via_mip(int cpu, unsigned long eip) | 167 | static 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 | ||
185 | static void noop_wait_for_deassert(atomic_t *deassert_not_used) | ||
186 | { | ||
187 | } | ||
188 | |||
185 | static int __init es7000_update_genapic(void) | 189 | static 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 | ||
193 | void __init | 204 | void __init |
194 | setup_unisys(void) | 205 | setup_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 | /* |