projects
/
platform
/
kernel
/
linux-stable.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
bd39906
)
x86: Document rdmsr_safe restrictions
author
Borislav Petkov
<borislav.petkov@amd.com>
Mon, 5 Dec 2011 13:28:37 +0000
(14:28 +0100)
committer
Borislav Petkov
<borislav.petkov@amd.com>
Mon, 5 Dec 2011 13:28:37 +0000
(14:28 +0100)
Recently, I got bitten by using rdmsr_safe too early in the boot
process. Document its shortcomings for future reference.
Link:
http://lkml.kernel.org/r/4ED5B70F.606@lwfinger.net
Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
arch/x86/include/asm/msr.h
patch
|
blob
|
history
diff --git
a/arch/x86/include/asm/msr.h
b/arch/x86/include/asm/msr.h
index
084ef95
..
95203d4
100644
(file)
--- a/
arch/x86/include/asm/msr.h
+++ b/
arch/x86/include/asm/msr.h
@@
-169,7
+169,14
@@
static inline int wrmsr_safe(unsigned msr, unsigned low, unsigned high)
return native_write_msr_safe(msr, low, high);
}
-/* rdmsr with exception handling */
+/*
+ * rdmsr with exception handling.
+ *
+ * Please note that the exception handling works only after we've
+ * switched to the "smart" #GP handler in trap_init() which knows about
+ * exception tables - using this macro earlier than that causes machine
+ * hangs on boxes which do not implement the @msr in the first argument.
+ */
#define rdmsr_safe(msr, p1, p2) \
({ \
int __err; \