From: Dave Hansen <[email protected]>

These should be very familiar by now. Use the "raw_" indirection
to consolidate the duplicate implementations. Do four at once now
because these are quite straightforward.

Signed-off-by: Dave Hansen <[email protected]>
---

 b/arch/x86/include/asm/msr.h      |   44 +++++++++++++++++++-------------------
 b/arch/x86/include/asm/paravirt.h |   20 -----------------
 2 files changed, 23 insertions(+), 41 deletions(-)

diff -puN arch/x86/include/asm/msr.h~rdmsr-dups-6 arch/x86/include/asm/msr.h
--- a/arch/x86/include/asm/msr.h~rdmsr-dups-6   2026-03-20 11:24:20.448855576 
-0700
+++ b/arch/x86/include/asm/msr.h        2026-03-20 11:24:20.455855887 -0700
@@ -174,6 +174,8 @@ static inline u64 native_read_pmc(int co
 
 #define raw_read_msr           paravirt_read_msr
 #define raw_read_msr_safe      paravirt_read_msr_safe
+#define raw_write_msr          paravirt_write_msr
+#define raw_write_msr_safe     paravirt_write_msr_safe
 
 #else
 #include <linux/errno.h>
@@ -189,27 +191,6 @@ static inline u64 native_read_pmc(int co
  * pointer indirection), this allows gcc to optimize better
  */
 
-static inline void wrmsr(u32 msr, u32 low, u32 high)
-{
-       raw_write_msr(msr, (u64)high << 32 | low);
-}
-
-static inline void wrmsrq(u32 msr, u64 val)
-{
-       raw_write_msr(msr, val);
-}
-
-/* wrmsr with exception handling */
-static inline int wrmsrq_safe(u32 msr, u64 val)
-{
-       return raw_write_msr_safe(msr, val);
-}
-
-static inline int rdmsrq_safe(u32 msr, u64 *p)
-{
-       return raw_read_msr_safe(msr, p);
-}
-
 static __always_inline u64 rdpmc(int counter)
 {
        return native_read_pmc(counter);
@@ -240,6 +221,27 @@ do {                                                       
        \
 #define rdmsrq(msr, val)                       \
        ((val) = raw_read_msr((msr)))
 
+static inline int rdmsrq_safe(u32 msr, u64 *p)
+{
+       return raw_read_msr_safe(msr, p);
+}
+
+/* wrmsr with exception handling */
+static inline int wrmsrq_safe(u32 msr, u64 val)
+{
+       return raw_write_msr_safe(msr, val);
+}
+
+static inline void wrmsr(u32 msr, u32 low, u32 high)
+{
+       raw_write_msr(msr, (u64)high << 32 | low);
+}
+
+static inline void wrmsrq(u32 msr, u64 val)
+{
+       raw_write_msr(msr, val);
+}
+
 /* Instruction opcode for WRMSRNS supported in binutils >= 2.40 */
 #define ASM_WRMSRNS _ASM_BYTES(0x0f,0x01,0xc6)
 
diff -puN arch/x86/include/asm/paravirt.h~rdmsr-dups-6 
arch/x86/include/asm/paravirt.h
--- a/arch/x86/include/asm/paravirt.h~rdmsr-dups-6      2026-03-20 
11:24:20.452855754 -0700
+++ b/arch/x86/include/asm/paravirt.h   2026-03-20 11:24:20.455855887 -0700
@@ -161,26 +161,6 @@ static inline int paravirt_write_msr_saf
        return PVOP_CALL2(int, pv_ops, cpu.write_msr_safe, msr, val);
 }
 
-static __always_inline void wrmsr(u32 msr, u32 low, u32 high)
-{
-       paravirt_write_msr(msr, (u64)high << 32 | low);
-}
-
-static inline void wrmsrq(u32 msr, u64 val)
-{
-       paravirt_write_msr(msr, val);
-}
-
-static inline int wrmsrq_safe(u32 msr, u64 val)
-{
-       return paravirt_write_msr_safe(msr, val);
-}
-
-static __always_inline int rdmsrq_safe(u32 msr, u64 *p)
-{
-       return paravirt_read_msr_safe(msr, p);
-}
-
 static __always_inline u64 rdpmc(int counter)
 {
        return PVOP_CALL1(u64, pv_ops, cpu.read_pmc, counter);
_

Reply via email to