瀏覽代碼

x86: re-add rdmsrl_safe

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.

Signed-off-by: Andi Kleen <andi@firstfloor.org>
Cc: andreas.herrmann3@amd.com
Cc: mingo@elte.hu
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Andi Kleen 17 年之前
父節點
當前提交
1de87bd40e
共有 2 個文件被更改,包括 15 次插入0 次删除
  1. 8 0
      include/asm-x86/msr.h
  2. 7 0
      include/asm-x86/paravirt.h

+ 8 - 0
include/asm-x86/msr.h

@@ -150,6 +150,14 @@ static inline int wrmsr_safe(unsigned msr, unsigned low, unsigned high)
 	__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())
 

+ 7 - 0
include/asm-x86/paravirt.h

@@ -693,6 +693,13 @@ do {						\
 	_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)
 {