Lines Matching refs:ioeventfd

362 static void vfio_pci_ioeventfd_do_write(struct vfio_pci_ioeventfd *ioeventfd,  in vfio_pci_ioeventfd_do_write()  argument
365 switch (ioeventfd->count) { in vfio_pci_ioeventfd_do_write()
367 vfio_pci_iowrite8(ioeventfd->vdev, test_mem, in vfio_pci_ioeventfd_do_write()
368 ioeventfd->data, ioeventfd->addr); in vfio_pci_ioeventfd_do_write()
371 vfio_pci_iowrite16(ioeventfd->vdev, test_mem, in vfio_pci_ioeventfd_do_write()
372 ioeventfd->data, ioeventfd->addr); in vfio_pci_ioeventfd_do_write()
375 vfio_pci_iowrite32(ioeventfd->vdev, test_mem, in vfio_pci_ioeventfd_do_write()
376 ioeventfd->data, ioeventfd->addr); in vfio_pci_ioeventfd_do_write()
380 vfio_pci_iowrite64(ioeventfd->vdev, test_mem, in vfio_pci_ioeventfd_do_write()
381 ioeventfd->data, ioeventfd->addr); in vfio_pci_ioeventfd_do_write()
389 struct vfio_pci_ioeventfd *ioeventfd = opaque; in vfio_pci_ioeventfd_handler() local
390 struct vfio_pci_core_device *vdev = ioeventfd->vdev; in vfio_pci_ioeventfd_handler()
392 if (ioeventfd->test_mem) { in vfio_pci_ioeventfd_handler()
401 vfio_pci_ioeventfd_do_write(ioeventfd, false); in vfio_pci_ioeventfd_handler()
403 if (ioeventfd->test_mem) in vfio_pci_ioeventfd_handler()
411 struct vfio_pci_ioeventfd *ioeventfd = opaque; in vfio_pci_ioeventfd_thread() local
413 vfio_pci_ioeventfd_do_write(ioeventfd, ioeventfd->test_mem); in vfio_pci_ioeventfd_thread()
422 struct vfio_pci_ioeventfd *ioeventfd; in vfio_pci_ioeventfd() local
448 list_for_each_entry(ioeventfd, &vdev->ioeventfds_list, next) { in vfio_pci_ioeventfd()
449 if (ioeventfd->pos == pos && ioeventfd->bar == bar && in vfio_pci_ioeventfd()
450 ioeventfd->data == data && ioeventfd->count == count) { in vfio_pci_ioeventfd()
452 vfio_virqfd_disable(&ioeventfd->virqfd); in vfio_pci_ioeventfd()
453 list_del(&ioeventfd->next); in vfio_pci_ioeventfd()
455 kfree(ioeventfd); in vfio_pci_ioeventfd()
474 ioeventfd = kzalloc(sizeof(*ioeventfd), GFP_KERNEL_ACCOUNT); in vfio_pci_ioeventfd()
475 if (!ioeventfd) { in vfio_pci_ioeventfd()
480 ioeventfd->vdev = vdev; in vfio_pci_ioeventfd()
481 ioeventfd->addr = vdev->barmap[bar] + pos; in vfio_pci_ioeventfd()
482 ioeventfd->data = data; in vfio_pci_ioeventfd()
483 ioeventfd->pos = pos; in vfio_pci_ioeventfd()
484 ioeventfd->bar = bar; in vfio_pci_ioeventfd()
485 ioeventfd->count = count; in vfio_pci_ioeventfd()
486 ioeventfd->test_mem = vdev->pdev->resource[bar].flags & IORESOURCE_MEM; in vfio_pci_ioeventfd()
488 ret = vfio_virqfd_enable(ioeventfd, vfio_pci_ioeventfd_handler, in vfio_pci_ioeventfd()
490 &ioeventfd->virqfd, fd); in vfio_pci_ioeventfd()
492 kfree(ioeventfd); in vfio_pci_ioeventfd()
496 list_add(&ioeventfd->next, &vdev->ioeventfds_list); in vfio_pci_ioeventfd()