diff options
Diffstat (limited to 'arch/x86/kvm/svm.c')
-rw-r--r-- | arch/x86/kvm/svm.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index a14a6eaf871d..c0bc80391e40 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c | |||
@@ -1026,7 +1026,10 @@ static void svm_write_tsc_offset(struct kvm_vcpu *vcpu, u64 offset) | |||
1026 | g_tsc_offset = svm->vmcb->control.tsc_offset - | 1026 | g_tsc_offset = svm->vmcb->control.tsc_offset - |
1027 | svm->nested.hsave->control.tsc_offset; | 1027 | svm->nested.hsave->control.tsc_offset; |
1028 | svm->nested.hsave->control.tsc_offset = offset; | 1028 | svm->nested.hsave->control.tsc_offset = offset; |
1029 | } | 1029 | } else |
1030 | trace_kvm_write_tsc_offset(vcpu->vcpu_id, | ||
1031 | svm->vmcb->control.tsc_offset, | ||
1032 | offset); | ||
1030 | 1033 | ||
1031 | svm->vmcb->control.tsc_offset = offset + g_tsc_offset; | 1034 | svm->vmcb->control.tsc_offset = offset + g_tsc_offset; |
1032 | 1035 | ||
@@ -1044,6 +1047,11 @@ static void svm_adjust_tsc_offset(struct kvm_vcpu *vcpu, s64 adjustment, bool ho | |||
1044 | svm->vmcb->control.tsc_offset += adjustment; | 1047 | svm->vmcb->control.tsc_offset += adjustment; |
1045 | if (is_guest_mode(vcpu)) | 1048 | if (is_guest_mode(vcpu)) |
1046 | svm->nested.hsave->control.tsc_offset += adjustment; | 1049 | svm->nested.hsave->control.tsc_offset += adjustment; |
1050 | else | ||
1051 | trace_kvm_write_tsc_offset(vcpu->vcpu_id, | ||
1052 | svm->vmcb->control.tsc_offset - adjustment, | ||
1053 | svm->vmcb->control.tsc_offset); | ||
1054 | |||
1047 | mark_dirty(svm->vmcb, VMCB_INTERCEPTS); | 1055 | mark_dirty(svm->vmcb, VMCB_INTERCEPTS); |
1048 | } | 1056 | } |
1049 | 1057 | ||