aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorRoedel, Joerg <Joerg.Roedel@amd.com>2010-09-03 08:21:40 -0400
committerAvi Kivity <avi@redhat.com>2010-10-24 04:52:25 -0400
commitb75f4eb34122b60ee4f07ec89973d1589002c68a (patch)
tree031aa153a287f46c77da150fcb155057563f9b14 /arch
parentcda0008299a06f0d7218c6037c3c02d7a865e954 (diff)
KVM: SVM: Clean up rip handling in vmrun emulation
This patch changes the rip handling in the vmrun emulation path from using next_rip to the generic kvm register access functions. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kvm/svm.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 07655345f50b..fcbc491e1f87 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -2069,7 +2069,7 @@ static bool nested_svm_vmrun(struct vcpu_svm *svm)
2069 return false; 2069 return false;
2070 } 2070 }
2071 2071
2072 trace_kvm_nested_vmrun(svm->vmcb->save.rip - 3, vmcb_gpa, 2072 trace_kvm_nested_vmrun(svm->vmcb->save.rip, vmcb_gpa,
2073 nested_vmcb->save.rip, 2073 nested_vmcb->save.rip,
2074 nested_vmcb->control.int_ctl, 2074 nested_vmcb->control.int_ctl,
2075 nested_vmcb->control.event_inj, 2075 nested_vmcb->control.event_inj,
@@ -2098,7 +2098,7 @@ static bool nested_svm_vmrun(struct vcpu_svm *svm)
2098 hsave->save.cr0 = kvm_read_cr0(&svm->vcpu); 2098 hsave->save.cr0 = kvm_read_cr0(&svm->vcpu);
2099 hsave->save.cr4 = svm->vcpu.arch.cr4; 2099 hsave->save.cr4 = svm->vcpu.arch.cr4;
2100 hsave->save.rflags = vmcb->save.rflags; 2100 hsave->save.rflags = vmcb->save.rflags;
2101 hsave->save.rip = svm->next_rip; 2101 hsave->save.rip = kvm_rip_read(&svm->vcpu);
2102 hsave->save.rsp = vmcb->save.rsp; 2102 hsave->save.rsp = vmcb->save.rsp;
2103 hsave->save.rax = vmcb->save.rax; 2103 hsave->save.rax = vmcb->save.rax;
2104 if (npt_enabled) 2104 if (npt_enabled)
@@ -2270,8 +2270,8 @@ static int vmrun_interception(struct vcpu_svm *svm)
2270 if (nested_svm_check_permissions(svm)) 2270 if (nested_svm_check_permissions(svm))
2271 return 1; 2271 return 1;
2272 2272
2273 svm->next_rip = kvm_rip_read(&svm->vcpu) + 3; 2273 /* Save rip after vmrun instruction */
2274 skip_emulated_instruction(&svm->vcpu); 2274 kvm_rip_write(&svm->vcpu, kvm_rip_read(&svm->vcpu) + 3);
2275 2275
2276 if (!nested_svm_vmrun(svm)) 2276 if (!nested_svm_vmrun(svm))
2277 return 1; 2277 return 1;