diff options
author | Avi Kivity <avi@qumranet.com> | 2007-11-25 14:12:03 +0200 |
---|---|---|
committer | Avi Kivity <avi@qumranet.com> | 2008-01-30 17:53:18 +0200 |
commit | c1a5d4f990ce034bcb19aebbb910c07019e60f6b (patch) | |
tree | 23aeb993f99c0b9523486c0dcbedb61247352a45 /drivers/kvm/svm.c | |
parent | c3c91fee5195ba5176a6da5ddc2a2822243eb79f (diff) | |
download | lwn-c1a5d4f990ce034bcb19aebbb910c07019e60f6b.tar.gz lwn-c1a5d4f990ce034bcb19aebbb910c07019e60f6b.zip |
KVM: Replace #GP injection by the generalized exception queue
Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'drivers/kvm/svm.c')
-rw-r--r-- | drivers/kvm/svm.c | 17 |
1 files changed, 2 insertions, 15 deletions
diff --git a/drivers/kvm/svm.c b/drivers/kvm/svm.c index aa8e90b404a0..f9769338c621 100644 --- a/drivers/kvm/svm.c +++ b/drivers/kvm/svm.c @@ -207,17 +207,6 @@ static bool svm_exception_injected(struct kvm_vcpu *vcpu) return !(svm->vmcb->control.exit_int_info & SVM_EXITINTINFO_VALID); } -static void svm_inject_gp(struct kvm_vcpu *vcpu, unsigned error_code) -{ - struct vcpu_svm *svm = to_svm(vcpu); - - svm->vmcb->control.event_inj = SVM_EVTINJ_VALID | - SVM_EVTINJ_VALID_ERR | - SVM_EVTINJ_TYPE_EXEPT | - GP_VECTOR; - svm->vmcb->control.event_inj_err = error_code; -} - static void inject_ud(struct kvm_vcpu *vcpu) { to_svm(vcpu)->vmcb->control.event_inj = SVM_EVTINJ_VALID | @@ -1115,7 +1104,7 @@ static int rdmsr_interception(struct vcpu_svm *svm, struct kvm_run *kvm_run) u64 data; if (svm_get_msr(&svm->vcpu, ecx, &data)) - svm_inject_gp(&svm->vcpu, 0); + kvm_inject_gp(&svm->vcpu, 0); else { svm->vmcb->save.rax = data & 0xffffffff; svm->vcpu.regs[VCPU_REGS_RDX] = data >> 32; @@ -1176,7 +1165,7 @@ static int wrmsr_interception(struct vcpu_svm *svm, struct kvm_run *kvm_run) | ((u64)(svm->vcpu.regs[VCPU_REGS_RDX] & -1u) << 32); svm->next_rip = svm->vmcb->save.rip + 2; if (svm_set_msr(&svm->vcpu, ecx, data)) - svm_inject_gp(&svm->vcpu, 0); + kvm_inject_gp(&svm->vcpu, 0); else skip_emulated_instruction(&svm->vcpu); return 1; @@ -1688,8 +1677,6 @@ static struct kvm_x86_ops svm_x86_ops = { .tlb_flush = svm_flush_tlb, - .inject_gp = svm_inject_gp, - .run = svm_vcpu_run, .handle_exit = handle_exit, .skip_emulated_instruction = skip_emulated_instruction, |