diff options
Diffstat (limited to 'drivers/kvm/vmx.c')
-rw-r--r-- | drivers/kvm/vmx.c | 29 |
1 files changed, 1 insertions, 28 deletions
diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c index 2d7d638d72d0..7fe834cb0d81 100644 --- a/drivers/kvm/vmx.c +++ b/drivers/kvm/vmx.c | |||
@@ -1796,7 +1796,6 @@ static int handle_exception(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) | |||
1796 | unsigned long cr2, rip; | 1796 | unsigned long cr2, rip; |
1797 | u32 vect_info; | 1797 | u32 vect_info; |
1798 | enum emulation_result er; | 1798 | enum emulation_result er; |
1799 | int r; | ||
1800 | 1799 | ||
1801 | vect_info = vmcs_read32(IDT_VECTORING_INFO_FIELD); | 1800 | vect_info = vmcs_read32(IDT_VECTORING_INFO_FIELD); |
1802 | intr_info = vmcs_read32(VM_EXIT_INTR_INFO); | 1801 | intr_info = vmcs_read32(VM_EXIT_INTR_INFO); |
@@ -1834,33 +1833,7 @@ static int handle_exception(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) | |||
1834 | error_code = vmcs_read32(VM_EXIT_INTR_ERROR_CODE); | 1833 | error_code = vmcs_read32(VM_EXIT_INTR_ERROR_CODE); |
1835 | if (is_page_fault(intr_info)) { | 1834 | if (is_page_fault(intr_info)) { |
1836 | cr2 = vmcs_readl(EXIT_QUALIFICATION); | 1835 | cr2 = vmcs_readl(EXIT_QUALIFICATION); |
1837 | 1836 | return kvm_mmu_page_fault(vcpu, cr2, error_code); | |
1838 | mutex_lock(&vcpu->kvm->lock); | ||
1839 | r = kvm_mmu_page_fault(vcpu, cr2, error_code); | ||
1840 | if (r < 0) { | ||
1841 | mutex_unlock(&vcpu->kvm->lock); | ||
1842 | return r; | ||
1843 | } | ||
1844 | if (!r) { | ||
1845 | mutex_unlock(&vcpu->kvm->lock); | ||
1846 | return 1; | ||
1847 | } | ||
1848 | |||
1849 | er = emulate_instruction(vcpu, kvm_run, cr2, error_code, 0); | ||
1850 | mutex_unlock(&vcpu->kvm->lock); | ||
1851 | |||
1852 | switch (er) { | ||
1853 | case EMULATE_DONE: | ||
1854 | return 1; | ||
1855 | case EMULATE_DO_MMIO: | ||
1856 | ++vcpu->stat.mmio_exits; | ||
1857 | return 0; | ||
1858 | case EMULATE_FAIL: | ||
1859 | kvm_report_emulation_failure(vcpu, "pagetable"); | ||
1860 | break; | ||
1861 | default: | ||
1862 | BUG(); | ||
1863 | } | ||
1864 | } | 1837 | } |
1865 | 1838 | ||
1866 | if (vcpu->rmode.active && | 1839 | if (vcpu->rmode.active && |