]> git.hungrycats.org Git - linux/commitdiff
[PATCH] cleanup IPI code
authorMartin J. Bligh <mbligh@aracnet.com>
Mon, 23 Dec 2002 02:19:53 +0000 (18:19 -0800)
committerPatrick Mochel <mochel@osdl.org>
Mon, 23 Dec 2002 02:19:53 +0000 (18:19 -0800)
Reformat the IPI stuff, specifically send_IPI_mask, send_IPI_allbutself,
and send_IPI_all.  Though the way they work is pretty silly for NUMA-Q,
I do an equivalent transform here, and fix the code in a seperate patch
(next one).  Goes into mach_ipi.h

arch/i386/kernel/smp.c
include/asm-i386/mach-default/mach_ipi.h [new file with mode: 0644]
include/asm-i386/mach-numaq/mach_ipi.h [new file with mode: 0644]
include/asm-i386/mach-summit/mach_ipi.h [new file with mode: 0644]

index 0d463df558c3bd2595599c1a6eae16c2e4feef06..c69963ca6bc7f5127cee0033edca88809b4425a2 100644 (file)
@@ -24,6 +24,7 @@
 #include <asm/pgalloc.h>
 #include <asm/tlbflush.h>
 #include <asm/smpboot.h>
+#include <mach_ipi.h>
 
 /*
  *     Some notes on x86 processor bugs affecting SMP operation:
@@ -227,54 +228,6 @@ static inline void send_IPI_mask_sequence(int mask, int vector)
        local_irq_restore(flags);
 }
 
-static inline void send_IPI_mask(int mask, int vector)
-{
-       if (clustered_apic_mode) 
-               send_IPI_mask_sequence(mask, vector);
-       else
-               send_IPI_mask_bitmask(mask, vector);
-}
-
-static inline void send_IPI_allbutself(int vector)
-{
-       /*
-        * if there are no other CPUs in the system then
-        * we get an APIC send error if we try to broadcast.
-        * thus we have to avoid sending IPIs in this case.
-        */
-       if (!(num_online_cpus() > 1))
-               return;
-
-       if (clustered_apic_mode) {
-               // Pointless. Use send_IPI_mask to do this instead
-               int cpu;
-
-               for (cpu = 0; cpu < NR_CPUS; ++cpu) {
-                       if (cpu_online(cpu) && cpu != smp_processor_id())
-                               send_IPI_mask(1 << cpu, vector);
-               }
-       } else {
-               __send_IPI_shortcut(APIC_DEST_ALLBUT, vector);
-               return;
-       }
-}
-
-static inline void send_IPI_all(int vector)
-{
-       if (clustered_apic_mode) {
-               // Pointless. Use send_IPI_mask to do this instead
-               int cpu;
-
-               for (cpu = 0; cpu < NR_CPUS; ++cpu) {
-                       if (!cpu_online(cpu))
-                               continue;
-                       send_IPI_mask(1 << cpu, vector);
-               }
-       } else {
-               __send_IPI_shortcut(APIC_DEST_ALLINC, vector);
-       }
-}
-
 /*
  *     Smarter SMP flushing macros. 
  *             c/o Linus Torvalds.
diff --git a/include/asm-i386/mach-default/mach_ipi.h b/include/asm-i386/mach-default/mach_ipi.h
new file mode 100644 (file)
index 0000000..481692a
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef __ASM_MACH_IPI_H
+#define __ASM_MACH_IPI_H
+
+static inline void send_IPI_mask_bitmask(int mask, int vector);
+static inline void __send_IPI_shortcut(unsigned int shortcut, int vector);
+
+static inline void send_IPI_mask(int mask, int vector)
+{
+       send_IPI_mask_bitmask(mask, vector);
+}
+
+static inline void send_IPI_allbutself(int vector)
+{
+       /*
+        * if there are no other CPUs in the system then we get an APIC send 
+        * error if we try to broadcast, thus avoid sending IPIs in this case.
+        */
+       if (!(num_online_cpus() > 1))
+               return;
+
+       __send_IPI_shortcut(APIC_DEST_ALLBUT, vector);
+       return;
+}
+
+static inline void send_IPI_all(int vector)
+{
+       __send_IPI_shortcut(APIC_DEST_ALLINC, vector);
+}
+
+#endif /* __ASM_MACH_IPI_H */
diff --git a/include/asm-i386/mach-numaq/mach_ipi.h b/include/asm-i386/mach-numaq/mach_ipi.h
new file mode 100644 (file)
index 0000000..382f337
--- /dev/null
@@ -0,0 +1,39 @@
+#ifndef __ASM_MACH_IPI_H
+#define __ASM_MACH_IPI_H
+
+static inline void send_IPI_mask_sequence(int mask, int vector);
+
+static inline void send_IPI_mask(int mask, int vector)
+{
+       send_IPI_mask_sequence(mask, vector);
+}
+
+static inline void send_IPI_allbutself(int vector)
+{
+       int cpu;
+       /*
+        * if there are no other CPUs in the system then we get an APIC send 
+        * error if we try to broadcast, thus avoid sending IPIs in this case.
+        */
+       if (!(num_online_cpus() > 1))
+               return;
+
+       /* Pointless. Use send_IPI_mask to do this instead */
+       for (cpu = 0; cpu < NR_CPUS; ++cpu)
+               if (cpu_online(cpu) && cpu != smp_processor_id())
+                       send_IPI_mask(1 << cpu, vector);
+
+       return;
+}
+
+static inline void send_IPI_all(int vector)
+{
+       int cpu;
+
+       /* Pointless. Use send_IPI_mask to do this instead */
+       for (cpu = 0; cpu < NR_CPUS; ++cpu)
+               if (cpu_online(cpu))
+                       send_IPI_mask(1 << cpu, vector);
+}
+
+#endif /* __ASM_MACH_IPI_H */
diff --git a/include/asm-i386/mach-summit/mach_ipi.h b/include/asm-i386/mach-summit/mach_ipi.h
new file mode 100644 (file)
index 0000000..382f337
--- /dev/null
@@ -0,0 +1,39 @@
+#ifndef __ASM_MACH_IPI_H
+#define __ASM_MACH_IPI_H
+
+static inline void send_IPI_mask_sequence(int mask, int vector);
+
+static inline void send_IPI_mask(int mask, int vector)
+{
+       send_IPI_mask_sequence(mask, vector);
+}
+
+static inline void send_IPI_allbutself(int vector)
+{
+       int cpu;
+       /*
+        * if there are no other CPUs in the system then we get an APIC send 
+        * error if we try to broadcast, thus avoid sending IPIs in this case.
+        */
+       if (!(num_online_cpus() > 1))
+               return;
+
+       /* Pointless. Use send_IPI_mask to do this instead */
+       for (cpu = 0; cpu < NR_CPUS; ++cpu)
+               if (cpu_online(cpu) && cpu != smp_processor_id())
+                       send_IPI_mask(1 << cpu, vector);
+
+       return;
+}
+
+static inline void send_IPI_all(int vector)
+{
+       int cpu;
+
+       /* Pointless. Use send_IPI_mask to do this instead */
+       for (cpu = 0; cpu < NR_CPUS; ++cpu)
+               if (cpu_online(cpu))
+                       send_IPI_mask(1 << cpu, vector);
+}
+
+#endif /* __ASM_MACH_IPI_H */