Lines Matching defs:vq

47 vduse_inject_irq(struct virtio_net *dev, struct vhost_virtqueue *vq)
49 return ioctl(dev->vduse_dev_fd, VDUSE_VQ_INJECT_IRQ, &vq->index);
141 struct vhost_virtqueue *vq = dev->virtqueue[index];
142 struct vhost_vring_addr *ra = &vq->ring_addrs;
156 vq->last_avail_idx = vq->reconnect_log->last_avail_idx;
157 vq->last_used_idx = vq->reconnect_log->last_avail_idx;
159 vq->last_avail_idx = vq_info.split.avail_index;
160 vq->last_used_idx = vq_info.split.avail_index;
162 vq->size = vq_info.num;
163 vq->ready = true;
164 vq->enabled = vq_info.ready;
176 VHOST_CONFIG_LOG(dev->ifname, INFO, "\tavail_idx: %u", vq->last_avail_idx);
177 VHOST_CONFIG_LOG(dev->ifname, INFO, "\tused_idx: %u", vq->last_used_idx);
179 vq->kickfd = eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
180 if (vq->kickfd < 0) {
183 vq->kickfd = VIRTIO_INVALID_EVENTFD;
186 VHOST_CONFIG_LOG(dev->ifname, INFO, "\tkick fd: %d", vq->kickfd);
188 vq->shadow_used_split = rte_malloc_socket(NULL,
189 vq->size * sizeof(struct vring_used_elem),
191 vq->batch_copy_elems = rte_malloc_socket(NULL,
192 vq->size * sizeof(struct batch_copy_elem),
195 rte_rwlock_write_lock(&vq->access_lock);
196 vhost_user_iotlb_rd_lock(vq);
197 if (vring_translate(dev, vq))
201 if (vhost_enable_guest_notification(dev, vq, 0))
205 vhost_user_iotlb_rd_unlock(vq);
206 rte_rwlock_write_unlock(&vq->access_lock);
209 vq_efd.fd = vq->kickfd;
215 close(vq->kickfd);
216 vq->kickfd = VIRTIO_UNINITIALIZED_EVENTFD;
220 if (vq == dev->cvq) {
221 ret = fdset_add(vduse.fdset, vq->kickfd, vduse_control_queue_event, NULL, dev);
228 close(vq->kickfd);
229 vq->kickfd = VIRTIO_UNINITIALIZED_EVENTFD;
231 vhost_enable_guest_notification(dev, vq, 1);
239 struct vhost_virtqueue *vq = dev->virtqueue[index];
243 if (vq == dev->cvq && vq->kickfd >= 0)
244 fdset_del(vduse.fdset, vq->kickfd);
254 close(vq->kickfd);
255 vq->kickfd = VIRTIO_UNINITIALIZED_EVENTFD;
257 rte_rwlock_write_lock(&vq->access_lock);
258 vring_invalidate(dev, vq);
259 rte_rwlock_write_unlock(&vq->access_lock);
261 rte_free(vq->batch_copy_elems);
262 vq->batch_copy_elems = NULL;
264 rte_free(vq->shadow_used_split);
265 vq->shadow_used_split = NULL;
267 vq->enabled = false;
268 vq->ready = false;
269 vq->size = 0;
270 vq->last_used_idx = 0;
271 vq->last_avail_idx = 0;
325 struct vhost_virtqueue *vq = dev->virtqueue[i];
327 if (vq == dev->cvq)
331 dev->notify_ops->vring_state_changed(dev->vid, i, vq->enabled);
358 struct vhost_virtqueue *vq;
379 vq = dev->virtqueue[req.vq_state.index];
381 req.vq_state.index, vq->last_avail_idx);
382 resp.vq_state.split.avail_index = vq->last_avail_idx;
764 struct vhost_virtqueue *vq;
772 vq = dev->virtqueue[i];
773 vq->reconnect_log = &dev->reconnect_log->vring[i];