Searched refs:virqfd (Results 1 - 5 of 5) sorted by relevance

/linux-4.4.14/drivers/vfio/
H A Dvirqfd.c41 static void virqfd_deactivate(struct virqfd *virqfd) virqfd_deactivate() argument
43 queue_work(vfio_irqfd_cleanup_wq, &virqfd->shutdown); virqfd_deactivate()
48 struct virqfd *virqfd = container_of(wait, struct virqfd, wait); virqfd_wakeup() local
53 if ((!virqfd->handler || virqfd_wakeup()
54 virqfd->handler(virqfd->opaque, virqfd->data)) && virqfd_wakeup()
55 virqfd->thread) virqfd_wakeup()
56 schedule_work(&virqfd->inject); virqfd_wakeup()
64 * The eventfd is closing, if the virqfd has not yet been virqfd_wakeup()
66 * virqfd pointer to it is still valid, queue it now. As virqfd_wakeup()
67 * with kvm irqfds, we know we won't race against the virqfd virqfd_wakeup()
70 if (*(virqfd->pvirqfd) == virqfd) { virqfd_wakeup()
71 *(virqfd->pvirqfd) = NULL; virqfd_wakeup()
72 virqfd_deactivate(virqfd); virqfd_wakeup()
84 struct virqfd *virqfd = container_of(pt, struct virqfd, pt); virqfd_ptable_queue_proc() local
85 add_wait_queue(wqh, &virqfd->wait); virqfd_ptable_queue_proc()
90 struct virqfd *virqfd = container_of(work, struct virqfd, shutdown); virqfd_shutdown() local
93 eventfd_ctx_remove_wait_queue(virqfd->eventfd, &virqfd->wait, &cnt); virqfd_shutdown()
94 flush_work(&virqfd->inject); virqfd_shutdown()
95 eventfd_ctx_put(virqfd->eventfd); virqfd_shutdown()
97 kfree(virqfd); virqfd_shutdown()
102 struct virqfd *virqfd = container_of(work, struct virqfd, inject); virqfd_inject() local
103 if (virqfd->thread) virqfd_inject()
104 virqfd->thread(virqfd->opaque, virqfd->data); virqfd_inject()
110 void *data, struct virqfd **pvirqfd, int fd) vfio_virqfd_enable()
114 struct virqfd *virqfd; vfio_virqfd_enable() local
118 virqfd = kzalloc(sizeof(*virqfd), GFP_KERNEL); vfio_virqfd_enable()
119 if (!virqfd) vfio_virqfd_enable()
122 virqfd->pvirqfd = pvirqfd; vfio_virqfd_enable()
123 virqfd->opaque = opaque; vfio_virqfd_enable()
124 virqfd->handler = handler; vfio_virqfd_enable()
125 virqfd->thread = thread; vfio_virqfd_enable()
126 virqfd->data = data; vfio_virqfd_enable()
128 INIT_WORK(&virqfd->shutdown, virqfd_shutdown); vfio_virqfd_enable()
129 INIT_WORK(&virqfd->inject, virqfd_inject); vfio_virqfd_enable()
143 virqfd->eventfd = ctx; vfio_virqfd_enable()
148 * we update the pointer to the virqfd under lock to avoid vfio_virqfd_enable()
149 * pushing multiple jobs to release the same virqfd. vfio_virqfd_enable()
158 *pvirqfd = virqfd; vfio_virqfd_enable()
166 init_waitqueue_func_entry(&virqfd->wait, virqfd_wakeup); vfio_virqfd_enable()
167 init_poll_funcptr(&virqfd->pt, virqfd_ptable_queue_proc); vfio_virqfd_enable()
169 events = irqfd.file->f_op->poll(irqfd.file, &virqfd->pt); vfio_virqfd_enable()
177 schedule_work(&virqfd->inject); vfio_virqfd_enable()
192 kfree(virqfd); vfio_virqfd_enable()
198 void vfio_virqfd_disable(struct virqfd **pvirqfd) vfio_virqfd_disable()
H A DMakefile1 vfio_virqfd-y := virqfd.o
/linux-4.4.14/include/linux/
H A Dvfio.h119 struct virqfd { struct
129 struct virqfd **pvirqfd;
135 void *data, struct virqfd **pvirqfd, int fd);
136 extern void vfio_virqfd_disable(struct virqfd **pvirqfd);
/linux-4.4.14/drivers/vfio/pci/
H A Dvfio_pci_private.h29 struct virqfd *unmask;
30 struct virqfd *mask;
/linux-4.4.14/drivers/vfio/platform/
H A Dvfio_platform_private.h38 struct virqfd *unmask;
39 struct virqfd *mask;

Completed in 78 milliseconds