]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
x86/cpu: Fix LFENCE serialization check in init_amd()
authorRhythm Mahajan <rhythm.m.mahajan@oracle.com>
Wed, 15 Mar 2023 10:40:15 +0000 (03:40 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 Mar 2023 07:30:38 +0000 (08:30 +0100)
The commit: 3f235279828c ("x86/cpu: Restore AMD's DE_CFG MSR after resume")
which was backported from the upstream commit: 2632daebafd0 renamed the
MSR_F10H_DECFG_LFENCE_SERIALIZE macro to MSR_AMD64_DE_CFG_LFENCE_SERIALIZE.
The fix for 4.14 and 4.9 changed MSR_F10H_DECFG_LFENCE_SERIALIZE to
MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT in the init_amd() function, but should
have used MSR_AMD64_DE_CFG_LFENCE_SERIALIZE.  This causes a discrepency in the
LFENCE serialization check in the init_amd() function.

This causes a ~16% sysbench memory regression, when running:
    sysbench --test=memory run

Fixes: 3f235279828c ("x86/cpu: Restore AMD's DE_CFG MSR after resume")
Signed-off-by: Rhythm Mahajan <rhythm.m.mahajan@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/x86/kernel/cpu/amd.c

index 265d9c05bb329522e0e0561beea21a5ee27b7e58..e0c9ede0196a6181bb3e0c123048ca8c2eb3e1e9 100644 (file)
@@ -950,7 +950,7 @@ static void init_amd(struct cpuinfo_x86 *c)
                 * serializing.
                 */
                ret = rdmsrl_safe(MSR_AMD64_DE_CFG, &val);
-               if (!ret && (val & MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT)) {
+               if (!ret && (val & MSR_AMD64_DE_CFG_LFENCE_SERIALIZE)) {
                        /* A serializing LFENCE stops RDTSC speculation */
                        set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC);
                } else {