|
@@ -1056,9 +1056,11 @@ static void svm_adjust_tsc_offset(struct kvm_vcpu *vcpu, s64 adjustment, bool ho
|
|
|
{
|
|
|
struct vcpu_svm *svm = to_svm(vcpu);
|
|
|
|
|
|
- WARN_ON(adjustment < 0);
|
|
|
- if (host)
|
|
|
- adjustment = svm_scale_tsc(vcpu, adjustment);
|
|
|
+ if (host) {
|
|
|
+ if (svm->tsc_ratio != TSC_RATIO_DEFAULT)
|
|
|
+ WARN_ON(adjustment < 0);
|
|
|
+ adjustment = svm_scale_tsc(vcpu, (u64)adjustment);
|
|
|
+ }
|
|
|
|
|
|
svm->vmcb->control.tsc_offset += adjustment;
|
|
|
if (is_guest_mode(vcpu))
|