diff options
author | Avi Kivity <avi@qumranet.com> | 2007-12-06 09:32:45 -0500 |
---|---|---|
committer | Avi Kivity <avi@qumranet.com> | 2008-01-30 10:53:19 -0500 |
commit | e5314067f6a77688a3d36548e7618430ce4a6236 (patch) | |
tree | a03623c7ae33403d7e4de0deeb581367bef67ae3 /drivers/kvm | |
parent | e934c9c1c8742872a53efb84966d9c1d7b8c8e24 (diff) |
KVM: VMX: Avoid exit when setting cr8 if the local apic is in the kernel
With apic in userspace, we must exit to userspace after a cr8 write in order
to update the tpr. But if the apic is in the kernel, the exit is unnecessary.
Noticed by Joerg Roedel.
Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'drivers/kvm')
-rw-r--r-- | drivers/kvm/vmx.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c index 3b44573c326e..83084348581a 100644 --- a/drivers/kvm/vmx.c +++ b/drivers/kvm/vmx.c | |||
@@ -1973,6 +1973,8 @@ static int handle_cr(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) | |||
1973 | vcpu_load_rsp_rip(vcpu); | 1973 | vcpu_load_rsp_rip(vcpu); |
1974 | set_cr8(vcpu, vcpu->regs[reg]); | 1974 | set_cr8(vcpu, vcpu->regs[reg]); |
1975 | skip_emulated_instruction(vcpu); | 1975 | skip_emulated_instruction(vcpu); |
1976 | if (irqchip_in_kernel(vcpu->kvm)) | ||
1977 | return 1; | ||
1976 | kvm_run->exit_reason = KVM_EXIT_SET_TPR; | 1978 | kvm_run->exit_reason = KVM_EXIT_SET_TPR; |
1977 | return 0; | 1979 | return 0; |
1978 | }; | 1980 | }; |