diff options
author | Roedel, Joerg <Joerg.Roedel@amd.com> | 2010-09-03 08:21:40 -0400 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2010-10-24 04:52:25 -0400 |
commit | b75f4eb34122b60ee4f07ec89973d1589002c68a (patch) | |
tree | 031aa153a287f46c77da150fcb155057563f9b14 /arch | |
parent | cda0008299a06f0d7218c6037c3c02d7a865e954 (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.c | 8 |
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; |