Signed-off-by: Joerg Roedel <[email protected]>
---
 arch/x86/kvm/svm.c |   26 ++++++++++++++++++++++++--
 1 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 1a44e43..381ed38 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -1498,6 +1498,9 @@ static int nested_svm_exit_handled_msr(struct vcpu_svm 
*svm,
        return 0;
 }
 
+/*
+ * If this function returns true, this #vmexit was already handled
+ */
 static int nested_svm_exit_handled(struct vcpu_svm *svm, bool kvm_override)
 {
        u32 exit_code = svm->vmcb->control.exit_code;
@@ -1515,8 +1518,27 @@ static int nested_svm_exit_handled(struct vcpu_svm *svm, 
bool kvm_override)
                        break;
                /* When we're shadowing, trap PFs */
                case SVM_EXIT_EXCP_BASE + PF_VECTOR:
-                       if (!npt_enabled)
-                               return 0;
+                       if (!npt_enabled) {
+                               u64 fault_address;
+                               u32 error_code;
+
+                               fault_address  = svm->vmcb->control.exit_info_2;
+                               error_code     = svm->vmcb->control.exit_info_1;
+
+                               kvm_mmu_page_fault(&svm->vcpu,
+                                                  fault_address,
+                                                  error_code);
+
+                               /*
+                                * If we are still nested here the pending
+                                * irqs/exceptions must be reinjected
+                                */
+                               //if (is_nested(svm))
+                               //      svm_complete_interrupts(svm);
+
+                               return true;
+                       }
+
                        break;
                default:
                        break;
-- 
1.6.3.3


--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to