[S390] cpuinfo: use get_online_cpus() instead of preempt_disable()
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Wed, 5 Jan 2011 11:48:17 +0000 (12:48 +0100)
committerMartin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com>
Wed, 5 Jan 2011 11:47:31 +0000 (12:47 +0100)
Use get_online_cpus() instead of preempt_disable() to make sure cpus
don't go offline while accessing their per cpu data.
The preempt_disable() stuff is old code which was used before
get_online_cpus() was available.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/processor.c

index eeb651b..753623b 100644 (file)
@@ -13,7 +13,7 @@
 #include <linux/smp.h>
 #include <linux/seq_file.h>
 #include <linux/delay.h>
-
+#include <linux/cpu.h>
 #include <asm/elf.h>
 #include <asm/lowcore.h>
 #include <asm/param.h>
@@ -47,7 +47,6 @@ static int show_cpuinfo(struct seq_file *m, void *v)
        int i;
 
        s390_adjust_jiffies();
-       preempt_disable();
        if (!n) {
                seq_printf(m, "vendor_id       : IBM/S390\n"
                           "# processors    : %i\n"
@@ -60,7 +59,7 @@ static int show_cpuinfo(struct seq_file *m, void *v)
                                seq_printf(m, "%s ", hwcap_str[i]);
                seq_puts(m, "\n");
        }
-
+       get_online_cpus();
        if (cpu_online(n)) {
                struct cpuid *id = &per_cpu(cpu_id, n);
                seq_printf(m, "processor %li: "
@@ -69,7 +68,7 @@ static int show_cpuinfo(struct seq_file *m, void *v)
                           "machine = %04X\n",
                           n, id->version, id->ident, id->machine);
        }
-       preempt_enable();
+       put_online_cpus();
        return 0;
 }