powerpc/cpumask: Convert /proc/cpuinfo to new cpumask API
authorAnton Blanchard <anton@samba.org>
Mon, 26 Apr 2010 15:32:40 +0000 (15:32 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Thu, 6 May 2010 07:41:55 +0000 (17:41 +1000)
Use new cpumask API in /proc/cpuinfo code.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/kernel/setup-common.c

index 58699a43eaa2cd7e007fd5d3a08625a3c87ecc11..8dcec47a7b39725ec6521415bc37a38229f55268 100644 (file)
@@ -200,11 +200,6 @@ static int show_cpuinfo(struct seq_file *m, void *v)
        unsigned short maj;
        unsigned short min;
 
-       if (cpu_id == NR_CPUS) {
-               show_cpuinfo_summary(m);
-               return 0;
-       }
-
        /* We only show online cpus: disable preempt (overzealous, I
         * knew) to prevent cpu going down. */
        preempt_disable();
@@ -312,19 +307,28 @@ static int show_cpuinfo(struct seq_file *m, void *v)
 #endif
 
        preempt_enable();
+
+       /* If this is the last cpu, print the summary */
+       if (cpumask_next(cpu_id, cpu_online_mask) >= nr_cpu_ids)
+               show_cpuinfo_summary(m);
+
        return 0;
 }
 
 static void *c_start(struct seq_file *m, loff_t *pos)
 {
-       unsigned long i = *pos;
-
-       return i <= NR_CPUS ? (void *)(i + 1) : NULL;
+       if (*pos == 0)  /* just in case, cpu 0 is not the first */
+               *pos = cpumask_first(cpu_online_mask);
+       else
+               *pos = cpumask_next(*pos - 1, cpu_online_mask);
+       if ((*pos) < nr_cpu_ids)
+               return (void *)(unsigned long)(*pos + 1);
+       return NULL;
 }
 
 static void *c_next(struct seq_file *m, void *v, loff_t *pos)
 {
-       ++*pos;
+       (*pos)++;
        return c_start(m, pos);
 }