Lines Matching refs:vdev
37 struct virtio_device vdev; member
99 static struct virtio_pci_device *to_vp_device(struct virtio_device *vdev) in to_vp_device() argument
101 return container_of(vdev, struct virtio_pci_device, vdev); in to_vp_device()
105 static u32 vp_get_features(struct virtio_device *vdev) in vp_get_features() argument
107 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_get_features()
115 static void vp_finalize_features(struct virtio_device *vdev) in vp_finalize_features() argument
117 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_finalize_features()
120 vring_transport_features(vdev); in vp_finalize_features()
123 BUILD_BUG_ON(ARRAY_SIZE(vdev->features) != 1); in vp_finalize_features()
124 iowrite32(vdev->features[0], vp_dev->ioaddr+VIRTIO_PCI_GUEST_FEATURES); in vp_finalize_features()
128 static void vp_get(struct virtio_device *vdev, unsigned offset, in vp_get() argument
131 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_get()
143 static void vp_set(struct virtio_device *vdev, unsigned offset, in vp_set() argument
146 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_set()
157 static u8 vp_get_status(struct virtio_device *vdev) in vp_get_status() argument
159 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_get_status()
163 static void vp_set_status(struct virtio_device *vdev, u8 status) in vp_set_status() argument
165 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_set_status()
172 static void vp_synchronize_vectors(struct virtio_device *vdev) in vp_synchronize_vectors() argument
174 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_synchronize_vectors()
184 static void vp_reset(struct virtio_device *vdev) in vp_reset() argument
186 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_reset()
193 vp_synchronize_vectors(vdev); in vp_reset()
199 struct virtio_pci_device *vp_dev = to_vp_device(vq->vdev); in vp_notify()
212 virtio_config_changed(&vp_dev->vdev); in vp_config_changed()
260 static void vp_free_vectors(struct virtio_device *vdev) in vp_free_vectors() argument
262 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_free_vectors()
298 static int vp_request_msix_vectors(struct virtio_device *vdev, int nvectors, in vp_request_msix_vectors() argument
301 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_request_msix_vectors()
302 const char *name = dev_name(&vp_dev->vdev.dev); in vp_request_msix_vectors()
368 vp_free_vectors(vdev); in vp_request_msix_vectors()
372 static int vp_request_intx(struct virtio_device *vdev) in vp_request_intx() argument
375 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_request_intx()
378 IRQF_SHARED, dev_name(&vdev->dev), vp_dev); in vp_request_intx()
384 static struct virtqueue *setup_vq(struct virtio_device *vdev, unsigned index, in setup_vq() argument
389 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in setup_vq()
425 vq = vring_new_virtqueue(index, info->num, VIRTIO_PCI_VRING_ALIGN, vdev, in setup_vq()
466 struct virtio_pci_device *vp_dev = to_vp_device(vq->vdev); in vp_del_vq()
494 static void vp_del_vqs(struct virtio_device *vdev) in vp_del_vqs() argument
496 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_del_vqs()
500 list_for_each_entry_safe(vq, n, &vdev->vqs, list) { in vp_del_vqs()
510 vp_free_vectors(vdev); in vp_del_vqs()
513 static int vp_try_to_find_vqs(struct virtio_device *vdev, unsigned nvqs, in vp_try_to_find_vqs() argument
520 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_try_to_find_vqs()
526 err = vp_request_intx(vdev); in vp_try_to_find_vqs()
541 err = vp_request_msix_vectors(vdev, nvectors, per_vq_vectors); in vp_try_to_find_vqs()
558 vqs[i] = setup_vq(vdev, i, callbacks[i], names[i], msix_vec); in vp_try_to_find_vqs()
571 dev_name(&vp_dev->vdev.dev), names[i]); in vp_try_to_find_vqs()
584 vp_del_vqs(vdev); in vp_try_to_find_vqs()
591 static int vp_find_vqs(struct virtio_device *vdev, unsigned nvqs, in vp_find_vqs() argument
599 err = vp_try_to_find_vqs(vdev, nvqs, vqs, callbacks, names, true, true); in vp_find_vqs()
603 err = vp_try_to_find_vqs(vdev, nvqs, vqs, callbacks, names, in vp_find_vqs()
608 return vp_try_to_find_vqs(vdev, nvqs, vqs, callbacks, names, in vp_find_vqs()
612 static const char *vp_bus_name(struct virtio_device *vdev) in vp_bus_name() argument
614 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_bus_name()
626 struct virtio_device *vdev = vq->vdev; in vp_set_vq_affinity() local
627 struct virtio_pci_device *vp_dev = to_vp_device(vdev); in vp_set_vq_affinity()
693 vp_dev->vdev.dev.parent = &pci_dev->dev; in virtio_pci_probe()
694 vp_dev->vdev.dev.release = virtio_pci_release_dev; in virtio_pci_probe()
695 vp_dev->vdev.config = &virtio_pci_config_ops; in virtio_pci_probe()
725 vp_dev->vdev.id.vendor = pci_dev->subsystem_vendor; in virtio_pci_probe()
726 vp_dev->vdev.id.device = pci_dev->subsystem_device; in virtio_pci_probe()
729 err = register_virtio_device(&vp_dev->vdev); in virtio_pci_probe()
750 unregister_virtio_device(&vp_dev->vdev); in virtio_pci_remove()
752 vp_del_vqs(&vp_dev->vdev); in virtio_pci_remove()
766 ret = virtio_device_freeze(&vp_dev->vdev); in virtio_pci_freeze()
784 return virtio_device_restore(&vp_dev->vdev); in virtio_pci_restore()