Searched refs:virqfd (Results 1 - 5 of 5) sorted by relevance
/linux-4.4.14/drivers/vfio/ |
H A D | virqfd.c | 41 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 D | Makefile | 1 vfio_virqfd-y := virqfd.o
|
/linux-4.4.14/include/linux/ |
H A D | vfio.h | 119 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 D | vfio_pci_private.h | 29 struct virqfd *unmask; 30 struct virqfd *mask;
|
/linux-4.4.14/drivers/vfio/platform/ |
H A D | vfio_platform_private.h | 38 struct virqfd *unmask; 39 struct virqfd *mask;
|
Completed in 78 milliseconds