lkml.org 
[lkml]   [2015]   [Sep]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3/3] x86/paravirt: Make "unsafe" MSR accesses unsafe even if PARAVIRT=y
    Date
    Enabling CONFIG_PARAVIRT had an unintended side effect: rdmsr turned
    into rdmsr_safe and wrmsr turned into wrmsr_safe, even on bare
    metal. Undo that by using the new unsafe paravirt MSR hooks.

    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    ---
    arch/x86/include/asm/paravirt.h | 9 +++------
    1 file changed, 3 insertions(+), 6 deletions(-)

    diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h
    index e6569a3b0a37..f61975a3ccfd 100644
    --- a/arch/x86/include/asm/paravirt.h
    +++ b/arch/x86/include/asm/paravirt.h
    @@ -145,24 +145,21 @@ static inline int paravirt_write_msr_safe(unsigned msr,
    return PVOP_CALL3(int, pv_cpu_ops.write_msr_safe, msr, low, high);
    }

    -/* These should all do BUG_ON(_err), but our headers are too tangled. */
    #define rdmsr(msr, val1, val2) \
    do { \
    - int _err; \
    - u64 _l = paravirt_read_msr_safe(msr, &_err); \
    + u64 _l = paravirt_read_msr(msr); \
    val1 = (u32)_l; \
    val2 = _l >> 32; \
    } while (0)

    #define wrmsr(msr, val1, val2) \
    do { \
    - paravirt_write_msr_safe(msr, val1, val2); \
    + paravirt_write_msr(msr, val1, val2); \
    } while (0)

    #define rdmsrl(msr, val) \
    do { \
    - int _err; \
    - val = paravirt_read_msr_safe(msr, &_err); \
    + val = paravirt_read_msr(msr); \
    } while (0)

    static inline void wrmsrl(unsigned msr, u64 val)
    --
    2.4.3


    \
     
     \ /
      Last update: 2015-09-17 02:01    [W:3.530 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site