forked from Minki/linux
kvm: x86: Track irq vectors in ioapic->rtc_status.dest_map
This allows backtracking later in case the rtc irq has been moved to another vcpu/vector. Signed-off-by: Joerg Roedel <jroedel@suse.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
9e4aabe2bb
commit
9daa50076f
@ -41,7 +41,14 @@ struct kvm_vcpu;
|
||||
#endif
|
||||
|
||||
struct dest_map {
|
||||
/* vcpu bitmap where IRQ has been sent */
|
||||
DECLARE_BITMAP(map, KVM_MAX_VCPUS);
|
||||
|
||||
/*
|
||||
* Vector sent to a given vcpu, only valid when
|
||||
* the vcpu's bit in map is set
|
||||
*/
|
||||
u8 vectors[KVM_MAX_VCPUS];
|
||||
};
|
||||
|
||||
|
||||
|
@ -914,8 +914,10 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode,
|
||||
|
||||
result = 1;
|
||||
|
||||
if (dest_map)
|
||||
if (dest_map) {
|
||||
__set_bit(vcpu->vcpu_id, dest_map->map);
|
||||
dest_map->vectors[vcpu->vcpu_id] = vector;
|
||||
}
|
||||
|
||||
if (apic_test_vector(vector, apic->regs + APIC_TMR) != !!trig_mode) {
|
||||
if (trig_mode)
|
||||
|
Loading…
Reference in New Issue
Block a user