lkml.org 
[lkml]   [2008]   [Apr]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 24/31] KVM: SVM: sync TPR value to V_TPR field in the VMCB
    Date
    From: Joerg Roedel <joerg.roedel@amd.com>

    This patch adds syncing of the lapic.tpr field to the V_TPR field of the VMCB.
    With this change we can safely remove the CR8 read intercept.

    Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
    Signed-off-by: Avi Kivity <avi@qumranet.com>
    ---
    arch/x86/kvm/svm.c | 18 ++++++++++++++++--
    1 files changed, 16 insertions(+), 2 deletions(-)

    diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
    index 3379e13..f8ce36e 100644
    --- a/arch/x86/kvm/svm.c
    +++ b/arch/x86/kvm/svm.c
    @@ -486,8 +486,7 @@ static void init_vmcb(struct vcpu_svm *svm)

    control->intercept_cr_read = INTERCEPT_CR0_MASK |
    INTERCEPT_CR3_MASK |
    - INTERCEPT_CR4_MASK |
    - INTERCEPT_CR8_MASK;
    + INTERCEPT_CR4_MASK;

    control->intercept_cr_write = INTERCEPT_CR0_MASK |
    INTERCEPT_CR3_MASK |
    @@ -1621,6 +1620,19 @@ static void svm_prepare_guest_switch(struct kvm_vcpu *vcpu)
    {
    }

    +static inline void sync_lapic_to_cr8(struct kvm_vcpu *vcpu)
    +{
    + struct vcpu_svm *svm = to_svm(vcpu);
    + u64 cr8;
    +
    + if (!irqchip_in_kernel(vcpu->kvm))
    + return;
    +
    + cr8 = kvm_get_cr8(vcpu);
    + svm->vmcb->control.int_ctl &= ~V_TPR_MASK;
    + svm->vmcb->control.int_ctl |= cr8 & V_TPR_MASK;
    +}
    +
    static void svm_vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
    {
    struct vcpu_svm *svm = to_svm(vcpu);
    @@ -1630,6 +1642,8 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)

    pre_svm_run(svm);

    + sync_lapic_to_cr8(vcpu);
    +
    save_host_msrs(vcpu);
    fs_selector = read_fs();
    gs_selector = read_gs();
    --
    1.5.5


    \
     
     \ /
      Last update: 2008-04-21 12:39    [W:0.072 / U:29.988 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site