Lines Matching refs:irq
51 inline static bool kvm_is_dm_lowest_prio(struct kvm_lapic_irq *irq) in kvm_is_dm_lowest_prio() argument
53 return irq->delivery_mode == APIC_DM_LOWEST; in kvm_is_dm_lowest_prio()
57 struct kvm_lapic_irq *irq, unsigned long *dest_map) in kvm_irq_delivery_to_apic() argument
62 if (irq->dest_mode == 0 && irq->dest_id == 0xff && in kvm_irq_delivery_to_apic()
63 kvm_is_dm_lowest_prio(irq)) { in kvm_irq_delivery_to_apic()
65 irq->delivery_mode = APIC_DM_FIXED; in kvm_irq_delivery_to_apic()
68 if (kvm_irq_delivery_to_apic_fast(kvm, src, irq, &r, dest_map)) in kvm_irq_delivery_to_apic()
75 if (!kvm_apic_match_dest(vcpu, src, irq->shorthand, in kvm_irq_delivery_to_apic()
76 irq->dest_id, irq->dest_mode)) in kvm_irq_delivery_to_apic()
79 if (!kvm_is_dm_lowest_prio(irq)) { in kvm_irq_delivery_to_apic()
82 r += kvm_apic_set_irq(vcpu, irq, dest_map); in kvm_irq_delivery_to_apic()
92 r = kvm_apic_set_irq(lowest, irq, dest_map); in kvm_irq_delivery_to_apic()
98 struct kvm_lapic_irq *irq) in kvm_set_msi_irq() argument
102 irq->dest_id = (e->msi.address_lo & in kvm_set_msi_irq()
104 irq->vector = (e->msi.data & in kvm_set_msi_irq()
106 irq->dest_mode = (1 << MSI_ADDR_DEST_MODE_SHIFT) & e->msi.address_lo; in kvm_set_msi_irq()
107 irq->trig_mode = (1 << MSI_DATA_TRIGGER_SHIFT) & e->msi.data; in kvm_set_msi_irq()
108 irq->delivery_mode = e->msi.data & 0x700; in kvm_set_msi_irq()
109 irq->level = 1; in kvm_set_msi_irq()
110 irq->shorthand = 0; in kvm_set_msi_irq()
117 struct kvm_lapic_irq irq; in kvm_set_msi() local
122 kvm_set_msi_irq(e, &irq); in kvm_set_msi()
124 return kvm_irq_delivery_to_apic(kvm, NULL, &irq, NULL); in kvm_set_msi()
131 struct kvm_lapic_irq irq; in kvm_set_msi_inatomic() local
134 kvm_set_msi_irq(e, &irq); in kvm_set_msi_inatomic()
136 if (kvm_irq_delivery_to_apic_fast(kvm, NULL, &irq, &r, NULL)) in kvm_set_msi_inatomic()
149 int kvm_set_irq_inatomic(struct kvm *kvm, int irq_source_id, u32 irq, int level) in kvm_set_irq_inatomic() argument
156 trace_kvm_set_irq(irq, level, irq_source_id); in kvm_set_irq_inatomic()
167 if (kvm_irq_map_gsi(kvm, entries, irq) > 0) { in kvm_set_irq_inatomic()
222 void kvm_register_irq_mask_notifier(struct kvm *kvm, int irq, in kvm_register_irq_mask_notifier() argument
226 kimn->irq = irq; in kvm_register_irq_mask_notifier()
231 void kvm_unregister_irq_mask_notifier(struct kvm *kvm, int irq, in kvm_unregister_irq_mask_notifier() argument
250 if (kimn->irq == gsi) in kvm_fire_mask_notifiers()
302 #define IOAPIC_ROUTING_ENTRY(irq) \ argument
303 { .gsi = irq, .type = KVM_IRQ_ROUTING_IRQCHIP, \
304 .u.irqchip = { .irqchip = KVM_IRQCHIP_IOAPIC, .pin = (irq) } }
305 #define ROUTING_ENTRY1(irq) IOAPIC_ROUTING_ENTRY(irq) argument
307 #define PIC_ROUTING_ENTRY(irq) \ argument
308 { .gsi = irq, .type = KVM_IRQ_ROUTING_IRQCHIP, \
309 .u.irqchip = { .irqchip = SELECT_PIC(irq), .pin = (irq) % 8 } }
310 #define ROUTING_ENTRY2(irq) \ argument
311 IOAPIC_ROUTING_ENTRY(irq), PIC_ROUTING_ENTRY(irq)