lkml.org 
[lkml]   [2008]   [Mar]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    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)
    {

    \
     
     \ /
      Last update: 2008-03-22 11:03    [W:0.022 / U:0.340 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site