aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorSiddha, Suresh B <suresh.b.siddha@intel.com>2005-04-16 18:25:20 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-16 18:25:20 -0400
commitd31ddaa1722793228b364e87b6c589023b348798 (patch)
treef2c5cfc616721896ad63934aa84da6d44defdf9c /arch
parenta8ab26fe5bfeef43bdcde5182ca051ae0647607e (diff)
[PATCH] x86, x86_64: dual core proc-cpuinfo and sibling-map fix
- broken sibling_map setup in x86_64 - grouping all the core and HT related cpuinfo fields. We are reasonably sure that adding new cpuinfo fields after "siblings" field, will not cause any app failure. Thats because today's /proc/cpuinfo format is completely different on x86, x86_64 and we haven't heard of any x86 app breakage because of this issue. Grouping these fields will result in more or less common format on all architectures (ia64, x86 and x86_64) and will cause less confusion. Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/i386/kernel/cpu/proc.c9
-rw-r--r--arch/x86_64/kernel/setup.c11
-rw-r--r--arch/x86_64/kernel/smpboot.c2
3 files changed, 6 insertions, 16 deletions
diff --git a/arch/i386/kernel/cpu/proc.c b/arch/i386/kernel/cpu/proc.c
index 0f1125b15b76..4f28eba7fb8a 100644
--- a/arch/i386/kernel/cpu/proc.c
+++ b/arch/i386/kernel/cpu/proc.c
@@ -98,6 +98,8 @@ static int show_cpuinfo(struct seq_file *m, void *v)
98 seq_printf(m, "physical id\t: %d\n", phys_proc_id[n]); 98 seq_printf(m, "physical id\t: %d\n", phys_proc_id[n]);
99 seq_printf(m, "siblings\t: %d\n", 99 seq_printf(m, "siblings\t: %d\n",
100 c->x86_num_cores * smp_num_siblings); 100 c->x86_num_cores * smp_num_siblings);
101 seq_printf(m, "core id\t\t: %d\n", cpu_core_id[n]);
102 seq_printf(m, "cpu cores\t: %d\n", c->x86_num_cores);
101 } 103 }
102#endif 104#endif
103 105
@@ -130,13 +132,6 @@ static int show_cpuinfo(struct seq_file *m, void *v)
130 c->loops_per_jiffy/(500000/HZ), 132 c->loops_per_jiffy/(500000/HZ),
131 (c->loops_per_jiffy/(5000/HZ)) % 100); 133 (c->loops_per_jiffy/(5000/HZ)) % 100);
132 134
133#ifdef CONFIG_SMP
134 /* Put new fields at the end to lower the probability of
135 breaking user space parsers. */
136 seq_printf(m, "core id\t\t: %d\n", cpu_core_id[n]);
137 seq_printf(m, "cpu cores\t: %d\n", c->x86_num_cores);
138#endif
139
140 return 0; 135 return 0;
141} 136}
142 137
diff --git a/arch/x86_64/kernel/setup.c b/arch/x86_64/kernel/setup.c
index 7ba443584a0c..b18c114c7648 100644
--- a/arch/x86_64/kernel/setup.c
+++ b/arch/x86_64/kernel/setup.c
@@ -1152,6 +1152,8 @@ static int show_cpuinfo(struct seq_file *m, void *v)
1152 seq_printf(m, "physical id\t: %d\n", phys_proc_id[cpu]); 1152 seq_printf(m, "physical id\t: %d\n", phys_proc_id[cpu]);
1153 seq_printf(m, "siblings\t: %d\n", 1153 seq_printf(m, "siblings\t: %d\n",
1154 c->x86_num_cores * smp_num_siblings); 1154 c->x86_num_cores * smp_num_siblings);
1155 seq_printf(m, "core id\t\t: %d\n", cpu_core_id[cpu]);
1156 seq_printf(m, "cpu cores\t: %d\n", c->x86_num_cores);
1155 } 1157 }
1156#endif 1158#endif
1157 1159
@@ -1195,15 +1197,8 @@ static int show_cpuinfo(struct seq_file *m, void *v)
1195 } 1197 }
1196 } 1198 }
1197 1199
1198 seq_printf(m, "\n"); 1200 seq_printf(m, "\n\n");
1199 1201
1200#ifdef CONFIG_SMP
1201 /* Put new fields at the end to lower the probability of
1202 breaking user space parsers. */
1203 seq_printf(m, "core id\t\t: %d\n", cpu_core_id[c - cpu_data]);
1204 seq_printf(m, "cpu cores\t: %d\n", c->x86_num_cores);
1205#endif
1206 seq_printf(m, "\n");
1207 return 0; 1202 return 0;
1208} 1203}
1209 1204
diff --git a/arch/x86_64/kernel/smpboot.c b/arch/x86_64/kernel/smpboot.c
index eca01e82d3c7..73f7e8b9543a 100644
--- a/arch/x86_64/kernel/smpboot.c
+++ b/arch/x86_64/kernel/smpboot.c
@@ -652,7 +652,7 @@ static __cpuinit void detect_siblings(void)
652 int i; 652 int i;
653 if (smp_num_siblings > 1) { 653 if (smp_num_siblings > 1) {
654 for_each_online_cpu (i) { 654 for_each_online_cpu (i) {
655 if (cpu_core_id[cpu] == phys_proc_id[i]) { 655 if (cpu_core_id[cpu] == cpu_core_id[i]) {
656 siblings++; 656 siblings++;
657 cpu_set(i, cpu_sibling_map[cpu]); 657 cpu_set(i, cpu_sibling_map[cpu]);
658 } 658 }