]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - arch/x86/kernel/cpu/amd.c
x86, cpu: Fix regression in AMD errata checking code
[net-next-2.6.git] / arch / x86 / kernel / cpu / amd.c
index a62a4ae7a11ae532c524e0ad459920ce8d625ebd..ba5f62f45f01e136e849894076917684ffcd8c40 100644 (file)
@@ -631,7 +631,11 @@ cpu_dev_register(amd_cpu_dev);
 const int amd_erratum_400[] =
        AMD_OSVW_ERRATUM(1, AMD_MODEL_RANGE(0xf, 0x41, 0x2, 0xff, 0xf),
                            AMD_MODEL_RANGE(0x10, 0x2, 0x1, 0xff, 0xf));
+EXPORT_SYMBOL_GPL(amd_erratum_400);
 
+const int amd_erratum_383[] =
+       AMD_OSVW_ERRATUM(3, AMD_MODEL_RANGE(0x10, 0, 0, 0xff, 0xf));
+EXPORT_SYMBOL_GPL(amd_erratum_383);
 
 bool cpu_has_amd_erratum(const int *erratum)
 {
@@ -665,7 +669,7 @@ bool cpu_has_amd_erratum(const int *erratum)
        }
 
        /* OSVW unavailable or ID unknown, match family-model-stepping range */
-       ms = (cpu->x86_model << 8) | cpu->x86_mask;
+       ms = (cpu->x86_model << 4) | cpu->x86_mask;
        while ((range = *erratum++))
                if ((cpu->x86 == AMD_MODEL_RANGE_FAMILY(range)) &&
                    (ms >= AMD_MODEL_RANGE_START(range)) &&
@@ -674,3 +678,5 @@ bool cpu_has_amd_erratum(const int *erratum)
 
        return false;
 }
+
+EXPORT_SYMBOL_GPL(cpu_has_amd_erratum);