From: tip-bot for Borislav Petkov <borislav.petkov@amd.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, hpa@zytor.com, mingo@redhat.com,
tglx@linutronix.de, mingo@elte.hu, borislav.petkov@amd.com
Subject: [tip:x86/urgent] x86, msr: Add a AMD wrmsr with exception handling
Date: Sat, 15 Aug 2009 17:06:39 GMT [thread overview]
Message-ID: <tip-0ae84a7d38ee64a21290797e51cd0cc38e3da586@git.kernel.org> (raw)
In-Reply-To: <1250251594-8348-1-git-send-email-borislav.petkov@amd.com>
Commit-ID: 0ae84a7d38ee64a21290797e51cd0cc38e3da586
Gitweb: http://git.kernel.org/tip/0ae84a7d38ee64a21290797e51cd0cc38e3da586
Author: Borislav Petkov <borislav.petkov@amd.com>
AuthorDate: Fri, 14 Aug 2009 14:06:33 +0200
Committer: Ingo Molnar <mingo@elte.hu>
CommitDate: Sat, 15 Aug 2009 18:43:58 +0200
x86, msr: Add a AMD wrmsr with exception handling
Add native_write_msr_amd_safe() - we need this for a workaround.
( While at it, convert native_read_msr_amd_safe to using
more robust named inline asm parameters as the rest of the
functions. )
Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
Cc: kjwinchester@gmail.com
Cc: mikpe@it.uu.se
Cc: brgerst@gmail.com
LKML-Reference: <1250251594-8348-1-git-send-email-borislav.petkov@amd.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
arch/x86/include/asm/msr.h | 32 ++++++++++++++++++++++++++++----
1 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/arch/x86/include/asm/msr.h b/arch/x86/include/asm/msr.h
index 48ad9d2..3ea381b 100644
--- a/arch/x86/include/asm/msr.h
+++ b/arch/x86/include/asm/msr.h
@@ -76,14 +76,14 @@ static inline unsigned long long native_read_msr_amd_safe(unsigned int msr,
{
DECLARE_ARGS(val, low, high);
- asm volatile("2: rdmsr ; xor %0,%0\n"
+ asm volatile("2: rdmsr ; xor %[err],%[err]\n"
"1:\n\t"
".section .fixup,\"ax\"\n\t"
- "3: mov %3,%0 ; jmp 1b\n\t"
+ "3: mov %[fault],%[err] ; jmp 1b\n\t"
".previous\n\t"
_ASM_EXTABLE(2b, 3b)
- : "=r" (*err), EAX_EDX_RET(val, low, high)
- : "c" (msr), "D" (0x9c5a203a), "i" (-EFAULT));
+ : [err] "=r" (*err), EAX_EDX_RET(val, low, high)
+ : "c" (msr), "D" (0x9c5a203a), [fault] "i" (-EFAULT));
return EAX_EDX_VAL(val, low, high);
}
@@ -111,6 +111,25 @@ notrace static inline int native_write_msr_safe(unsigned int msr,
return err;
}
+static inline unsigned long long native_write_msr_amd_safe(unsigned int msr,
+ unsigned low,
+ unsigned high)
+{
+ int err;
+ asm volatile("2: wrmsr ; xor %[err],%[err]\n"
+ "1:\n\t"
+ ".section .fixup,\"ax\"\n\t"
+ "3: mov %[fault],%[err] ; jmp 1b\n\t"
+ ".previous\n\t"
+ _ASM_EXTABLE(2b, 3b)
+ : [err] "=a" (err)
+ : "c" (msr), "0" (low), "d" (high), [fault] "i" (-EFAULT),
+ "D" (0x9c5a203a)
+ : "memory");
+ return err;
+
+}
+
extern unsigned long long native_read_tsc(void);
static __always_inline unsigned long long __native_read_tsc(void)
@@ -164,6 +183,11 @@ static inline int wrmsr_safe(unsigned msr, unsigned low, unsigned high)
return native_write_msr_safe(msr, low, high);
}
+static inline int wrmsr_amd_safe(unsigned msr, unsigned low, unsigned high)
+{
+ return native_write_msr_amd_safe(msr, low, high);
+}
+
/* rdmsr with exception handling */
#define rdmsr_safe(msr, p1, p2) \
({ \
next prev parent reply other threads:[~2009-08-15 17:07 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-08 11:53 [PATCH] x86: clear incorrectly forced X86_FEATURE_LAHF_LM flag Kevin Winchester
2009-08-08 15:20 ` Borislav Petkov
2009-08-08 15:42 ` Ingo Molnar
2009-08-08 16:15 ` Ingo Molnar
2009-08-08 22:06 ` Kevin Winchester
2009-08-08 23:17 ` [PATCH v2] " Kevin Winchester
2009-08-10 13:12 ` Borislav Petkov
2009-08-10 22:56 ` [PATCH v3] " Kevin Winchester
2009-08-11 9:44 ` Borislav Petkov
2009-08-11 11:36 ` [tip:x86/urgent] x86: Clear " tip-bot for Kevin Winchester
2009-08-11 14:37 ` [PATCH v3] x86: clear " Mikael Pettersson
2009-08-11 14:56 ` Kevin Winchester
2009-08-11 15:51 ` Borislav Petkov
2009-08-11 15:55 ` Kevin Winchester
2009-08-11 16:01 ` Borislav Petkov
2009-08-12 0:15 ` Kevin Winchester
2009-08-12 11:40 ` Borislav Petkov
2009-08-12 23:02 ` Kevin Winchester
2009-08-13 12:23 ` Borislav Petkov
2009-08-13 12:31 ` [PATCH 1/2] x86, msr: Add an AMD wrmsr with exception handling Borislav Petkov
2009-08-13 12:31 ` [PATCH 2/2] x86: Clear incorrectly forced X86_FEATURE_LAHF_LM flag Borislav Petkov
2009-08-13 14:21 ` Brian Gerst
2009-08-13 14:54 ` Kevin Winchester
2009-08-13 15:55 ` Brian Gerst
2009-08-13 16:18 ` Borislav Petkov
2009-08-13 22:45 ` Kevin Winchester
2009-08-13 15:54 ` Borislav Petkov
2009-08-13 14:57 ` [PATCH v3] x86: clear " Kevin Winchester
2009-08-13 23:24 ` Kevin Winchester
2009-08-14 12:00 ` Borislav Petkov
2009-08-14 12:06 ` [PATCH 1/2] x86, msr: Add a AMD wrmsr with exception handling Borislav Petkov
2009-08-15 17:06 ` tip-bot for Borislav Petkov [this message]
2009-08-14 12:06 ` [PATCH 2/2] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit Borislav Petkov
2009-08-15 17:06 ` [tip:x86/urgent] " tip-bot for Borislav Petkov
2009-08-16 6:41 ` Ingo Molnar
2009-08-16 20:10 ` Kevin Winchester
2009-08-16 20:51 ` Ingo Molnar
2009-08-16 21:49 ` Borislav Petkov
2009-08-21 17:40 ` H. Peter Anvin
2009-08-22 16:37 ` Borislav Petkov
2009-08-24 20:34 ` H. Peter Anvin
2009-08-25 5:52 ` Borislav Petkov
2009-08-25 6:44 ` H. Peter Anvin
2009-08-30 11:43 ` Borislav Petkov
2009-08-30 11:50 ` [PATCH 1/3] x86, msr: add rd/wrmsr interfaces with preset registers Borislav Petkov
2009-08-30 11:50 ` [PATCH 2/3] x86, msr: rewrite AMD rd/wrmsr variants Borislav Petkov
2009-08-30 20:03 ` H. Peter Anvin
2009-08-30 20:46 ` Borislav Petkov
2009-08-30 20:04 ` H. Peter Anvin
2009-08-30 11:50 ` [PATCH 3/3] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit Borislav Petkov
2009-08-30 19:22 ` H. Peter Anvin
2009-08-30 19:30 ` Borislav Petkov
2009-08-30 20:02 ` H. Peter Anvin
2009-08-30 20:29 ` Borislav Petkov
2009-08-30 20:48 ` H. Peter Anvin
2009-08-31 7:34 ` Borislav Petkov
2009-08-31 7:50 ` [PATCH 1/3] x86, msr: add rd/wrmsr interfaces with preset registers Borislav Petkov
2009-08-31 23:37 ` [tip:x86/cpu] x86, msr: Add " tip-bot for Borislav Petkov
2009-09-01 11:05 ` Ingo Molnar
2009-09-01 13:06 ` Borislav Petkov
2009-09-04 14:08 ` Ingo Molnar
2009-09-04 16:26 ` H. Peter Anvin
2009-09-04 17:06 ` [tip:x86/cpu] x86, msr: change msr-reg.o to obj-y, and export its symbols tip-bot for H. Peter Anvin
2009-09-05 9:57 ` Borislav Petkov
2009-09-06 4:41 ` H. Peter Anvin
2009-08-31 23:38 ` [tip:x86/cpu] x86, msr: CFI annotations, cleanups for msr-reg.S tip-bot for H. Peter Anvin
2009-09-03 22:55 ` [PATCH 1/3] x86, msr: add rd/wrmsr interfaces with preset registers Andrew Morton
2009-09-03 22:57 ` H. Peter Anvin
2009-09-03 23:14 ` Andrew Morton
2009-09-03 23:22 ` H. Peter Anvin
2009-09-04 6:39 ` Ingo Molnar
2009-09-04 8:27 ` Borislav Petkov
2009-08-31 7:50 ` [PATCH 2/3] x86, msr: rewrite AMD rd/wrmsr variants Borislav Petkov
2009-08-31 23:37 ` [tip:x86/cpu] x86, msr: Rewrite " tip-bot for Borislav Petkov
2009-08-31 7:50 ` [PATCH 3/3] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit Borislav Petkov
2009-08-31 23:37 ` [tip:x86/cpu] " tip-bot for Borislav Petkov
2009-08-31 8:14 ` [PATCH 3/3] " Borislav Petkov
2009-08-31 18:03 ` H. Peter Anvin
2009-08-30 17:07 ` [tip:x86/urgent] " H. Peter Anvin
2009-08-30 19:17 ` Borislav Petkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=tip-0ae84a7d38ee64a21290797e51cd0cc38e3da586@git.kernel.org \
--to=borislav.petkov@amd.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome