Lines Matching refs:vq

182 static int vp_active_vq(struct virtqueue *vq, u16 msix_vec)  in vp_active_vq()  argument
184 struct virtio_pci_device *vp_dev = to_vp_device(vq->vdev); in vp_active_vq()
188 index = vq->index; in vp_active_vq()
191 vp_modern_set_queue_size(mdev, index, virtqueue_get_vring_size(vq)); in vp_active_vq()
192 vp_modern_queue_address(mdev, index, virtqueue_get_desc_addr(vq), in vp_active_vq()
193 virtqueue_get_avail_addr(vq), in vp_active_vq()
194 virtqueue_get_used_addr(vq)); in vp_active_vq()
205 static int vp_modern_disable_vq_and_reset(struct virtqueue *vq) in vp_modern_disable_vq_and_reset() argument
207 struct virtio_pci_device *vp_dev = to_vp_device(vq->vdev); in vp_modern_disable_vq_and_reset()
212 if (!virtio_has_feature(vq->vdev, VIRTIO_F_RING_RESET)) in vp_modern_disable_vq_and_reset()
215 vp_modern_set_queue_reset(mdev, vq->index); in vp_modern_disable_vq_and_reset()
217 info = vp_dev->vqs[vq->index]; in vp_modern_disable_vq_and_reset()
227 __virtqueue_break(vq); in vp_modern_disable_vq_and_reset()
239 vq->reset = true; in vp_modern_disable_vq_and_reset()
244 static int vp_modern_enable_vq_after_reset(struct virtqueue *vq) in vp_modern_enable_vq_after_reset() argument
246 struct virtio_pci_device *vp_dev = to_vp_device(vq->vdev); in vp_modern_enable_vq_after_reset()
252 if (!vq->reset) in vp_modern_enable_vq_after_reset()
255 index = vq->index; in vp_modern_enable_vq_after_reset()
264 err = vp_active_vq(vq, info->msix_vector); in vp_modern_enable_vq_after_reset()
268 if (vq->callback) { in vp_modern_enable_vq_after_reset()
277 __virtqueue_unbreak(vq); in vp_modern_enable_vq_after_reset()
281 vq->reset = false; in vp_modern_enable_vq_after_reset()
291 static bool vp_notify_with_data(struct virtqueue *vq) in vp_notify_with_data() argument
293 u32 data = vring_notification_data(vq); in vp_notify_with_data()
295 iowrite32(data, (void __iomem *)vq->priv); in vp_notify_with_data()
303 void (*callback)(struct virtqueue *vq), in setup_vq() argument
310 bool (*notify)(struct virtqueue *vq); in setup_vq()
311 struct virtqueue *vq; in setup_vq() local
331 vq = vring_create_virtqueue(index, num, in setup_vq()
335 if (!vq) in setup_vq()
338 vq->num_max = num; in setup_vq()
340 err = vp_active_vq(vq, msix_vec); in setup_vq()
344 vq->priv = (void __force *)vp_modern_map_vq_notify(mdev, index, NULL); in setup_vq()
345 if (!vq->priv) { in setup_vq()
350 return vq; in setup_vq()
353 vring_del_virtqueue(vq); in setup_vq()
364 struct virtqueue *vq; in vp_modern_find_vqs() local
373 list_for_each_entry(vq, &vdev->vqs, list) in vp_modern_find_vqs()
374 vp_modern_set_queue_enable(&vp_dev->mdev, vq->index, true); in vp_modern_find_vqs()
381 struct virtqueue *vq = info->vq; in del_vq() local
382 struct virtio_pci_device *vp_dev = to_vp_device(vq->vdev); in del_vq()
386 vp_modern_queue_vector(mdev, vq->index, in del_vq()
390 pci_iounmap(mdev->pci_dev, (void __force __iomem *)vq->priv); in del_vq()
392 vring_del_virtqueue(vq); in del_vq()