Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-block.git] / arch / x86 / kernel / cpu / amd.c
index 7d6e0efcc2db3cf909c2fd868311ac496b9a1070..90f75e5158769c8690f745184c1271ddc6dffd20 100644 (file)
@@ -950,12 +950,8 @@ static void init_amd(struct cpuinfo_x86 *c)
        init_amd_cacheinfo(c);
 
        if (cpu_has(c, X86_FEATURE_XMM2)) {
-               unsigned long long val;
-               int ret;
-
                /*
-                * A serializing LFENCE has less overhead than MFENCE, so
-                * use it for execution serialization.  On families which
+                * Use LFENCE for execution serialization.  On families which
                 * don't have that MSR, LFENCE is already serializing.
                 * msr_set_bit() uses the safe accessors, too, even if the MSR
                 * is not present.
@@ -963,19 +959,8 @@ static void init_amd(struct cpuinfo_x86 *c)
                msr_set_bit(MSR_F10H_DECFG,
                            MSR_F10H_DECFG_LFENCE_SERIALIZE_BIT);
 
-               /*
-                * Verify that the MSR write was successful (could be running
-                * under a hypervisor) and only then assume that LFENCE is
-                * serializing.
-                */
-               ret = rdmsrl_safe(MSR_F10H_DECFG, &val);
-               if (!ret && (val & MSR_F10H_DECFG_LFENCE_SERIALIZE)) {
-                       /* A serializing LFENCE stops RDTSC speculation */
-                       set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC);
-               } else {
-                       /* MFENCE stops RDTSC speculation */
-                       set_cpu_cap(c, X86_FEATURE_MFENCE_RDTSC);
-               }
+               /* A serializing LFENCE stops RDTSC speculation */
+               set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC);
        }
 
        /*