lkml.org 
[lkml]   [2010]   [May]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 3/8] change msr numbers for kvmclock
    Date
    Avi pointed out a while ago that those MSRs falls into the pentium
    PMU range. So the idea here is to add new ones, and after a while,
    deprecate the old ones.

    Signed-off-by: Glauber Costa <glommer@redhat.com>
    ---
    arch/x86/include/asm/kvm_para.h | 4 ++++
    arch/x86/kvm/x86.c | 7 ++++++-
    2 files changed, 10 insertions(+), 1 deletions(-)

    diff --git a/arch/x86/include/asm/kvm_para.h b/arch/x86/include/asm/kvm_para.h
    index ffae142..9734808 100644
    --- a/arch/x86/include/asm/kvm_para.h
    +++ b/arch/x86/include/asm/kvm_para.h
    @@ -20,6 +20,10 @@
    #define MSR_KVM_WALL_CLOCK 0x11
    #define MSR_KVM_SYSTEM_TIME 0x12

    +/* Custom MSRs falls in the range 0x4b564d00-0x4b564dff */
    +#define MSR_KVM_WALL_CLOCK_NEW 0x4b564d00
    +#define MSR_KVM_SYSTEM_TIME_NEW 0x4b564d01
    +
    #define KVM_MAX_MMU_OP_BATCH 32

    /* Operations for KVM_HC_MMU_OP */
    diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
    index 6b2ce1d..eb84947 100644
    --- a/arch/x86/kvm/x86.c
    +++ b/arch/x86/kvm/x86.c
    @@ -664,9 +664,10 @@ static inline u32 bit(int bitno)
    * kvm-specific. Those are put in the beginning of the list.
    */

    -#define KVM_SAVE_MSRS_BEGIN 5
    +#define KVM_SAVE_MSRS_BEGIN 7
    static u32 msrs_to_save[] = {
    MSR_KVM_SYSTEM_TIME, MSR_KVM_WALL_CLOCK,
    + MSR_KVM_SYSTEM_TIME_NEW, MSR_KVM_WALL_CLOCK_NEW,
    HV_X64_MSR_GUEST_OS_ID, HV_X64_MSR_HYPERCALL,
    HV_X64_MSR_APIC_ASSIST_PAGE,
    MSR_IA32_SYSENTER_CS, MSR_IA32_SYSENTER_ESP, MSR_IA32_SYSENTER_EIP,
    @@ -1192,10 +1193,12 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data)
    case MSR_IA32_MISC_ENABLE:
    vcpu->arch.ia32_misc_enable_msr = data;
    break;
    + case MSR_KVM_WALL_CLOCK_NEW:
    case MSR_KVM_WALL_CLOCK:
    vcpu->kvm->arch.wall_clock = data;
    kvm_write_wall_clock(vcpu->kvm, data);
    break;
    + case MSR_KVM_SYSTEM_TIME_NEW:
    case MSR_KVM_SYSTEM_TIME: {
    if (vcpu->arch.time_page) {
    kvm_release_page_dirty(vcpu->arch.time_page);
    @@ -1467,9 +1470,11 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata)
    data = vcpu->arch.efer;
    break;
    case MSR_KVM_WALL_CLOCK:
    + case MSR_KVM_WALL_CLOCK_NEW:
    data = vcpu->kvm->arch.wall_clock;
    break;
    case MSR_KVM_SYSTEM_TIME:
    + case MSR_KVM_SYSTEM_TIME_NEW:
    data = vcpu->arch.time;
    break;
    case MSR_IA32_P5_MC_ADDR:
    --
    1.6.2.2


    \
     
     \ /
      Last update: 2010-05-05 23:31    [W:0.023 / U:0.072 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site