Lines Matching full:irq

20 #include "irq.h"
48 struct kvm_lapic_irq *irq, struct dest_map *dest_map) in kvm_irq_delivery_to_apic() argument
55 if (kvm_irq_delivery_to_apic_fast(kvm, src, irq, &r, dest_map)) in kvm_irq_delivery_to_apic()
58 if (irq->dest_mode == APIC_DEST_PHYSICAL && in kvm_irq_delivery_to_apic()
59 irq->dest_id == 0xff && kvm_lowest_prio_delivery(irq)) { in kvm_irq_delivery_to_apic()
61 irq->delivery_mode = APIC_DM_FIXED; in kvm_irq_delivery_to_apic()
70 if (!kvm_apic_match_dest(vcpu, src, irq->shorthand, in kvm_irq_delivery_to_apic()
71 irq->dest_id, irq->dest_mode)) in kvm_irq_delivery_to_apic()
74 if (!kvm_lowest_prio_delivery(irq)) { in kvm_irq_delivery_to_apic()
77 r += kvm_apic_set_irq(vcpu, irq, dest_map); in kvm_irq_delivery_to_apic()
92 int idx = kvm_vector_to_index(irq->vector, dest_vcpus, in kvm_irq_delivery_to_apic()
99 r = kvm_apic_set_irq(lowest, irq, dest_map); in kvm_irq_delivery_to_apic()
105 struct kvm_lapic_irq *irq) in kvm_set_msi_irq() argument
114 irq->dest_id = x86_msi_msg_get_destid(&msg, kvm->arch.x2apic_format); in kvm_set_msi_irq()
115 irq->vector = msg.arch_data.vector; in kvm_set_msi_irq()
116 irq->dest_mode = kvm_lapic_irq_dest_mode(msg.arch_addr_lo.dest_mode_logical); in kvm_set_msi_irq()
117 irq->trig_mode = msg.arch_data.is_level; in kvm_set_msi_irq()
118 irq->delivery_mode = msg.arch_data.delivery_mode << 8; in kvm_set_msi_irq()
119 irq->msi_redir_hint = msg.arch_addr_lo.redirect_hint; in kvm_set_msi_irq()
120 irq->level = 1; in kvm_set_msi_irq()
121 irq->shorthand = APIC_DEST_NOSHORT; in kvm_set_msi_irq()
134 struct kvm_lapic_irq irq; in kvm_set_msi() local
142 kvm_set_msi_irq(kvm, e, &irq); in kvm_set_msi()
144 return kvm_irq_delivery_to_apic(kvm, NULL, &irq, NULL); in kvm_set_msi()
163 struct kvm_lapic_irq irq; in kvm_arch_set_irq_inatomic() local
177 kvm_set_msi_irq(kvm, e, &irq); in kvm_arch_set_irq_inatomic()
179 if (kvm_irq_delivery_to_apic_fast(kvm, NULL, &irq, &r, NULL)) in kvm_arch_set_irq_inatomic()
206 pr_warn("exhausted allocatable IRQ sources!\n"); in kvm_request_irq_source_id()
228 pr_err("IRQ source ID out of range!\n"); in kvm_free_irq_source_id()
241 void kvm_register_irq_mask_notifier(struct kvm *kvm, int irq, in kvm_register_irq_mask_notifier() argument
245 kimn->irq = irq; in kvm_register_irq_mask_notifier()
250 void kvm_unregister_irq_mask_notifier(struct kvm *kvm, int irq, in kvm_unregister_irq_mask_notifier() argument
269 if (kimn->irq == gsi) in kvm_fire_mask_notifiers()
338 bool kvm_intr_is_single_vcpu(struct kvm *kvm, struct kvm_lapic_irq *irq, in kvm_intr_is_single_vcpu() argument
345 if (kvm_intr_is_single_vcpu_fast(kvm, irq, dest_vcpu)) in kvm_intr_is_single_vcpu()
352 if (!kvm_apic_match_dest(vcpu, NULL, irq->shorthand, in kvm_intr_is_single_vcpu()
353 irq->dest_id, irq->dest_mode)) in kvm_intr_is_single_vcpu()
366 #define IOAPIC_ROUTING_ENTRY(irq) \ argument
367 { .gsi = irq, .type = KVM_IRQ_ROUTING_IRQCHIP, \
368 .u.irqchip = { .irqchip = KVM_IRQCHIP_IOAPIC, .pin = (irq) } }
369 #define ROUTING_ENTRY1(irq) IOAPIC_ROUTING_ENTRY(irq) argument
371 #define PIC_ROUTING_ENTRY(irq) \ argument
372 { .gsi = irq, .type = KVM_IRQ_ROUTING_IRQCHIP, \
373 .u.irqchip = { .irqchip = SELECT_PIC(irq), .pin = (irq) % 8 } }
374 #define ROUTING_ENTRY2(irq) \ argument
375 IOAPIC_ROUTING_ENTRY(irq), PIC_ROUTING_ENTRY(irq)
420 struct kvm_lapic_irq irq; in kvm_scan_ioapic_routes() local
425 kvm_set_msi_irq(vcpu->kvm, entry, &irq); in kvm_scan_ioapic_routes()
427 if (irq.trig_mode && in kvm_scan_ioapic_routes()
429 irq.dest_id, irq.dest_mode) || in kvm_scan_ioapic_routes()
430 kvm_apic_pending_eoi(vcpu, irq.vector))) in kvm_scan_ioapic_routes()
431 __set_bit(irq.vector, ioapic_handled_vectors); in kvm_scan_ioapic_routes()