KVM: Add vcpu info to ioapic_update_eoi()
Add vcpu info to ioapic_update_eoi, so we can know which vcpu issued this EOI. Signed-off-by: Yang Zhang <yang.z.zhang@Intel.com> Reviewed-by: Gleb Natapov <gleb@redhat.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
This commit is contained in:
parent
c0d1c770c0
commit
1fcc7890db
@ -739,7 +739,7 @@ static void kvm_ioapic_send_eoi(struct kvm_lapic *apic, int vector)
|
|||||||
trigger_mode = IOAPIC_LEVEL_TRIG;
|
trigger_mode = IOAPIC_LEVEL_TRIG;
|
||||||
else
|
else
|
||||||
trigger_mode = IOAPIC_EDGE_TRIG;
|
trigger_mode = IOAPIC_EDGE_TRIG;
|
||||||
kvm_ioapic_update_eoi(apic->vcpu->kvm, vector, trigger_mode);
|
kvm_ioapic_update_eoi(apic->vcpu, vector, trigger_mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -264,8 +264,8 @@ void kvm_ioapic_clear_all(struct kvm_ioapic *ioapic, int irq_source_id)
|
|||||||
spin_unlock(&ioapic->lock);
|
spin_unlock(&ioapic->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __kvm_ioapic_update_eoi(struct kvm_ioapic *ioapic, int vector,
|
static void __kvm_ioapic_update_eoi(struct kvm_vcpu *vcpu,
|
||||||
int trigger_mode)
|
struct kvm_ioapic *ioapic, int vector, int trigger_mode)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -304,12 +304,12 @@ bool kvm_ioapic_handles_vector(struct kvm *kvm, int vector)
|
|||||||
return test_bit(vector, ioapic->handled_vectors);
|
return test_bit(vector, ioapic->handled_vectors);
|
||||||
}
|
}
|
||||||
|
|
||||||
void kvm_ioapic_update_eoi(struct kvm *kvm, int vector, int trigger_mode)
|
void kvm_ioapic_update_eoi(struct kvm_vcpu *vcpu, int vector, int trigger_mode)
|
||||||
{
|
{
|
||||||
struct kvm_ioapic *ioapic = kvm->arch.vioapic;
|
struct kvm_ioapic *ioapic = vcpu->kvm->arch.vioapic;
|
||||||
|
|
||||||
spin_lock(&ioapic->lock);
|
spin_lock(&ioapic->lock);
|
||||||
__kvm_ioapic_update_eoi(ioapic, vector, trigger_mode);
|
__kvm_ioapic_update_eoi(vcpu, ioapic, vector, trigger_mode);
|
||||||
spin_unlock(&ioapic->lock);
|
spin_unlock(&ioapic->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -407,7 +407,7 @@ static int ioapic_mmio_write(struct kvm_io_device *this, gpa_t addr, int len,
|
|||||||
break;
|
break;
|
||||||
#ifdef CONFIG_IA64
|
#ifdef CONFIG_IA64
|
||||||
case IOAPIC_REG_EOI:
|
case IOAPIC_REG_EOI:
|
||||||
__kvm_ioapic_update_eoi(ioapic, data, IOAPIC_LEVEL_TRIG);
|
__kvm_ioapic_update_eoi(NULL, ioapic, data, IOAPIC_LEVEL_TRIG);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -70,7 +70,8 @@ static inline struct kvm_ioapic *ioapic_irqchip(struct kvm *kvm)
|
|||||||
int kvm_apic_match_dest(struct kvm_vcpu *vcpu, struct kvm_lapic *source,
|
int kvm_apic_match_dest(struct kvm_vcpu *vcpu, struct kvm_lapic *source,
|
||||||
int short_hand, int dest, int dest_mode);
|
int short_hand, int dest, int dest_mode);
|
||||||
int kvm_apic_compare_prio(struct kvm_vcpu *vcpu1, struct kvm_vcpu *vcpu2);
|
int kvm_apic_compare_prio(struct kvm_vcpu *vcpu1, struct kvm_vcpu *vcpu2);
|
||||||
void kvm_ioapic_update_eoi(struct kvm *kvm, int vector, int trigger_mode);
|
void kvm_ioapic_update_eoi(struct kvm_vcpu *vcpu, int vector,
|
||||||
|
int trigger_mode);
|
||||||
bool kvm_ioapic_handles_vector(struct kvm *kvm, int vector);
|
bool kvm_ioapic_handles_vector(struct kvm *kvm, int vector);
|
||||||
int kvm_ioapic_init(struct kvm *kvm);
|
int kvm_ioapic_init(struct kvm *kvm);
|
||||||
void kvm_ioapic_destroy(struct kvm *kvm);
|
void kvm_ioapic_destroy(struct kvm *kvm);
|
||||||
|
Loading…
Reference in New Issue
Block a user