Lines Matching refs:vdev
37 struct virtio_device vdev; member
102 static struct virtio_pci_device *to_vp_device(struct virtio_device *vdev) in to_vp_device() argument
104 return container_of(vdev, struct virtio_pci_device, vdev); in to_vp_device()
108 static u32 vp_get_features(struct virtio_device *vdev) in vp_get_features() argument
110 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_get_features()
118 static void vp_finalize_features(struct virtio_device *vdev) in vp_finalize_features() argument
120 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_finalize_features()
123 vring_transport_features(vdev); in vp_finalize_features()
126 BUILD_BUG_ON(ARRAY_SIZE(vdev->features) != 1); in vp_finalize_features()
127 iowrite32(vdev->features[0], vp_dev->ioaddr+VIRTIO_PCI_GUEST_FEATURES); in vp_finalize_features()
131 static void vp_get(struct virtio_device *vdev, unsigned offset, in vp_get() argument
134 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_get()
146 static void vp_set(struct virtio_device *vdev, unsigned offset, in vp_set() argument
149 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_set()
160 static u8 vp_get_status(struct virtio_device *vdev) in vp_get_status() argument
162 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_get_status()
166 static void vp_set_status(struct virtio_device *vdev, u8 status) in vp_set_status() argument
168 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_set_status()
175 static void vp_synchronize_vectors(struct virtio_device *vdev) in vp_synchronize_vectors() argument
177 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_synchronize_vectors()
187 static void vp_reset(struct virtio_device *vdev) in vp_reset() argument
189 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_reset()
196 vp_synchronize_vectors(vdev); in vp_reset()
202 struct virtio_pci_device *vp_dev = to_vp_device(vq->vdev); in vp_notify()
214 drv = container_of(vp_dev->vdev.dev.driver, in vp_config_changed()
218 drv->config_changed(&vp_dev->vdev); in vp_config_changed()
266 static void vp_free_vectors(struct virtio_device *vdev) in vp_free_vectors() argument
268 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_free_vectors()
304 static int vp_request_msix_vectors(struct virtio_device *vdev, int nvectors, in vp_request_msix_vectors() argument
307 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_request_msix_vectors()
308 const char *name = dev_name(&vp_dev->vdev.dev); in vp_request_msix_vectors()
375 vp_free_vectors(vdev); in vp_request_msix_vectors()
379 static int vp_request_intx(struct virtio_device *vdev) in vp_request_intx() argument
382 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_request_intx()
385 IRQF_SHARED, dev_name(&vdev->dev), vp_dev); in vp_request_intx()
391 static struct virtqueue *setup_vq(struct virtio_device *vdev, unsigned index, in setup_vq() argument
396 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in setup_vq()
432 vq = vring_new_virtqueue(index, info->num, VIRTIO_PCI_VRING_ALIGN, vdev, in setup_vq()
473 struct virtio_pci_device *vp_dev = to_vp_device(vq->vdev); in vp_del_vq()
501 static void vp_del_vqs(struct virtio_device *vdev) in vp_del_vqs() argument
503 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_del_vqs()
507 list_for_each_entry_safe(vq, n, &vdev->vqs, list) { in vp_del_vqs()
517 vp_free_vectors(vdev); in vp_del_vqs()
520 static int vp_try_to_find_vqs(struct virtio_device *vdev, unsigned nvqs, in vp_try_to_find_vqs() argument
527 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_try_to_find_vqs()
533 err = vp_request_intx(vdev); in vp_try_to_find_vqs()
548 err = vp_request_msix_vectors(vdev, nvectors, per_vq_vectors); in vp_try_to_find_vqs()
565 vqs[i] = setup_vq(vdev, i, callbacks[i], names[i], msix_vec); in vp_try_to_find_vqs()
578 dev_name(&vp_dev->vdev.dev), names[i]); in vp_try_to_find_vqs()
591 vp_del_vqs(vdev); in vp_try_to_find_vqs()
598 static int vp_find_vqs(struct virtio_device *vdev, unsigned nvqs, in vp_find_vqs() argument
606 err = vp_try_to_find_vqs(vdev, nvqs, vqs, callbacks, names, true, true); in vp_find_vqs()
610 err = vp_try_to_find_vqs(vdev, nvqs, vqs, callbacks, names, in vp_find_vqs()
615 return vp_try_to_find_vqs(vdev, nvqs, vqs, callbacks, names, in vp_find_vqs()
619 static const char *vp_bus_name(struct virtio_device *vdev) in vp_bus_name() argument
621 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_bus_name()
633 struct virtio_device *vdev = vq->vdev; in vp_set_vq_affinity() local
634 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_set_vq_affinity()
700 vp_dev->vdev.dev.parent = &pci_dev->dev; in virtio_pci_probe()
701 vp_dev->vdev.dev.release = virtio_pci_release_dev; in virtio_pci_probe()
702 vp_dev->vdev.config = &virtio_pci_config_ops; in virtio_pci_probe()
732 vp_dev->vdev.id.vendor = pci_dev->subsystem_vendor; in virtio_pci_probe()
733 vp_dev->vdev.id.device = pci_dev->subsystem_device; in virtio_pci_probe()
736 err = register_virtio_device(&vp_dev->vdev); in virtio_pci_probe()
758 unregister_virtio_device(&vp_dev->vdev); in virtio_pci_remove()
760 vp_del_vqs(&vp_dev->vdev); in virtio_pci_remove()
776 drv = container_of(vp_dev->vdev.dev.driver, in virtio_pci_freeze()
780 vp_dev->saved_status = vp_get_status(&vp_dev->vdev); in virtio_pci_freeze()
782 ret = drv->freeze(&vp_dev->vdev); in virtio_pci_freeze()
796 drv = container_of(vp_dev->vdev.dev.driver, in virtio_pci_restore()
804 vp_finalize_features(&vp_dev->vdev); in virtio_pci_restore()
807 ret = drv->restore(&vp_dev->vdev); in virtio_pci_restore()
811 vp_set_status(&vp_dev->vdev, vp_dev->saved_status); in virtio_pci_restore()