Lines Matching refs:ioeventfd
279 struct vfio_pci_ioeventfd *ioeventfd = opaque; in vfio_pci_ioeventfd_handler() local
281 switch (ioeventfd->count) { in vfio_pci_ioeventfd_handler()
283 vfio_iowrite8(ioeventfd->data, ioeventfd->addr); in vfio_pci_ioeventfd_handler()
286 vfio_iowrite16(ioeventfd->data, ioeventfd->addr); in vfio_pci_ioeventfd_handler()
289 vfio_iowrite32(ioeventfd->data, ioeventfd->addr); in vfio_pci_ioeventfd_handler()
293 vfio_iowrite64(ioeventfd->data, ioeventfd->addr); in vfio_pci_ioeventfd_handler()
307 struct vfio_pci_ioeventfd *ioeventfd; in vfio_pci_ioeventfd() local
333 list_for_each_entry(ioeventfd, &vdev->ioeventfds_list, next) { in vfio_pci_ioeventfd()
334 if (ioeventfd->pos == pos && ioeventfd->bar == bar && in vfio_pci_ioeventfd()
335 ioeventfd->data == data && ioeventfd->count == count) { in vfio_pci_ioeventfd()
337 vfio_virqfd_disable(&ioeventfd->virqfd); in vfio_pci_ioeventfd()
338 list_del(&ioeventfd->next); in vfio_pci_ioeventfd()
340 kfree(ioeventfd); in vfio_pci_ioeventfd()
359 ioeventfd = kzalloc(sizeof(*ioeventfd), GFP_KERNEL); in vfio_pci_ioeventfd()
360 if (!ioeventfd) { in vfio_pci_ioeventfd()
365 ioeventfd->addr = vdev->barmap[bar] + pos; in vfio_pci_ioeventfd()
366 ioeventfd->data = data; in vfio_pci_ioeventfd()
367 ioeventfd->pos = pos; in vfio_pci_ioeventfd()
368 ioeventfd->bar = bar; in vfio_pci_ioeventfd()
369 ioeventfd->count = count; in vfio_pci_ioeventfd()
371 ret = vfio_virqfd_enable(ioeventfd, vfio_pci_ioeventfd_handler, in vfio_pci_ioeventfd()
372 NULL, NULL, &ioeventfd->virqfd, fd); in vfio_pci_ioeventfd()
374 kfree(ioeventfd); in vfio_pci_ioeventfd()
378 list_add(&ioeventfd->next, &vdev->ioeventfds_list); in vfio_pci_ioeventfd()