Lines Matching refs:vdev
41 static int vfio_pci_iowrite##size(struct vfio_pci_core_device *vdev, \
45 down_read(&vdev->memory_lock); \
46 if (!__vfio_pci_memory_enabled(vdev)) { \
47 up_read(&vdev->memory_lock); \
55 up_read(&vdev->memory_lock); \
68 static int vfio_pci_ioread##size(struct vfio_pci_core_device *vdev, \
72 down_read(&vdev->memory_lock); \
73 if (!__vfio_pci_memory_enabled(vdev)) { \
74 up_read(&vdev->memory_lock); \
82 up_read(&vdev->memory_lock); \
97 static ssize_t do_io_rw(struct vfio_pci_core_device *vdev, bool test_mem,
122 ret = vfio_pci_iowrite32(vdev, test_mem,
127 ret = vfio_pci_ioread32(vdev, test_mem,
144 ret = vfio_pci_iowrite16(vdev, test_mem,
149 ret = vfio_pci_ioread16(vdev, test_mem,
166 ret = vfio_pci_iowrite8(vdev, test_mem,
171 ret = vfio_pci_ioread8(vdev, test_mem,
203 static int vfio_pci_setup_barmap(struct vfio_pci_core_device *vdev, int bar)
205 struct pci_dev *pdev = vdev->pdev;
209 if (vdev->barmap[bar])
222 vdev->barmap[bar] = io;
227 ssize_t vfio_pci_bar_rw(struct vfio_pci_core_device *vdev, char __user *buf,
230 struct pci_dev *pdev = vdev->pdev;
236 struct resource *res = &vdev->pdev->resource[bar];
265 int ret = vfio_pci_setup_barmap(vdev, bar);
271 io = vdev->barmap[bar];
274 if (bar == vdev->msix_bar) {
275 x_start = vdev->msix_offset;
276 x_end = vdev->msix_offset + vdev->msix_size;
279 done = do_io_rw(vdev, res->flags & IORESOURCE_MEM, io, buf, pos,
292 ssize_t vfio_pci_vga_rw(struct vfio_pci_core_device *vdev, char __user *buf,
302 if (!vdev->has_vga)
337 ret = vga_get_interruptible(vdev->pdev, rsrc);
348 done = do_io_rw(vdev, false, iomem, buf, off, count, 0, 0, iswrite);
350 vga_put(vdev->pdev, rsrc);
366 vfio_pci_iowrite8(ioeventfd->vdev, test_mem,
370 vfio_pci_iowrite16(ioeventfd->vdev, test_mem,
374 vfio_pci_iowrite32(ioeventfd->vdev, test_mem,
379 vfio_pci_iowrite64(ioeventfd->vdev, test_mem,
389 struct vfio_pci_core_device *vdev = ioeventfd->vdev;
392 if (!down_read_trylock(&vdev->memory_lock))
394 if (!__vfio_pci_memory_enabled(vdev)) {
395 up_read(&vdev->memory_lock);
403 up_read(&vdev->memory_lock);
415 int vfio_pci_ioeventfd(struct vfio_pci_core_device *vdev, loff_t offset,
418 struct pci_dev *pdev = vdev->pdev;
431 if (bar == vdev->msix_bar &&
432 !(pos + count <= vdev->msix_offset ||
433 pos >= vdev->msix_offset + vdev->msix_size))
441 ret = vfio_pci_setup_barmap(vdev, bar);
445 mutex_lock(&vdev->ioeventfds_lock);
447 list_for_each_entry(ioeventfd, &vdev->ioeventfds_list, next) {
453 vdev->ioeventfds_nr--;
468 if (vdev->ioeventfds_nr >= VFIO_PCI_IOEVENTFD_MAX) {
479 ioeventfd->vdev = vdev;
480 ioeventfd->addr = vdev->barmap[bar] + pos;
485 ioeventfd->test_mem = vdev->pdev->resource[bar].flags & IORESOURCE_MEM;
495 list_add(&ioeventfd->next, &vdev->ioeventfds_list);
496 vdev->ioeventfds_nr++;
499 mutex_unlock(&vdev->ioeventfds_lock);