summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorJim Mattson <jmattson@google.com>2018-05-13 17:33:57 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-05-22 16:58:02 +0200
commit3a684641619ff0e06b8d4cb8c2ffbef304c9bdb1 (patch)
tree9c75f87582779890769bb5440234cd1cf8b25d84 /arch
parent6fdd277a9326c5ef3fe94999c9c319ad64333fdd (diff)
downloadlinux-stable-3a684641619ff0e06b8d4cb8c2ffbef304c9bdb1.tar.gz
linux-stable-3a684641619ff0e06b8d4cb8c2ffbef304c9bdb1.tar.bz2
linux-stable-3a684641619ff0e06b8d4cb8c2ffbef304c9bdb1.zip
x86/cpu: Make alternative_msr_write work for 32-bit code
commit 5f2b745f5e1304f438f9b2cd03ebc8120b6e0d3b upstream Cast val and (val >> 32) to (u32), so that they fit in a general-purpose register in both 32-bit and 64-bit code. [ tglx: Made it u32 instead of uintptr_t ] Fixes: c65732e4f721 ("x86/cpu: Restore CPUID_8000_0008_EBX reload") Signed-off-by: Jim Mattson <jmattson@google.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/include/asm/nospec-branch.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/x86/include/asm/nospec-branch.h b/arch/x86/include/asm/nospec-branch.h
index 328ea3cb769f..bc258e644e5e 100644
--- a/arch/x86/include/asm/nospec-branch.h
+++ b/arch/x86/include/asm/nospec-branch.h
@@ -265,8 +265,8 @@ void alternative_msr_write(unsigned int msr, u64 val, unsigned int feature)
{
asm volatile(ALTERNATIVE("", "wrmsr", %c[feature])
: : "c" (msr),
- "a" (val),
- "d" (val >> 32),
+ "a" ((u32)val),
+ "d" ((u32)(val >> 32)),
[feature] "i" (feature)
: "memory");
}