Commit bab5bb39 authored by Nicholas Krause's avatar Nicholas Krause Committed by Paolo Bonzini

kvm: x86: Remove kvm_make_request from lapic.c

Adds a function kvm_vcpu_set_pending_timer instead of calling
kvm_make_request in lapic.c.
Signed-off-by: default avatarNicholas Krause <xerofoify@gmail.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent edccda7c
...@@ -1076,16 +1076,11 @@ static void apic_timer_expired(struct kvm_lapic *apic) ...@@ -1076,16 +1076,11 @@ static void apic_timer_expired(struct kvm_lapic *apic)
wait_queue_head_t *q = &vcpu->wq; wait_queue_head_t *q = &vcpu->wq;
struct kvm_timer *ktimer = &apic->lapic_timer; struct kvm_timer *ktimer = &apic->lapic_timer;
/*
* Note: KVM_REQ_PENDING_TIMER is implicitly checked in
* vcpu_enter_guest.
*/
if (atomic_read(&apic->lapic_timer.pending)) if (atomic_read(&apic->lapic_timer.pending))
return; return;
atomic_inc(&apic->lapic_timer.pending); atomic_inc(&apic->lapic_timer.pending);
/* FIXME: this code should not know anything about vcpus */ kvm_set_pending_timer(vcpu);
kvm_make_request(KVM_REQ_PENDING_TIMER, vcpu);
if (waitqueue_active(q)) if (waitqueue_active(q))
wake_up_interruptible(q); wake_up_interruptible(q);
......
...@@ -1087,6 +1087,15 @@ static void update_pvclock_gtod(struct timekeeper *tk) ...@@ -1087,6 +1087,15 @@ static void update_pvclock_gtod(struct timekeeper *tk)
} }
#endif #endif
void kvm_set_pending_timer(struct kvm_vcpu *vcpu)
{
/*
* Note: KVM_REQ_PENDING_TIMER is implicitly checked in
* vcpu_enter_guest. This function is only called from
* the physical CPU that is running vcpu.
*/
kvm_make_request(KVM_REQ_PENDING_TIMER, vcpu);
}
static void kvm_write_wall_clock(struct kvm *kvm, gpa_t wall_clock) static void kvm_write_wall_clock(struct kvm *kvm, gpa_t wall_clock)
{ {
......
...@@ -147,6 +147,7 @@ static inline void kvm_register_writel(struct kvm_vcpu *vcpu, ...@@ -147,6 +147,7 @@ static inline void kvm_register_writel(struct kvm_vcpu *vcpu,
void kvm_before_handle_nmi(struct kvm_vcpu *vcpu); void kvm_before_handle_nmi(struct kvm_vcpu *vcpu);
void kvm_after_handle_nmi(struct kvm_vcpu *vcpu); void kvm_after_handle_nmi(struct kvm_vcpu *vcpu);
void kvm_set_pending_timer(struct kvm_vcpu *vcpu);
int kvm_inject_realmode_interrupt(struct kvm_vcpu *vcpu, int irq, int inc_eip); int kvm_inject_realmode_interrupt(struct kvm_vcpu *vcpu, int irq, int inc_eip);
void kvm_write_tsc(struct kvm_vcpu *vcpu, struct msr_data *msr); void kvm_write_tsc(struct kvm_vcpu *vcpu, struct msr_data *msr);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment