Lines Matching refs:ioeventfd

361 static void vfio_pci_ioeventfd_do_write(struct vfio_pci_ioeventfd *ioeventfd,  in vfio_pci_ioeventfd_do_write()  argument
364 switch (ioeventfd->count) { in vfio_pci_ioeventfd_do_write()
366 vfio_pci_iowrite8(ioeventfd->vdev, test_mem, in vfio_pci_ioeventfd_do_write()
367 ioeventfd->data, ioeventfd->addr); in vfio_pci_ioeventfd_do_write()
370 vfio_pci_iowrite16(ioeventfd->vdev, test_mem, in vfio_pci_ioeventfd_do_write()
371 ioeventfd->data, ioeventfd->addr); in vfio_pci_ioeventfd_do_write()
374 vfio_pci_iowrite32(ioeventfd->vdev, test_mem, in vfio_pci_ioeventfd_do_write()
375 ioeventfd->data, ioeventfd->addr); in vfio_pci_ioeventfd_do_write()
379 vfio_pci_iowrite64(ioeventfd->vdev, test_mem, in vfio_pci_ioeventfd_do_write()
380 ioeventfd->data, ioeventfd->addr); in vfio_pci_ioeventfd_do_write()
388 struct vfio_pci_ioeventfd *ioeventfd = opaque; in vfio_pci_ioeventfd_handler() local
389 struct vfio_pci_core_device *vdev = ioeventfd->vdev; in vfio_pci_ioeventfd_handler()
391 if (ioeventfd->test_mem) { in vfio_pci_ioeventfd_handler()
400 vfio_pci_ioeventfd_do_write(ioeventfd, false); in vfio_pci_ioeventfd_handler()
402 if (ioeventfd->test_mem) in vfio_pci_ioeventfd_handler()
410 struct vfio_pci_ioeventfd *ioeventfd = opaque; in vfio_pci_ioeventfd_thread() local
412 vfio_pci_ioeventfd_do_write(ioeventfd, ioeventfd->test_mem); in vfio_pci_ioeventfd_thread()
421 struct vfio_pci_ioeventfd *ioeventfd; in vfio_pci_ioeventfd() local
447 list_for_each_entry(ioeventfd, &vdev->ioeventfds_list, next) { in vfio_pci_ioeventfd()
448 if (ioeventfd->pos == pos && ioeventfd->bar == bar && in vfio_pci_ioeventfd()
449 ioeventfd->data == data && ioeventfd->count == count) { in vfio_pci_ioeventfd()
451 vfio_virqfd_disable(&ioeventfd->virqfd); in vfio_pci_ioeventfd()
452 list_del(&ioeventfd->next); in vfio_pci_ioeventfd()
454 kfree(ioeventfd); in vfio_pci_ioeventfd()
473 ioeventfd = kzalloc(sizeof(*ioeventfd), GFP_KERNEL); in vfio_pci_ioeventfd()
474 if (!ioeventfd) { in vfio_pci_ioeventfd()
479 ioeventfd->vdev = vdev; in vfio_pci_ioeventfd()
480 ioeventfd->addr = vdev->barmap[bar] + pos; in vfio_pci_ioeventfd()
481 ioeventfd->data = data; in vfio_pci_ioeventfd()
482 ioeventfd->pos = pos; in vfio_pci_ioeventfd()
483 ioeventfd->bar = bar; in vfio_pci_ioeventfd()
484 ioeventfd->count = count; in vfio_pci_ioeventfd()
485 ioeventfd->test_mem = vdev->pdev->resource[bar].flags & IORESOURCE_MEM; in vfio_pci_ioeventfd()
487 ret = vfio_virqfd_enable(ioeventfd, vfio_pci_ioeventfd_handler, in vfio_pci_ioeventfd()
489 &ioeventfd->virqfd, fd); in vfio_pci_ioeventfd()
491 kfree(ioeventfd); in vfio_pci_ioeventfd()
495 list_add(&ioeventfd->next, &vdev->ioeventfds_list); in vfio_pci_ioeventfd()