lkml.org 
[lkml]   [2015]   [Oct]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 1/4] KVM: X86: Add arrays to save/restore LBR MSRs
    Date
    Add arrays in kvm_vcpu_arch struct to save/restore
    LBR MSRs at vm exit/entry time.
    Add new hooks to set/get DEBUGCTLMSR and LBR MSRs.

    Signed-off-by: Jian Zhou <jianjay.zhou@huawei.com>
    Signed-off-by: Stephen He <herongguang.he@huawei.com>
    ---
    arch/x86/include/asm/kvm_host.h | 26 ++++++++++++++++++++------
    1 file changed, 20 insertions(+), 6 deletions(-)

    diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
    index 3a36ee7..dc2c120 100644
    --- a/arch/x86/include/asm/kvm_host.h
    +++ b/arch/x86/include/asm/kvm_host.h
    @@ -376,6 +376,12 @@ struct kvm_vcpu_hv {
    u64 hv_vapic;
    };

    +struct msr_data {
    + bool host_initiated;
    + u32 index;
    + u64 data;
    +};
    +
    struct kvm_vcpu_arch {
    /*
    * rip and regs accesses must go through
    @@ -516,6 +522,15 @@ struct kvm_vcpu_arch {
    unsigned long eff_db[KVM_NR_DB_REGS];
    unsigned long guest_debug_dr7;

    + int lbr_status;
    + int lbr_used;
    +
    + struct lbr_msr {
    + unsigned nr;
    + struct msr_data guest[MAX_NUM_LBR_MSRS];
    + struct msr_data host[MAX_NUM_LBR_MSRS];
    + }lbr_msr;
    +
    u64 mcg_cap;
    u64 mcg_status;
    u64 mcg_ctl;
    @@ -728,12 +743,6 @@ struct kvm_vcpu_stat {

    struct x86_instruction_info;

    -struct msr_data {
    - bool host_initiated;
    - u32 index;
    - u64 data;
    -};
    -
    struct kvm_lapic_irq {
    u32 vector;
    u16 delivery_mode;
    @@ -887,6 +896,11 @@ struct kvm_x86_ops {
    gfn_t offset, unsigned long mask);
    /* pmu operations of sub-arch */
    const struct kvm_pmu_ops *pmu_ops;
    +
    + int (*set_debugctlmsr)(struct kvm_vcpu *vcpu, u64 value);
    + u64 (*get_debugctlmsr)(void);
    + void (*set_lbr_msr)(struct kvm_vcpu *vcpu, u32 msr, u64 data);
    + u64 (*get_lbr_msr)(struct kvm_vcpu *vcpu, u32 msr);
    };

    struct kvm_arch_async_pf {
    --
    1.7.12.4



    \
     
     \ /
      Last update: 2015-10-23 11:41    [W:4.750 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site