Lines Matching refs:intx
78 if (vdev->intx.pending) { in vfio_intx_mmap_enable()
79 timer_mod(vdev->intx.mmap_timer, in vfio_intx_mmap_enable()
80 qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + vdev->intx.mmap_timeout); in vfio_intx_mmap_enable()
91 if (!event_notifier_test_and_clear(&vdev->intx.interrupt)) { in vfio_intx_interrupt()
95 trace_vfio_intx_interrupt(vdev->vbasedev.name, 'A' + vdev->intx.pin); in vfio_intx_interrupt()
97 vdev->intx.pending = true; in vfio_intx_interrupt()
100 if (vdev->intx.mmap_timeout) { in vfio_intx_interrupt()
101 timer_mod(vdev->intx.mmap_timer, in vfio_intx_interrupt()
102 qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + vdev->intx.mmap_timeout); in vfio_intx_interrupt()
110 if (!vdev->intx.pending) { in vfio_intx_eoi()
116 vdev->intx.pending = false; in vfio_intx_eoi()
124 int irq_fd = event_notifier_get_fd(&vdev->intx.interrupt); in vfio_intx_enable_kvm()
127 vdev->intx.route.mode != PCI_INTX_ENABLED || in vfio_intx_enable_kvm()
135 vdev->intx.pending = false; in vfio_intx_enable_kvm()
139 if (event_notifier_init(&vdev->intx.unmask, 0)) { in vfio_intx_enable_kvm()
145 &vdev->intx.interrupt, in vfio_intx_enable_kvm()
146 &vdev->intx.unmask, in vfio_intx_enable_kvm()
147 vdev->intx.route.irq)) { in vfio_intx_enable_kvm()
154 event_notifier_get_fd(&vdev->intx.unmask), in vfio_intx_enable_kvm()
162 vdev->intx.kvm_accel = true; in vfio_intx_enable_kvm()
169 kvm_irqchip_remove_irqfd_notifier_gsi(kvm_state, &vdev->intx.interrupt, in vfio_intx_enable_kvm()
170 vdev->intx.route.irq); in vfio_intx_enable_kvm()
172 event_notifier_cleanup(&vdev->intx.unmask); in vfio_intx_enable_kvm()
185 if (!vdev->intx.kvm_accel) { in vfio_intx_disable_kvm()
194 vdev->intx.pending = false; in vfio_intx_disable_kvm()
198 if (kvm_irqchip_remove_irqfd_notifier_gsi(kvm_state, &vdev->intx.interrupt, in vfio_intx_disable_kvm()
199 vdev->intx.route.irq)) { in vfio_intx_disable_kvm()
204 event_notifier_cleanup(&vdev->intx.unmask); in vfio_intx_disable_kvm()
207 qemu_set_fd_handler(event_notifier_get_fd(&vdev->intx.interrupt), in vfio_intx_disable_kvm()
210 vdev->intx.kvm_accel = false; in vfio_intx_disable_kvm()
224 vdev->intx.route.irq, route->irq); in vfio_intx_update()
228 vdev->intx.route = *route; in vfio_intx_update()
251 route = pci_device_route_intx_to_irq(&vdev->pdev, vdev->intx.pin); in vfio_intx_routing_notifier()
253 if (pci_intx_route_changed(&vdev->intx.route, &route)) { in vfio_intx_routing_notifier()
263 vfio_intx_update(vdev, &vdev->intx.route); in vfio_irqchip_change()
280 vdev->intx.pin = pin - 1; /* Pin A (1) -> irq[0] */ in vfio_intx_enable()
289 vdev->intx.route = pci_device_route_intx_to_irq(&vdev->pdev, in vfio_intx_enable()
290 vdev->intx.pin); in vfio_intx_enable()
294 ret = event_notifier_init(&vdev->intx.interrupt, 0); in vfio_intx_enable()
299 fd = event_notifier_get_fd(&vdev->intx.interrupt); in vfio_intx_enable()
305 event_notifier_cleanup(&vdev->intx.interrupt); in vfio_intx_enable()
323 timer_del(vdev->intx.mmap_timer); in vfio_intx_disable()
326 vdev->intx.pending = false; in vfio_intx_disable()
330 fd = event_notifier_get_fd(&vdev->intx.interrupt); in vfio_intx_disable()
332 event_notifier_cleanup(&vdev->intx.interrupt); in vfio_intx_disable()
3143 vdev->intx.mmap_timer = timer_new_ms(QEMU_CLOCK_VIRTUAL, in vfio_interrupt_setup()
3150 timer_free(vdev->intx.mmap_timer); in vfio_interrupt_setup()
3305 if (vdev->intx.mmap_timer) { in vfio_pci_realize()
3306 timer_free(vdev->intx.mmap_timer); in vfio_pci_realize()
3338 if (vdev->intx.mmap_timer) { in vfio_exitfn()
3339 timer_free(vdev->intx.mmap_timer); in vfio_exitfn()
3455 intx.mmap_timeout, 1100),