diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-01-28 09:42:24 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-01-28 17:20:31 -0500 |
commit | dac5f4121df3c39fdb2ea57acd669a0ae19e46f8 (patch) | |
tree | c3dde8b525b1a8e73732bdffdb7e819f4a14fd3a /arch/x86/include/asm/mach-default | |
parent | debccb3e77be52cfc26c5a99e123c114c5c72aeb (diff) |
x86, apic: untangle the send_IPI_*() jungle
Our send_IPI_*() methods and definitions are a twisted mess: the same
symbol is defined to different things depending on .config details,
in a non-transparent way.
- spread out the quirks into separately named per apic driver methods
- prefix the standard PC methods with default_
- get rid of wrapper macro obfuscation
- clean up various details
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/include/asm/mach-default')
-rw-r--r-- | arch/x86/include/asm/mach-default/mach_apic.h | 1 | ||||
-rw-r--r-- | arch/x86/include/asm/mach-default/mach_ipi.h | 40 |
2 files changed, 17 insertions, 24 deletions
diff --git a/arch/x86/include/asm/mach-default/mach_apic.h b/arch/x86/include/asm/mach-default/mach_apic.h index 8972f8434145..2e4104cf3481 100644 --- a/arch/x86/include/asm/mach-default/mach_apic.h +++ b/arch/x86/include/asm/mach-default/mach_apic.h | |||
@@ -20,7 +20,6 @@ static inline const struct cpumask *default_target_cpus(void) | |||
20 | #ifdef CONFIG_X86_64 | 20 | #ifdef CONFIG_X86_64 |
21 | #include <asm/genapic.h> | 21 | #include <asm/genapic.h> |
22 | #define read_apic_id() (apic->get_apic_id(apic_read(APIC_ID))) | 22 | #define read_apic_id() (apic->get_apic_id(apic_read(APIC_ID))) |
23 | #define send_IPI_self (apic->send_IPI_self) | ||
24 | #define wakeup_secondary_cpu (apic->wakeup_cpu) | 23 | #define wakeup_secondary_cpu (apic->wakeup_cpu) |
25 | extern void default_setup_apic_routing(void); | 24 | extern void default_setup_apic_routing(void); |
26 | #else | 25 | #else |
diff --git a/arch/x86/include/asm/mach-default/mach_ipi.h b/arch/x86/include/asm/mach-default/mach_ipi.h index 089399643dfa..85dec630c69c 100644 --- a/arch/x86/include/asm/mach-default/mach_ipi.h +++ b/arch/x86/include/asm/mach-default/mach_ipi.h | |||
@@ -4,45 +4,40 @@ | |||
4 | /* Avoid include hell */ | 4 | /* Avoid include hell */ |
5 | #define NMI_VECTOR 0x02 | 5 | #define NMI_VECTOR 0x02 |
6 | 6 | ||
7 | void send_IPI_mask_bitmask(const struct cpumask *mask, int vector); | 7 | void default_send_IPI_mask_bitmask(const struct cpumask *mask, int vector); |
8 | void send_IPI_mask_allbutself(const struct cpumask *mask, int vector); | 8 | void default_send_IPI_mask_allbutself(const struct cpumask *mask, int vector); |
9 | void __send_IPI_shortcut(unsigned int shortcut, int vector); | 9 | void __default_send_IPI_shortcut(unsigned int shortcut, int vector); |
10 | 10 | ||
11 | extern int no_broadcast; | 11 | extern int no_broadcast; |
12 | 12 | ||
13 | #ifdef CONFIG_X86_64 | 13 | #ifdef CONFIG_X86_64 |
14 | #include <asm/genapic.h> | 14 | #include <asm/genapic.h> |
15 | #define send_IPI_mask (apic->send_IPI_mask) | ||
16 | #define send_IPI_mask_allbutself (apic->send_IPI_mask_allbutself) | ||
17 | #else | 15 | #else |
18 | static inline void send_IPI_mask(const struct cpumask *mask, int vector) | 16 | static inline void default_send_IPI_mask(const struct cpumask *mask, int vector) |
19 | { | 17 | { |
20 | send_IPI_mask_bitmask(mask, vector); | 18 | default_send_IPI_mask_bitmask(mask, vector); |
21 | } | 19 | } |
22 | void send_IPI_mask_allbutself(const struct cpumask *mask, int vector); | 20 | void default_send_IPI_mask_allbutself(const struct cpumask *mask, int vector); |
23 | #endif | 21 | #endif |
24 | 22 | ||
25 | static inline void __local_send_IPI_allbutself(int vector) | 23 | static inline void __default_local_send_IPI_allbutself(int vector) |
26 | { | 24 | { |
27 | if (no_broadcast || vector == NMI_VECTOR) | 25 | if (no_broadcast || vector == NMI_VECTOR) |
28 | send_IPI_mask_allbutself(cpu_online_mask, vector); | 26 | apic->send_IPI_mask_allbutself(cpu_online_mask, vector); |
29 | else | 27 | else |
30 | __send_IPI_shortcut(APIC_DEST_ALLBUT, vector); | 28 | __default_send_IPI_shortcut(APIC_DEST_ALLBUT, vector); |
31 | } | 29 | } |
32 | 30 | ||
33 | static inline void __local_send_IPI_all(int vector) | 31 | static inline void __default_local_send_IPI_all(int vector) |
34 | { | 32 | { |
35 | if (no_broadcast || vector == NMI_VECTOR) | 33 | if (no_broadcast || vector == NMI_VECTOR) |
36 | send_IPI_mask(cpu_online_mask, vector); | 34 | apic->send_IPI_mask(cpu_online_mask, vector); |
37 | else | 35 | else |
38 | __send_IPI_shortcut(APIC_DEST_ALLINC, vector); | 36 | __default_send_IPI_shortcut(APIC_DEST_ALLINC, vector); |
39 | } | 37 | } |
40 | 38 | ||
41 | #ifdef CONFIG_X86_64 | 39 | #ifdef CONFIG_X86_32 |
42 | #define send_IPI_allbutself (apic->send_IPI_allbutself) | 40 | static inline void default_send_IPI_allbutself(int vector) |
43 | #define send_IPI_all (apic->send_IPI_all) | ||
44 | #else | ||
45 | static inline void send_IPI_allbutself(int vector) | ||
46 | { | 41 | { |
47 | /* | 42 | /* |
48 | * if there are no other CPUs in the system then we get an APIC send | 43 | * if there are no other CPUs in the system then we get an APIC send |
@@ -51,13 +46,12 @@ static inline void send_IPI_allbutself(int vector) | |||
51 | if (!(num_online_cpus() > 1)) | 46 | if (!(num_online_cpus() > 1)) |
52 | return; | 47 | return; |
53 | 48 | ||
54 | __local_send_IPI_allbutself(vector); | 49 | __default_local_send_IPI_allbutself(vector); |
55 | return; | ||
56 | } | 50 | } |
57 | 51 | ||
58 | static inline void send_IPI_all(int vector) | 52 | static inline void default_send_IPI_all(int vector) |
59 | { | 53 | { |
60 | __local_send_IPI_all(vector); | 54 | __default_local_send_IPI_all(vector); |
61 | } | 55 | } |
62 | #endif | 56 | #endif |
63 | 57 | ||