diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-01-28 16:21:32 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-01-28 23:20:32 +0100 |
commit | a965936643e28af8152d9e960b966baa1a5588a2 (patch) | |
tree | f86d64139f85fcaa627840275519a03f3b4fcc86 /arch/x86/kernel | |
parent | abfa584c8df8b691cf18f51c7d4af27e5b32be4a (diff) | |
download | talos-op-linux-a965936643e28af8152d9e960b966baa1a5588a2.tar.gz talos-op-linux-a965936643e28af8152d9e960b966baa1a5588a2.zip |
x86, smp: refactor ->wait_for_init_deassert()
- spread out the namespace on a per APIC driver basis
- handle a NULL ->wait_for_init_deassert() as a 'dont wait' default method
- remove NUMAQ and Summit handlers
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel')
-rw-r--r-- | arch/x86/kernel/es7000_32.c | 6 | ||||
-rw-r--r-- | arch/x86/kernel/smpboot.c | 3 |
2 files changed, 3 insertions, 6 deletions
diff --git a/arch/x86/kernel/es7000_32.c b/arch/x86/kernel/es7000_32.c index e73fe18488ac..d7f433ee602d 100644 --- a/arch/x86/kernel/es7000_32.c +++ b/arch/x86/kernel/es7000_32.c @@ -182,10 +182,6 @@ static int wakeup_secondary_cpu_via_mip(int cpu, unsigned long eip) return 0; } -static void noop_wait_for_deassert(atomic_t *deassert_not_used) -{ -} - static int __init es7000_update_genapic(void) { apic->wakeup_cpu = wakeup_secondary_cpu_via_mip; @@ -194,7 +190,7 @@ static int __init es7000_update_genapic(void) if (boot_cpu_data.x86 == 6 && (boot_cpu_data.x86_model >= 7 || boot_cpu_data.x86_model <= 11)) { es7000_update_genapic_to_cluster(); - apic->wait_for_init_deassert = noop_wait_for_deassert; + apic->wait_for_init_deassert = NULL; apic->wakeup_cpu = wakeup_secondary_cpu_via_mip; } diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index ab83be2f8e0f..558af378a61d 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c @@ -196,7 +196,8 @@ static void __cpuinit smp_callin(void) * our local APIC. We have to wait for the IPI or we'll * lock up on an APIC access. */ - wait_for_init_deassert(&init_deasserted); + if (apic->wait_for_init_deassert) + apic->wait_for_init_deassert(&init_deasserted); /* * (This works even if the APIC is not enabled.) |