x86: Document rdmsr_safe restrictions
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>
This commit is contained in:
parent
bd39906397
commit
ce37defc0f
1 changed files with 8 additions and 1 deletions
|
@ -169,7 +169,14 @@ static inline int wrmsr_safe(unsigned msr, unsigned low, unsigned high)
|
||||||
return native_write_msr_safe(msr, low, 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) \
|
#define rdmsr_safe(msr, p1, p2) \
|
||||||
({ \
|
({ \
|
||||||
int __err; \
|
int __err; \
|
||||||
|
|
Reference in a new issue