diff options
author | Kumar Gala <galak@kernel.crashing.org> | 2009-08-04 23:33:32 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-08-19 20:25:12 -0400 |
commit | 67050b5c3e9992d98554bd224d5a7898cc4881ff (patch) | |
tree | 296c4d21e193c22e3e31f01799c0048f45df41c7 | |
parent | af984b816530b4725b92e01ecfba7c5e3eab910d (diff) |
powerpc/mm: Fix switch_mmu_context to iterate of the proper list of cpus
Introduced a temporary variable into our iterating over the list cpus
that are threads on the same core. For some reason Ben forgot how for
loops work.
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-rw-r--r-- | arch/powerpc/mm/mmu_context_nohash.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/powerpc/mm/mmu_context_nohash.c b/arch/powerpc/mm/mmu_context_nohash.c index 834436d6d6b8..c2f93dc470e6 100644 --- a/arch/powerpc/mm/mmu_context_nohash.c +++ b/arch/powerpc/mm/mmu_context_nohash.c | |||
@@ -190,7 +190,7 @@ static void context_check_map(void) { } | |||
190 | 190 | ||
191 | void switch_mmu_context(struct mm_struct *prev, struct mm_struct *next) | 191 | void switch_mmu_context(struct mm_struct *prev, struct mm_struct *next) |
192 | { | 192 | { |
193 | unsigned int id, cpu = smp_processor_id(); | 193 | unsigned int i, id, cpu = smp_processor_id(); |
194 | unsigned long *map; | 194 | unsigned long *map; |
195 | 195 | ||
196 | /* No lockless fast path .. yet */ | 196 | /* No lockless fast path .. yet */ |
@@ -269,9 +269,10 @@ void switch_mmu_context(struct mm_struct *prev, struct mm_struct *next) | |||
269 | local_flush_tlb_mm(next); | 269 | local_flush_tlb_mm(next); |
270 | 270 | ||
271 | /* XXX This clear should ultimately be part of local_flush_tlb_mm */ | 271 | /* XXX This clear should ultimately be part of local_flush_tlb_mm */ |
272 | for (cpu = cpu_first_thread_in_core(cpu); | 272 | for (i = cpu_first_thread_in_core(cpu); |
273 | cpu <= cpu_last_thread_in_core(cpu); cpu++) | 273 | i <= cpu_last_thread_in_core(cpu); i++) { |
274 | __clear_bit(id, stale_map[cpu]); | 274 | __clear_bit(id, stale_map[i]); |
275 | } | ||
275 | } | 276 | } |
276 | 277 | ||
277 | /* Flick the MMU and release lock */ | 278 | /* Flick the MMU and release lock */ |