x86: fix typo in filter_cpuid_features()
authorYinghai Lu <yinghai@kernel.org>
Sun, 15 Feb 2009 07:59:18 +0000 (23:59 -0800)
committerIngo Molnar <mingo@elte.hu>
Sun, 15 Feb 2009 08:03:29 +0000 (09:03 +0100)
Impact: fix wrong disabling of cpu features

an amd system got this strange output:

 CPU: CPU feature monitor disabled due to lack of CPUID level 0x5

but in /proc/cpuinfo I have:

 cpuid level : 5

on intel system:

 CPU: CPU feature monitor disabled due to lack of CPUID level 0x5
 CPU: CPU feature dca disabled due to lack of CPUID level 0x9

but in /proc/cpuinfo i have:

 cpuid level     : 11

Tt turns out there is a typo, and we should use level member in df.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/cpu/common.c

index 21f086b4c1a8d48bec188a3da739e67e29d5762d..32093d08d872afee12ba5b038d9de68155c2a43f 100644 (file)
@@ -241,9 +241,9 @@ static void __cpuinit filter_cpuid_features(struct cpuinfo_x86 *c, bool warn)
                 * signs here...
                 */
                if (cpu_has(c, df->feature) &&
-                   ((s32)df->feature < 0 ?
-                    (u32)df->feature > (u32)c->extended_cpuid_level :
-                    (s32)df->feature > (s32)c->cpuid_level)) {
+                   ((s32)df->level < 0 ?
+                    (u32)df->level > (u32)c->extended_cpuid_level :
+                    (s32)df->level > (s32)c->cpuid_level)) {
                        clear_cpu_cap(c, df->feature);
                        if (warn)
                                printk(KERN_WARNING
@@ -253,7 +253,7 @@ static void __cpuinit filter_cpuid_features(struct cpuinfo_x86 *c, bool warn)
                                       df->level);
                }
        }
-}      
+}
 
 /*
  * Naming convention should be: <Name> [(<Codename>)]