Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7ee5d940f5064a7a4f0e53a8ffe755bc26a8b0f1
Commit:     7ee5d940f5064a7a4f0e53a8ffe755bc26a8b0f1
Parent:     c1a5d4f990ce034bcb19aebbb910c07019e60f6b
Author:     Avi Kivity <[EMAIL PROTECTED]>
AuthorDate: Sun Nov 25 15:22:50 2007 +0200
Committer:  Avi Kivity <[EMAIL PROTECTED]>
CommitDate: Wed Jan 30 17:53:18 2008 +0200

    KVM: Use generalized exception queue for injecting #UD
    
    Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
 drivers/kvm/svm.c |   12 ++----------
 drivers/kvm/vmx.c |   11 +----------
 2 files changed, 3 insertions(+), 20 deletions(-)

diff --git a/drivers/kvm/svm.c b/drivers/kvm/svm.c
index f976933..06beed7 100644
--- a/drivers/kvm/svm.c
+++ b/drivers/kvm/svm.c
@@ -207,13 +207,6 @@ static bool svm_exception_injected(struct kvm_vcpu *vcpu)
        return !(svm->vmcb->control.exit_int_info & SVM_EXITINTINFO_VALID);
 }
 
-static void inject_ud(struct kvm_vcpu *vcpu)
-{
-       to_svm(vcpu)->vmcb->control.event_inj = SVM_EVTINJ_VALID |
-                                               SVM_EVTINJ_TYPE_EXEPT |
-                                               UD_VECTOR;
-}
-
 static int is_external_interrupt(u32 info)
 {
        info &= SVM_EVTINJ_TYPE_MASK | SVM_EVTINJ_VALID;
@@ -948,8 +941,7 @@ static int ud_interception(struct vcpu_svm *svm, struct 
kvm_run *kvm_run)
 
        er = emulate_instruction(&svm->vcpu, kvm_run, 0, 0, 0);
        if (er != EMULATE_DONE)
-               inject_ud(&svm->vcpu);
-
+               kvm_queue_exception(&svm->vcpu, UD_VECTOR);
        return 1;
 }
 
@@ -1027,7 +1019,7 @@ static int vmmcall_interception(struct vcpu_svm *svm, 
struct kvm_run *kvm_run)
 static int invalid_op_interception(struct vcpu_svm *svm,
                                   struct kvm_run *kvm_run)
 {
-       inject_ud(&svm->vcpu);
+       kvm_queue_exception(&svm->vcpu, UD_VECTOR);
        return 1;
 }
 
diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c
index 3b3c5f7..3b44573 100644
--- a/drivers/kvm/vmx.c
+++ b/drivers/kvm/vmx.c
@@ -613,14 +613,6 @@ static bool vmx_exception_injected(struct kvm_vcpu *vcpu)
        return !(vmx->idt_vectoring_info & VECTORING_INFO_VALID_MASK);
 }
 
-static void vmx_inject_ud(struct kvm_vcpu *vcpu)
-{
-       vmcs_write32(VM_ENTRY_INTR_INFO_FIELD,
-                    UD_VECTOR |
-                    INTR_TYPE_EXCEPTION |
-                    INTR_INFO_VALID_MASK);
-}
-
 /*
  * Swap MSR entry in host/guest MSR entry array.
  */
@@ -1866,8 +1858,7 @@ static int handle_exception(struct kvm_vcpu *vcpu, struct 
kvm_run *kvm_run)
        if (is_invalid_opcode(intr_info)) {
                er = emulate_instruction(vcpu, kvm_run, 0, 0, 0);
                if (er != EMULATE_DONE)
-                       vmx_inject_ud(vcpu);
-
+                       kvm_queue_exception(vcpu, UD_VECTOR);
                return 1;
        }
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to