Messages in this thread Patch in this message |  | | Date | Sat, 22 Mar 2008 10:59:28 +0100 | From | Andi Kleen <> | Subject | [PATCH] Readd rdmsrl_safe v2 |
| |
Readd rdmsrl_safe v2
RDMSR for 64bit values with exception handling.
Makes it easier to deal with 64bit valued MSRs. The old 64bit code base had that too as checking_rdmsrl(), but it got dropped somehow.
Needed for followup patch.
v2: switch to inline
Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Andi Kleen <andi@firstfloor.org>
--- include/asm-x86/msr.h | 3 +++ include/asm-x86/paravirt.h | 4 ++++ 2 files changed, 7 insertions(+)
Index: linux/include/asm-x86/msr.h =================================================================== --- linux.orig/include/asm-x86/msr.h +++ linux/include/asm-x86/msr.h @@ -150,6 +150,13 @@ static inline int wrmsr_safe(unsigned ms __err; \ }) +static inline int rdmsrl_safe(unsigned msr, unsigned long long *p) +{ + int err; + *p = native_read_msr_safe(msr, &err); + return err; +} + #define rdtscl(low) \ ((low) = (u32)native_read_tsc()) Index: linux/include/asm-x86/paravirt.h =================================================================== --- linux.orig/include/asm-x86/paravirt.h +++ linux/include/asm-x86/paravirt.h @@ -687,6 +687,12 @@ static inline int paravirt_write_msr(uns (*b) = _l >> 32; \ _err; }) +static inline int rdmsrl_safe(unsigned msr, unsigned long long *p) +{ + int err; + *p = paravirt_read_msr(msr, &err); + return err; +} static inline u64 paravirt_read_tsc(void) {
|  |