]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
x86, smp: refactor ->wait_for_init_deassert()
authorIngo Molnar <mingo@elte.hu>
Wed, 28 Jan 2009 15:21:32 +0000 (16:21 +0100)
committerIngo Molnar <mingo@elte.hu>
Wed, 28 Jan 2009 22:20:32 +0000 (23:20 +0100)
- 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>
arch/x86/include/asm/es7000/wakecpu.h
arch/x86/include/asm/mach-default/mach_wakecpu.h
arch/x86/include/asm/mach-generic/mach_wakecpu.h
arch/x86/include/asm/numaq/wakecpu.h
arch/x86/kernel/es7000_32.c
arch/x86/kernel/smpboot.c
arch/x86/mach-generic/bigsmp.c
arch/x86/mach-generic/default.c
arch/x86/mach-generic/es7000.c
arch/x86/mach-generic/numaq.c
arch/x86/mach-generic/summit.c

index 4c01be6ff80c1f8d3d1dd1ddf910880824f628ff..5c4d05f46d2d396aefb1cdad2f8c9d843b1096d9 100644 (file)
@@ -4,7 +4,7 @@
 #define ES7000_TRAMPOLINE_PHYS_LOW     0x467
 #define ES7000_TRAMPOLINE_PHYS_HIGH    0x469
 
