Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b5eb551145395382ddf302548991a5fbaabc5341
Commit:     b5eb551145395382ddf302548991a5fbaabc5341
Parent:     bd6aeeffcc0be716e4d2d1f27fb132741e345cc0
Author:     Ralf Baechle <[EMAIL PROTECTED]>
AuthorDate: Wed Oct 3 19:16:57 2007 +0100
Committer:  Ralf Baechle <[EMAIL PROTECTED]>
CommitDate: Thu Oct 11 23:46:18 2007 +0100

    [MIPS] Kill num_online_cpus() loops.
    
    Signed-off-by: Ralf Baechle <[EMAIL PROTECTED]>
---
 arch/mips/kernel/gdb-stub.c    |    4 ++--
 arch/mips/kernel/smp.c         |   33 +++++++++++++++++++++------------
 arch/mips/kernel/smtc.c        |    4 ++--
 include/asm-mips/mmu_context.h |    4 ++--
 4 files changed, 27 insertions(+), 18 deletions(-)

diff --git a/arch/mips/kernel/gdb-stub.c b/arch/mips/kernel/gdb-stub.c
index bd128fa..3191afa 100644
--- a/arch/mips/kernel/gdb-stub.c
+++ b/arch/mips/kernel/gdb-stub.c
@@ -769,7 +769,7 @@ void handle_exception(struct gdb_regs *regs)
        /*
         * acquire the CPU spinlocks
         */
-       for (i = num_online_cpus()-1; i >= 0; i--)
+       for_each_online_cpu(i)
                if (__raw_spin_trylock(&kgdb_cpulock[i]) == 0)
                        panic("kgdb: couldn't get cpulock %d\n", i);
 
@@ -1044,7 +1044,7 @@ finish_kgdb:
 
 exit_kgdb_exception:
        /* release locks so other CPUs can go */
-       for (i = num_online_cpus()-1; i >= 0; i--)
+       for_each_online_cpu(i)
                __raw_spin_unlock(&kgdb_cpulock[i]);
        spin_unlock(&kgdb_lock);
 
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
index 481ba53..5ca3809 100644
--- a/arch/mips/kernel/smp.c
+++ b/arch/mips/kernel/smp.c
@@ -375,10 +375,13 @@ void flush_tlb_mm(struct mm_struct *mm)
        if ((atomic_read(&mm->mm_users) != 1) || (current->mm != mm)) {
                smp_on_other_tlbs(flush_tlb_mm_ipi, (void *)mm);
        } else {
-               int i;
-               for (i = 0; i < num_online_cpus(); i++)
-                       if (smp_processor_id() != i)
-                               cpu_context(i, mm) = 0;
+               cpumask_t mask = cpu_online_map;
+               unsigned int cpu;
+
+               cpu_clear(smp_processor_id(), mask);
+               for_each_online_cpu(cpu)
+                       if (cpu_context(cpu, mm))
+                               cpu_context(cpu, mm) = 0;
        }
        local_flush_tlb_mm(mm);
 
@@ -411,10 +414,13 @@ void flush_tlb_range(struct vm_area_struct *vma, unsigned 
long start, unsigned l
                fd.addr2 = end;
                smp_on_other_tlbs(flush_tlb_range_ipi, (void *)&fd);
        } else {
-               int i;
-               for (i = 0; i < num_online_cpus(); i++)
-                       if (smp_processor_id() != i)
-                               cpu_context(i, mm) = 0;
+               cpumask_t mask = cpu_online_map;
+               unsigned int cpu;
+
+               cpu_clear(smp_processor_id(), mask);
+               for_each_online_cpu(cpu)
+                       if (cpu_context(cpu, mm))
+                               cpu_context(cpu, mm) = 0;
        }
        local_flush_tlb_range(vma, start, end);
        preempt_enable();
@@ -453,10 +459,13 @@ void flush_tlb_page(struct vm_area_struct *vma, unsigned 
long page)
                fd.addr1 = page;
                smp_on_other_tlbs(flush_tlb_page_ipi, (void *)&fd);
        } else {
-               int i;
-               for (i = 0; i < num_online_cpus(); i++)
-                       if (smp_processor_id() != i)
-                               cpu_context(i, vma->vm_mm) = 0;
+               cpumask_t mask = cpu_online_map;
+               unsigned int cpu;
+
+               cpu_clear(smp_processor_id(), mask);
+               for_each_online_cpu(cpu)
+                       if (cpu_context(cpu, vma->vm_mm))
+                               cpu_context(cpu, vma->vm_mm) = 0;
        }
        local_flush_tlb_page(vma, page);
        preempt_enable();
diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c
index 4d91e2f..a8c1a69 100644
--- a/arch/mips/kernel/smtc.c
+++ b/arch/mips/kernel/smtc.c
@@ -1264,7 +1264,7 @@ void smtc_get_new_mmu_context(struct mm_struct *mm, 
unsigned long cpu)
                        if (cpu_has_vtag_icache)
                                flush_icache_all();
                        /* Traverse all online CPUs (hack requires contigous 
range) */
-                       for (i = 0; i < num_online_cpus(); i++) {
+                       for_each_online_cpu(i) {
                                /*
                                 * We don't need to worry about our own CPU, 
nor those of
                                 * CPUs who don't share our TLB.
@@ -1293,7 +1293,7 @@ void smtc_get_new_mmu_context(struct mm_struct *mm, 
unsigned long cpu)
        /*
         * SMTC shares the TLB within VPEs and possibly across all VPEs.
         */
-       for (i = 0; i < num_online_cpus(); i++) {
+       for_each_online_cpu(i) {
                if ((smtc_status & SMTC_TLB_SHARED) ||
                    (cpu_data[i].vpe_id == cpu_data[cpu].vpe_id))
                        cpu_context(i, mm) = asid_cache(i) = asid;
diff --git a/include/asm-mips/mmu_context.h b/include/asm-mips/mmu_context.h
index b3b7a68..0c4f245 100644
--- a/include/asm-mips/mmu_context.h
+++ b/include/asm-mips/mmu_context.h
@@ -120,7 +120,7 @@ init_new_context(struct task_struct *tsk, struct mm_struct 
*mm)
 {
        int i;
 
-       for (i = 0; i < num_online_cpus(); i++)
+       for_each_online_cpu(i)
                cpu_context(i, mm) = 0;
 
        return 0;
@@ -284,7 +284,7 @@ drop_mmu_context(struct mm_struct *mm, unsigned cpu)
                int i;
 
                /* SMTC shares the TLB (and ASIDs) across VPEs */
-               for (i = 0; i < num_online_cpus(); i++) {
+               for_each_online_cpu(i) {
                    if((smtc_status & SMTC_TLB_SHARED)
                    || (cpu_data[i].vpe_id == cpu_data[cpu].vpe_id))
                        cpu_context(i, mm) = 0;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to