Skip to content

Commit

Permalink
KVM: x86: introduce cancel_hv_tscdeadline
Browse files Browse the repository at this point in the history
Introduce cancel_hv_tscdeadline() to encapsulate preemption
timer cancel stuff.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Radim Krčmář <rkrcmar@redhat.com>
Cc: Yunhong Jiang <yunhong.jiang@intel.com>
Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
  • Loading branch information
Wanpeng Li authored and Paolo Bonzini committed Jul 1, 2016
1 parent 9175d2e commit bd97ad0
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions arch/x86/kvm/lapic.c
Original file line number Diff line number Diff line change
Expand Up @@ -1349,14 +1349,19 @@ bool kvm_lapic_hv_timer_in_use(struct kvm_vcpu *vcpu)
}
EXPORT_SYMBOL_GPL(kvm_lapic_hv_timer_in_use);

static void cancel_hv_tscdeadline(struct kvm_lapic *apic)
{
kvm_x86_ops->cancel_hv_timer(apic->vcpu);
apic->lapic_timer.hv_timer_in_use = false;
}

void kvm_lapic_expired_hv_timer(struct kvm_vcpu *vcpu)
{
struct kvm_lapic *apic = vcpu->arch.apic;

WARN_ON(!apic->lapic_timer.hv_timer_in_use);
WARN_ON(swait_active(&vcpu->wq));
kvm_x86_ops->cancel_hv_timer(vcpu);
apic->lapic_timer.hv_timer_in_use = false;
cancel_hv_tscdeadline(apic);
apic_timer_expired(apic);
}
EXPORT_SYMBOL_GPL(kvm_lapic_expired_hv_timer);
Expand All @@ -1376,10 +1381,8 @@ void kvm_lapic_switch_to_hv_timer(struct kvm_vcpu *vcpu)
hrtimer_cancel(&apic->lapic_timer.timer);

/* In case the sw timer triggered in the window */
if (atomic_read(&apic->lapic_timer.pending)) {
apic->lapic_timer.hv_timer_in_use = false;
kvm_x86_ops->cancel_hv_timer(apic->vcpu);
}
if (atomic_read(&apic->lapic_timer.pending))
cancel_hv_tscdeadline(apic);
}
trace_kvm_hv_timer_state(vcpu->vcpu_id,
apic->lapic_timer.hv_timer_in_use);
Expand All @@ -1395,8 +1398,7 @@ void kvm_lapic_switch_to_sw_timer(struct kvm_vcpu *vcpu)
if (!apic->lapic_timer.hv_timer_in_use)
return;

kvm_x86_ops->cancel_hv_timer(vcpu);
apic->lapic_timer.hv_timer_in_use = false;
cancel_hv_tscdeadline(apic);

if (atomic_read(&apic->lapic_timer.pending))
return;
Expand Down

0 comments on commit bd97ad0

Please sign in to comment.