]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
x86, cpu: Fix regression in AMD errata checking code
authorHans Rosenfeld <hans.rosenfeld@amd.com>
Wed, 18 Aug 2010 14:19:50 +0000 (16:19 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 22 Apr 2011 15:50:05 +0000 (08:50 -0700)
commit 07a7795ca2e6e66d00b184efb46bd0e23d90d3fe upstream.

A bug in the family-model-stepping matching code caused the presence of
errata to go undetected when OSVW was not used. This causes hangs on
some K8 systems because the E400 workaround is not enabled.

Signed-off-by: Hans Rosenfeld <hans.rosenfeld@amd.com>
LKML-Reference: <1282141190-930137-1-git-send-email-hans.rosenfeld@amd.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/x86/kernel/cpu/amd.c

index f98bb34916a9330bf87fce698016c996280dbac1..b203d0dbfc0494f0e9fb8f8d22e286bceb096e3a 100644 (file)
@@ -687,7 +687,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)) &&