diff options
author | Yinghai Lu <yinghai@kernel.org> | 2009-02-25 23:50:49 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-02-26 00:32:25 -0500 |
commit | 2b6163bf5772644068694583816fa41e8474239f (patch) | |
tree | b854e9070254ad2942901941b67e8a56d61f7f91 /arch/x86/kernel/apic/probe_32.c | |
parent | ecc25fbd6b9e07b33895c61ddf84006b00f55d99 (diff) |
x86: remove update_apic from x86_quirks
Impact: cleanup
x86_quirks->update_apic() calling looks crazy. so try to remove it:
1. every apic take wakeup_cpu member directly
2. separate es7000_apic to es7000_apic_cluster
3. use uv_wakeup_cpu directly
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/apic/probe_32.c')
-rw-r--r-- | arch/x86/kernel/apic/probe_32.c | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/arch/x86/kernel/apic/probe_32.c b/arch/x86/kernel/apic/probe_32.c index 3a730fa574bb..13c6fc7dff99 100644 --- a/arch/x86/kernel/apic/probe_32.c +++ b/arch/x86/kernel/apic/probe_32.c | |||
@@ -138,7 +138,7 @@ struct apic apic_default = { | |||
138 | .send_IPI_all = default_send_IPI_all, | 138 | .send_IPI_all = default_send_IPI_all, |
139 | .send_IPI_self = default_send_IPI_self, | 139 | .send_IPI_self = default_send_IPI_self, |
140 | 140 | ||
141 | .wakeup_cpu = NULL, | 141 | .wakeup_cpu = wakeup_secondary_cpu_via_init, |
142 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, | 142 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, |
143 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, | 143 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, |
144 | 144 | ||
@@ -159,6 +159,7 @@ extern struct apic apic_numaq; | |||
159 | extern struct apic apic_summit; | 159 | extern struct apic apic_summit; |
160 | extern struct apic apic_bigsmp; | 160 | extern struct apic apic_bigsmp; |
161 | extern struct apic apic_es7000; | 161 | extern struct apic apic_es7000; |
162 | extern struct apic apic_es7000_cluster; | ||
162 | extern struct apic apic_default; | 163 | extern struct apic apic_default; |
163 | 164 | ||
164 | struct apic *apic = &apic_default; | 165 | struct apic *apic = &apic_default; |
@@ -176,6 +177,7 @@ static struct apic *apic_probe[] __initdata = { | |||
176 | #endif | 177 | #endif |
177 | #ifdef CONFIG_X86_ES7000 | 178 | #ifdef CONFIG_X86_ES7000 |
178 | &apic_es7000, | 179 | &apic_es7000, |
180 | &apic_es7000_cluster, | ||
179 | #endif | 181 | #endif |
180 | &apic_default, /* must be last */ | 182 | &apic_default, /* must be last */ |
181 | NULL, | 183 | NULL, |
@@ -197,9 +199,6 @@ static int __init parse_apic(char *arg) | |||
197 | } | 199 | } |
198 | } | 200 | } |
199 | 201 | ||
200 | if (x86_quirks->update_apic) | ||
201 | x86_quirks->update_apic(); | ||
202 | |||
203 | /* Parsed again by __setup for debug/verbose */ | 202 | /* Parsed again by __setup for debug/verbose */ |
204 | return 0; | 203 | return 0; |
205 | } | 204 | } |
@@ -218,8 +217,6 @@ void __init generic_bigsmp_probe(void) | |||
218 | if (!cmdline_apic && apic == &apic_default) { | 217 | if (!cmdline_apic && apic == &apic_default) { |
219 | if (apic_bigsmp.probe()) { | 218 | if (apic_bigsmp.probe()) { |
220 | apic = &apic_bigsmp; | 219 | apic = &apic_bigsmp; |
221 | if (x86_quirks->update_apic) | ||
222 | x86_quirks->update_apic(); | ||
223 | printk(KERN_INFO "Overriding APIC driver with %s\n", | 220 | printk(KERN_INFO "Overriding APIC driver with %s\n", |
224 | apic->name); | 221 | apic->name); |
225 | } | 222 | } |
@@ -240,9 +237,6 @@ void __init generic_apic_probe(void) | |||
240 | /* Not visible without early console */ | 237 | /* Not visible without early console */ |
241 | if (!apic_probe[i]) | 238 | if (!apic_probe[i]) |
242 | panic("Didn't find an APIC driver"); | 239 | panic("Didn't find an APIC driver"); |
243 | |||
244 | if (x86_quirks->update_apic) | ||
245 | x86_quirks->update_apic(); | ||
246 | } | 240 | } |
247 | printk(KERN_INFO "Using APIC driver %s\n", apic->name); | 241 | printk(KERN_INFO "Using APIC driver %s\n", apic->name); |
248 | } | 242 | } |
@@ -262,8 +256,6 @@ generic_mps_oem_check(struct mpc_table *mpc, char *oem, char *productid) | |||
262 | 256 | ||
263 | if (!cmdline_apic) { | 257 | if (!cmdline_apic) { |
264 | apic = apic_probe[i]; | 258 | apic = apic_probe[i]; |
265 | if (x86_quirks->update_apic) | ||
266 | x86_quirks->update_apic(); | ||
267 | printk(KERN_INFO "Switched to APIC driver `%s'.\n", | 259 | printk(KERN_INFO "Switched to APIC driver `%s'.\n", |
268 | apic->name); | 260 | apic->name); |
269 | } | 261 | } |
@@ -284,8 +276,6 @@ int __init default_acpi_madt_oem_check(char *oem_id, char *oem_table_id) | |||
284 | 276 | ||
285 | if (!cmdline_apic) { | 277 | if (!cmdline_apic) { |
286 | apic = apic_probe[i]; | 278 | apic = apic_probe[i]; |
287 | if (x86_quirks->update_apic) | ||
288 | x86_quirks->update_apic(); | ||
289 | printk(KERN_INFO "Switched to APIC driver `%s'.\n", | 279 | printk(KERN_INFO "Switched to APIC driver `%s'.\n", |
290 | apic->name); | 280 | apic->name); |
291 | } | 281 | } |