diff options
author | Andi Kleen <ak@suse.de> | 2005-07-29 00:15:25 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-07-29 00:45:57 -0400 |
commit | 74f0629397cb435e144ff47c48f3bc39e879f196 (patch) | |
tree | a5e7a0c889304e3e56b54ea2c8006aa23589cd11 /include | |
parent | acc7b6f01c3d387faa34233a25949eaaf18e0753 (diff) |
[PATCH] x86_64: Use for_each_cpu_mask for clustered IPI flush
Makes it slightly more efficient.
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-x86_64/ipi.h | 45 |
1 files changed, 21 insertions, 24 deletions
diff --git a/include/asm-x86_64/ipi.h b/include/asm-x86_64/ipi.h index d1841847ed89..5e166b9d3bde 100644 --- a/include/asm-x86_64/ipi.h +++ b/include/asm-x86_64/ipi.h | |||
@@ -82,30 +82,27 @@ static inline void send_IPI_mask_sequence(cpumask_t mask, int vector) | |||
82 | */ | 82 | */ |
83 | local_irq_save(flags); | 83 | local_irq_save(flags); |
84 | 84 | ||
85 | for (query_cpu = 0; query_cpu < NR_CPUS; ++query_cpu) { | 85 | for_each_cpu_mask(query_cpu, mask) { |
86 | if (cpu_isset(query_cpu, mask)) { | 86 | /* |
87 | 87 | * Wait for idle. | |
88 | /* | 88 | */ |
89 | * Wait for idle. | 89 | apic_wait_icr_idle(); |
90 | */ | 90 | |
91 | apic_wait_icr_idle(); | 91 | /* |
92 | 92 | * prepare target chip field | |
93 | /* | 93 | */ |
94 | * prepare target chip field | 94 | cfg = __prepare_ICR2(x86_cpu_to_apicid[query_cpu]); |
95 | */ | 95 | apic_write_around(APIC_ICR2, cfg); |
96 | cfg = __prepare_ICR2(x86_cpu_to_apicid[query_cpu]); | 96 | |
97 | apic_write_around(APIC_ICR2, cfg); | 97 | /* |
98 | 98 | * program the ICR | |
99 | /* | 99 | */ |
100 | * program the ICR | 100 | cfg = __prepare_ICR(0, vector, APIC_DEST_PHYSICAL); |
101 | */ | 101 | |
102 | cfg = __prepare_ICR(0, vector, APIC_DEST_PHYSICAL); | 102 | /* |
103 | 103 | * Send the IPI. The write to APIC_ICR fires this off. | |
104 | /* | 104 | */ |
105 | * Send the IPI. The write to APIC_ICR fires this off. | 105 | apic_write_around(APIC_ICR, cfg); |
106 | */ | ||
107 | apic_write_around(APIC_ICR, cfg); | ||
108 | } | ||
109 | } | 106 | } |
110 | local_irq_restore(flags); | 107 | local_irq_restore(flags); |
111 | } | 108 | } |