aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2005-04-16 18:25:18 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-16 18:25:18 -0400
commitebfcaa96fccc01301a577c5c56a5f00543cf167e (patch)
treebc2547d37afb5ac97b4354706550027b7153a581
parent229992446b12fbc755825b6a9f38fc6a273e1f19 (diff)
[PATCH] x86_64: Rename the extended cpuid level field
It was confusingly named. Signed-off-by: Andi Kleen <ak@suse.de> DESC x86_64: Switch SMP bootup over to new CPU hotplug state machine EDESC From: "Andi Kleen" <ak@suse.de> This will allow hotplug CPU in the future and in general cleans up a lot of crufty code. It also should plug some races that the old hackish way introduces. Remove one old race workaround in NMI watchdog setup that is not needed anymore. I removed the old total sum of bogomips reporting code. The brag value of BogoMips has been greatly devalued in the last years on the open market. Real CPU hotplug will need some more work, but the infrastructure for it is there now. One drawback: the new TSC sync algorithm is less accurate than before. The old way of zeroing TSCs is too intrusive to do later. Instead the TSC of the BP is duplicated now, which is less accurate. Cc: <rusty@rustcorp.com.au> Cc: <mingo@elte.hu> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--arch/x86_64/kernel/setup.c13
-rw-r--r--include/asm-x86_64/processor.h2
2 files changed, 7 insertions, 8 deletions
diff --git a/arch/x86_64/kernel/setup.c b/arch/x86_64/kernel/setup.c
index c091fa114514..7ba443584a0c 100644
--- a/arch/x86_64/kernel/setup.c
+++ b/arch/x86_64/kernel/setup.c
@@ -673,7 +673,7 @@ static int __init get_model_name(struct cpuinfo_x86 *c)
673{ 673{
674 unsigned int *v; 674 unsigned int *v;
675 675
676 if (c->x86_cpuid_level < 0x80000004) 676 if (c->extended_cpuid_level < 0x80000004)
677 return 0; 677 return 0;
678 678
679 v = (unsigned int *) c->x86_model_id; 679 v = (unsigned int *) c->x86_model_id;
@@ -689,7 +689,7 @@ static void __init display_cacheinfo(struct cpuinfo_x86 *c)
689{ 689{
690 unsigned int n, dummy, eax, ebx, ecx, edx; 690 unsigned int n, dummy, eax, ebx, ecx, edx;
691 691
692 n = c->x86_cpuid_level; 692 n = c->extended_cpuid_level;
693 693
694 if (n >= 0x80000005) { 694 if (n >= 0x80000005) {
695 cpuid(0x80000005, &dummy, &ebx, &ecx, &edx); 695 cpuid(0x80000005, &dummy, &ebx, &ecx, &edx);
@@ -781,7 +781,7 @@ static int __init init_amd(struct cpuinfo_x86 *c)
781 } 781 }
782 display_cacheinfo(c); 782 display_cacheinfo(c);
783 783
784 if (c->x86_cpuid_level >= 0x80000008) { 784 if (c->extended_cpuid_level >= 0x80000008) {
785 c->x86_num_cores = (cpuid_ecx(0x80000008) & 0xff) + 1; 785 c->x86_num_cores = (cpuid_ecx(0x80000008) & 0xff) + 1;
786 if (c->x86_num_cores & (c->x86_num_cores - 1)) 786 if (c->x86_num_cores & (c->x86_num_cores - 1))
787 c->x86_num_cores = 1; 787 c->x86_num_cores = 1;
@@ -841,7 +841,6 @@ static void __init detect_ht(struct cpuinfo_x86 *c)
841 if (smp_num_siblings & (smp_num_siblings - 1)) 841 if (smp_num_siblings & (smp_num_siblings - 1))
842 index_msb++; 842 index_msb++;
843 843
844 /* RED-PEN surely this must run in the non HT case too! -AK */
845 cpu_core_id[cpu] = phys_pkg_id(index_msb); 844 cpu_core_id[cpu] = phys_pkg_id(index_msb);
846 845
847 if (c->x86_num_cores > 1) 846 if (c->x86_num_cores > 1)
@@ -878,7 +877,7 @@ static void __init init_intel(struct cpuinfo_x86 *c)
878 unsigned n; 877 unsigned n;
879 878
880 init_intel_cacheinfo(c); 879 init_intel_cacheinfo(c);
881 n = c->x86_cpuid_level; 880 n = c->extended_cpuid_level;
882 if (n >= 0x80000008) { 881 if (n >= 0x80000008) {
883 unsigned eax = cpuid_eax(0x80000008); 882 unsigned eax = cpuid_eax(0x80000008);
884 c->x86_virt_bits = (eax >> 8) & 0xff; 883 c->x86_virt_bits = (eax >> 8) & 0xff;
@@ -927,7 +926,7 @@ void __init early_identify_cpu(struct cpuinfo_x86 *c)
927 c->x86_cache_alignment = c->x86_clflush_size; 926 c->x86_cache_alignment = c->x86_clflush_size;
928 c->x86_num_cores = 1; 927 c->x86_num_cores = 1;
929 c->x86_apicid = c == &boot_cpu_data ? 0 : c - cpu_data; 928 c->x86_apicid = c == &boot_cpu_data ? 0 : c - cpu_data;
930 c->x86_cpuid_level = 0; 929 c->extended_cpuid_level = 0;
931 memset(&c->x86_capability, 0, sizeof c->x86_capability); 930 memset(&c->x86_capability, 0, sizeof c->x86_capability);
932 931
933 /* Get vendor name */ 932 /* Get vendor name */
@@ -974,7 +973,7 @@ void __init identify_cpu(struct cpuinfo_x86 *c)
974 973
975 /* AMD-defined flags: level 0x80000001 */ 974 /* AMD-defined flags: level 0x80000001 */
976 xlvl = cpuid_eax(0x80000000); 975 xlvl = cpuid_eax(0x80000000);
977 c->x86_cpuid_level = xlvl; 976 c->extended_cpuid_level = xlvl;
978 if ((xlvl & 0xffff0000) == 0x80000000) { 977 if ((xlvl & 0xffff0000) == 0x80000000) {
979 if (xlvl >= 0x80000001) { 978 if (xlvl >= 0x80000001) {
980 c->x86_capability[1] = cpuid_edx(0x80000001); 979 c->x86_capability[1] = cpuid_edx(0x80000001);
diff --git a/include/asm-x86_64/processor.h b/include/asm-x86_64/processor.h
index 45ab74e8f141..f0581c35628e 100644
--- a/include/asm-x86_64/processor.h
+++ b/include/asm-x86_64/processor.h
@@ -64,7 +64,7 @@ struct cpuinfo_x86 {
64 __u8 x86_num_cores; 64 __u8 x86_num_cores;
65 __u8 x86_apicid; 65 __u8 x86_apicid;
66 __u32 x86_power; 66 __u32 x86_power;
67 __u32 x86_cpuid_level; /* Max CPUID function supported */ 67 __u32 extended_cpuid_level; /* Max extended CPUID function supported */
68 unsigned long loops_per_jiffy; 68 unsigned long loops_per_jiffy;
69} ____cacheline_aligned; 69} ____cacheline_aligned;
70 70