aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/setup_64.c
diff options
context:
space:
mode:
authorAndreas Herrmann <andreas.herrmann3@amd.com>2007-11-01 14:32:17 -0400
committerThomas Gleixner <tglx@apollo.(none)>2007-11-17 10:27:00 -0500
commitc0c52d28e05e8bdaa2126570c02ecb1a7358cecc (patch)
tree70fc7c4a75760d8b7c8d9e2c53cf5f4484017a4c /arch/x86/kernel/setup_64.c
parent903675569e278af86aa08c2af238b0ab997065d1 (diff)
x86: show cpuinfo only for online CPUs
Fix regressions introduced with 92cb7612aee39642d109b8d935ad265e602c0563. It can happen that cpuinfo is displayed for CPUs that are not online or even worse for CPUs not present at all. As an example, following was shown for a "second" CPU of a single core K8 variant: processor : 0 vendor_id : unknown cpu family : 0 model : 0 model name : unknown stepping : 0 cache size : 0 KB fpu : yes fpu_exception : yes cpuid level : 0 wp : yes flags : bogomips : 0.00 clflush size : 0 cache_alignment : 0 address sizes : 0 bits physical, 0 bits virtual power management: Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/kernel/setup_64.c')
-rw-r--r--arch/x86/kernel/setup_64.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/arch/x86/kernel/setup_64.c b/arch/x86/kernel/setup_64.c
index 238633d3d09a..3cb3874489be 100644
--- a/arch/x86/kernel/setup_64.c
+++ b/arch/x86/kernel/setup_64.c
@@ -1078,8 +1078,6 @@ static int show_cpuinfo(struct seq_file *m, void *v)
1078 1078
1079 1079
1080#ifdef CONFIG_SMP 1080#ifdef CONFIG_SMP
1081 if (!cpu_online(c->cpu_index))
1082 return 0;
1083 cpu = c->cpu_index; 1081 cpu = c->cpu_index;
1084#endif 1082#endif
1085 1083
@@ -1171,15 +1169,15 @@ static int show_cpuinfo(struct seq_file *m, void *v)
1171static void *c_start(struct seq_file *m, loff_t *pos) 1169static void *c_start(struct seq_file *m, loff_t *pos)
1172{ 1170{
1173 if (*pos == 0) /* just in case, cpu 0 is not the first */ 1171 if (*pos == 0) /* just in case, cpu 0 is not the first */
1174 *pos = first_cpu(cpu_possible_map); 1172 *pos = first_cpu(cpu_online_map);
1175 if ((*pos) < NR_CPUS && cpu_possible(*pos)) 1173 if ((*pos) < NR_CPUS && cpu_online(*pos))
1176 return &cpu_data(*pos); 1174 return &cpu_data(*pos);
1177 return NULL; 1175 return NULL;
1178} 1176}
1179 1177
1180static void *c_next(struct seq_file *m, void *v, loff_t *pos) 1178static void *c_next(struct seq_file *m, void *v, loff_t *pos)
1181{ 1179{
1182 *pos = next_cpu(*pos, cpu_possible_map); 1180 *pos = next_cpu(*pos, cpu_online_map);
1183 return c_start(m, pos); 1181 return c_start(m, pos);
1184} 1182}
1185 1183