diff options
author | H. Peter Anvin <hpa@zytor.com> | 2005-05-01 11:58:49 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-01 11:58:49 -0400 |
commit | 5b7abc6fdcaf103f15e06c518ef0aec02a9c00e7 (patch) | |
tree | af36948e79774ea69ec398056ce8b5db0c682e34 /arch/x86_64/kernel | |
parent | a6954ba2e8d344a07e066737827116eb7bc0fdcd (diff) |
[PATCH] CPUID bug and inconsistency fix
The recent support for K8 multicore was misported from x86-64 to i386, due
to an unnecessary inconsistency between the CPUID code. Sure, there is are
no x86-64 VIA chips yet, but it should happen eventually.
This patch fixes the i386 bug as well as makes x86-64 match i386 in the
handing of the CPUID array.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/x86_64/kernel')
-rw-r--r-- | arch/x86_64/kernel/setup.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/x86_64/kernel/setup.c b/arch/x86_64/kernel/setup.c index b18c114c7648..2959ce703df9 100644 --- a/arch/x86_64/kernel/setup.c +++ b/arch/x86_64/kernel/setup.c | |||
@@ -977,7 +977,7 @@ void __init identify_cpu(struct cpuinfo_x86 *c) | |||
977 | if ((xlvl & 0xffff0000) == 0x80000000) { | 977 | if ((xlvl & 0xffff0000) == 0x80000000) { |
978 | if (xlvl >= 0x80000001) { | 978 | if (xlvl >= 0x80000001) { |
979 | c->x86_capability[1] = cpuid_edx(0x80000001); | 979 | c->x86_capability[1] = cpuid_edx(0x80000001); |
980 | c->x86_capability[5] = cpuid_ecx(0x80000001); | 980 | c->x86_capability[6] = cpuid_ecx(0x80000001); |
981 | } | 981 | } |
982 | if (xlvl >= 0x80000004) | 982 | if (xlvl >= 0x80000004) |
983 | get_model_name(c); /* Default name */ | 983 | get_model_name(c); /* Default name */ |
@@ -1100,11 +1100,17 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
1100 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | 1100 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
1101 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | 1101 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
1102 | 1102 | ||
1103 | /* VIA/Cyrix/Centaur-defined */ | ||
1104 | NULL, NULL, "rng", "rng_en", NULL, NULL, "ace", "ace_en", | ||
1105 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | ||
1106 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | ||
1107 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | ||
1108 | |||
1103 | /* AMD-defined (#2) */ | 1109 | /* AMD-defined (#2) */ |
1104 | "lahf_lm", "cmp_legacy", NULL, NULL, NULL, NULL, NULL, NULL, | 1110 | "lahf_lm", "cmp_legacy", NULL, NULL, NULL, NULL, NULL, NULL, |
1105 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | 1111 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
1106 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | 1112 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
1107 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL | 1113 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
1108 | }; | 1114 | }; |
1109 | static char *x86_power_flags[] = { | 1115 | static char *x86_power_flags[] = { |
1110 | "ts", /* temperature sensor */ | 1116 | "ts", /* temperature sensor */ |