-static inline void wait_for_init_deassert(atomic_t *deassert)
+static inline void es7000_wait_for_init_deassert(atomic_t *deassert)
 {
 #ifndef CONFIG_ES7000_CLUSTERED_APIC
        while (!atomic_read(deassert))
index a327a675e473897d58f1e129126c28a2e3e4104b..1d34c69a758b81bd117eff2996a020aaf6208cc5 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef _ASM_X86_MACH_DEFAULT_MACH_WAKECPU_H
 #define _ASM_X86_MACH_DEFAULT_MACH_WAKECPU_H
 
-static inline void wait_for_init_deassert(atomic_t *deassert)
+static inline void default_wait_for_init_deassert(atomic_t *deassert)
 {
        while (!atomic_read(deassert))
                cpu_relax();
index 2031377a954c2e9fd457d0cc344afe70eafb5c30..58e54122f7301320adc9683f1eeb1080bf9f1927 100644 (file)
@@ -1,7 +1,6 @@
 #ifndef _ASM_X86_MACH_GENERIC_MACH_WAKECPU_H
 #define _ASM_X86_MACH_GENERIC_MACH_WAKECPU_H
 
-#define wait_for_init_deassert (apic->wait_for_init_deassert)
 #define smp_callin_clear_local_apic (apic->smp_callin_clear_local_apic)
 #define store_NMI_vector (apic->store_NMI_vector)
 #define restore_NMI_vector (apic->restore_NMI_vector)
index 8b6c16d8558d024c4a9e8e5dde81c88707fc4a02..884b95cf5846ef503bb561c299383e592b5baa86 100644 (file)
@@ -6,11 +6,6 @@
 #define NUMAQ_TRAMPOLINE_PHYS_LOW (0x8)
 #define NUMAQ_TRAMPOLINE_PHYS_HIGH (0xa)
 
-/* We don't do anything here because we use NMI's to boot instead */
-static inline void wait_for_init_deassert(atomic_t *deassert)
-{
-}
-
 /*
  * Because we use NMIs rather than the INIT-STARTUP sequence to
  * bootstrap the CPUs, the APIC may be in a weird state. Kick it.
index e73fe18488ac5c9c6d7b2527a8e8dda28b5f8988..d7f433ee602d508950b0ff70e005de180178a3bd 100644 (file)
@@ -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;
        }
 
index ab83be2f8e0f2c6f3ae90f95222f0d68b3068043..558af378a61df9c8548a8957be8fdd72cfb99c55 100644 (file)
@@ -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.)
index a317fbe07fdfeeab5bc88e93f1a85f964a69074c..40910bfd1b42f7d7e6cd34c01a899c1624fdc15d 100644 (file)
@@ -106,7 +106,9 @@ struct genapic apic_bigsmp = {
        .wakeup_cpu                     = NULL,
        .trampoline_phys_low            = DEFAULT_TRAMPOLINE_PHYS_LOW,
        .trampoline_phys_high           = DEFAULT_TRAMPOLINE_PHYS_HIGH,
-       .wait_for_init_deassert         = wait_for_init_deassert,
+
+       .wait_for_init_deassert         = default_wait_for_init_deassert,
+
        .smp_callin_clear_local_apic    = smp_callin_clear_local_apic,
        .store_NMI_vector               = store_NMI_vector,
        .restore_NMI_vector             = restore_NMI_vector,
index 17d8f9c22180f12e7cf8398239ff7169b902e0a5..c2464843df9e6906adaddd43b8a67f151d6585c7 100644 (file)
@@ -87,7 +87,9 @@ struct genapic apic_default = {
        .wakeup_cpu                     = NULL,
        .trampoline_phys_low            = DEFAULT_TRAMPOLINE_PHYS_LOW,
        .trampoline_phys_high           = DEFAULT_TRAMPOLINE_PHYS_HIGH,
-       .wait_for_init_deassert         = wait_for_init_deassert,
+
+       .wait_for_init_deassert         = default_wait_for_init_deassert,
+
        .smp_callin_clear_local_apic    = smp_callin_clear_local_apic,
        .store_NMI_vector               = store_NMI_vector,
        .restore_NMI_vector             = restore_NMI_vector,
index 871e85445e21f939d18c8d7581e7a80b1267fe9c..4cb3984834ed7fd1a8f6373dad3a76810e33d15f 100644 (file)
@@ -142,7 +142,9 @@ struct genapic apic_es7000 = {
        .wakeup_cpu                     = NULL,
        .trampoline_phys_low            = DEFAULT_TRAMPOLINE_PHYS_LOW,
        .trampoline_phys_high           = DEFAULT_TRAMPOLINE_PHYS_HIGH,
-       .wait_for_init_deassert         = wait_for_init_deassert,
+
+       .wait_for_init_deassert         = default_wait_for_init_deassert,
+
        .smp_callin_clear_local_apic    = smp_callin_clear_local_apic,
        .store_NMI_vector               = store_NMI_vector,
        .restore_NMI_vector             = restore_NMI_vector,
index 0b496ab5450ce5ecc66402c27445fe21c8499e41..fb03867e7c0f636775c1b26d3735019770fff107 100644 (file)
@@ -106,7 +106,10 @@ struct genapic apic_numaq = {
        .wakeup_cpu                     = NULL,
        .trampoline_phys_low            = NUMAQ_TRAMPOLINE_PHYS_LOW,
        .trampoline_phys_high           = NUMAQ_TRAMPOLINE_PHYS_HIGH,
-       .wait_for_init_deassert         = wait_for_init_deassert,
+
+       /* We don't do anything here because we use NMI's to boot instead */
+       .wait_for_init_deassert         = NULL,
+
        .smp_callin_clear_local_apic    = smp_callin_clear_local_apic,
        .store_NMI_vector               = store_NMI_vector,
        .restore_NMI_vector             = restore_NMI_vector,
index c4799cd345926204e5422d5fec60c819837e5561..fdca78b96b6a984812b985d328769c4a8b907d5b 100644 (file)
@@ -86,7 +86,9 @@ struct genapic apic_summit = {
        .wakeup_cpu                     = NULL,
        .trampoline_phys_low            = DEFAULT_TRAMPOLINE_PHYS_LOW,
        .trampoline_phys_high           = DEFAULT_TRAMPOLINE_PHYS_HIGH,
-       .wait_for_init_deassert         = wait_for_init_deassert,
+
+       .wait_for_init_deassert         = default_wait_for_init_deassert,
+
        .smp_callin_clear_local_apic    = smp_callin_clear_local_apic,
        .store_NMI_vector               = store_NMI_vector,
        .restore_NMI_vector             = restore_NMI_vector,