Home
last modified time | relevance | path

Searched refs:virtqueue (Results 1 – 13 of 13) sorted by relevance

/spdk/lib/vhost/
H A Drte_vhost_user.c66 vhost_log_req_desc(struct spdk_vhost_session *vsession, struct spdk_vhost_virtqueue *virtqueue, in vhost_log_req_desc() argument
77 rc = vhost_vq_get_desc(vsession, virtqueue, req_id, &desc, &desc_table, &desc_table_size); in vhost_log_req_desc()
97 struct spdk_vhost_virtqueue *virtqueue, in vhost_log_used_vring_elem() argument
106 if (spdk_unlikely(virtqueue->packed.packed_ring)) { in vhost_log_used_vring_elem()
111 len = sizeof(virtqueue->vring.used->ring[idx]); in vhost_log_used_vring_elem()
114 rte_vhost_log_used_vring(vsession->vid, virtqueue->vring_idx, offset, len); in vhost_log_used_vring_elem()
119 struct spdk_vhost_virtqueue *virtqueue) in vhost_log_used_vring_idx() argument
129 len = sizeof(virtqueue->vring.used->idx); in vhost_log_used_vring_idx()
130 vq_idx = virtqueue - vsession->virtqueue; in vhost_log_used_vring_idx()
139 vhost_vq_avail_ring_get(struct spdk_vhost_virtqueue * virtqueue,uint16_t * reqs,uint16_t reqs_len) vhost_vq_avail_ring_get() argument
222 vhost_vq_get_desc(struct spdk_vhost_session * vsession,struct spdk_vhost_virtqueue * virtqueue,uint16_t req_idx,struct vring_desc ** desc,struct vring_desc ** desc_table,uint32_t * desc_table_size) vhost_vq_get_desc() argument
268 vhost_vq_get_desc_packed(struct spdk_vhost_session * vsession,struct spdk_vhost_virtqueue * virtqueue,uint16_t req_idx,struct vring_packed_desc ** desc,struct vring_packed_desc ** desc_table,uint32_t * desc_table_size) vhost_vq_get_desc_packed() argument
324 vhost_vq_used_signal(struct spdk_vhost_session * vsession,struct spdk_vhost_virtqueue * virtqueue) global() argument
351 session_vq_io_stats_update(struct spdk_vhost_session * vsession,struct spdk_vhost_virtqueue * virtqueue,uint64_t now) global() argument
372 check_session_vq_io_stats(struct spdk_vhost_session * vsession,struct spdk_vhost_virtqueue * virtqueue,uint64_t now) global() argument
401 vhost_session_vq_used_signal(struct spdk_vhost_virtqueue * virtqueue) global() argument
444 vhost_vq_used_ring_enqueue(struct spdk_vhost_session * vsession,struct spdk_vhost_virtqueue * virtqueue,uint16_t id,uint32_t len) global() argument
486 vhost_vq_packed_ring_enqueue(struct spdk_vhost_session * vsession,struct spdk_vhost_virtqueue * virtqueue,uint16_t num_descs,uint16_t buffer_id,uint32_t length,uint16_t inflight_head) global() argument
553 vhost_vq_packed_ring_is_avail(struct spdk_vhost_virtqueue * virtqueue) global() argument
[all...]
H A Dvhost_internal.h111 /* Associated vhost_virtqueue in the virtio device's virtqueue list */
168 struct spdk_vhost_virtqueue virtqueue[SPDK_VHOST_MAX_VQUEUES];
284 * Get a virtio split descriptor at given index in given virtqueue.
289 * \param vq virtqueue
294 * default virtqueue descriptor table or per-chain indirect
305 * Get a virtio packed descriptor at given index in given virtqueue.
310 * \param vq virtqueue
321 struct spdk_vhost_virtqueue *virtqueue,
333 * \param vq virtqueue
342 * \param vq virtqueue
169 struct spdk_vhost_virtqueue virtqueue[SPDK_VHOST_MAX_VQUEUES]; global() member
[all...]
H A Dvhost_scsi.c285 vq = &vsession->virtqueue[VIRTIO_SCSI_EVENTQ]; in eventq_enqueue()
353 notification to the virtqueue's "used" ring. in vhost_scsi_task_cpl()
756 SPDK_ERRLOG("%s: request idx '%"PRIu16"' exceeds virtqueue size (%"PRIu16").\n", in submit_inflight_desc()
787 SPDK_ERRLOG("%s: request idx '%"PRIu16"' exceeds virtqueue size (%"PRIu16").\n", in process_vq()
810 if (vsession->virtqueue[VIRTIO_SCSI_EVENTQ].vring.desc) { in vdev_mgmt_worker()
811 vhost_vq_used_signal(vsession, &vsession->virtqueue[VIRTIO_SCSI_EVENTQ]); in vdev_mgmt_worker()
814 if (vsession->virtqueue[VIRTIO_SCSI_CONTROLQ].vring.desc) { in vdev_mgmt_worker()
815 rc = process_vq(svsession, &vsession->virtqueue[VIRTIO_SCSI_CONTROLQ]); in vdev_mgmt_worker()
816 vhost_vq_used_signal(vsession, &vsession->virtqueue[VIRTIO_SCSI_CONTROLQ]); in vdev_mgmt_worker()
831 rc = process_vq(svsession, &vsession->virtqueue[q_id in vdev_worker()
[all...]
H A Dvhost_blk.c843 SPDK_ERRLOG("%s: request idx '%"PRIu16"' exceeds virtqueue size (%"PRIu16").\n", in process_packed_inflight_blk_task()
880 SPDK_ERRLOG("%s: request idx '%"PRIu16"' exceeds virtqueue size (%"PRIu16").\n", in submit_inflight_desc()
952 rc += _vdev_vq_worker(&vsession->virtqueue[q_idx]); in _vdev_vq_worker()
1062 _no_bdev_vdev_vq_worker(&vsession->virtqueue[q_idx]); in _no_bdev_vdev_vq_worker()
1077 vq = &vsession->virtqueue[i]; in _no_bdev_vdev_vq_worker()
1129 vq = &vsession->virtqueue[i]; in vhost_blk_vq_register_interrupt()
1280 vq = &vsession->virtqueue[i]; in vhost_session_bdev_resize_cb()
1303 vq = &vsession->virtqueue[qid]; in _vhost_user_session_bdev_remove_cb()
1311 SPDK_ERRLOG("%s: virtqueue %"PRIu16" is too big. (size = %"PRIu32", max = %"PRIu32")\n", in _vhost_user_session_bdev_remove_cb()
1319 SPDK_ERRLOG("%s: failed to allocate %"PRIu32" tasks for virtqueue
[all...]
/spdk/include/spdk_internal/
H A Dvirtio.h39 struct virtqueue **vqs;
93 int (*setup_queue)(struct virtio_dev *hw, struct virtqueue *vq);
94 void (*del_queue)(struct virtio_dev *hw, struct virtqueue *vq);
95 void (*notify_queue)(struct virtio_dev *hw, struct virtqueue *vq);
106 struct virtqueue { struct
166 uint16_t virtio_recv_pkts(struct virtqueue *vq, void **io, uint32_t *len, uint16_t io_cnt); argument
187 int virtqueue_req_start(struct virtqueue *vq, void *cookie, int iovcnt);
195 void virtqueue_req_flush(struct virtqueue *vq);
205 void virtqueue_req_abort(struct virtqueue *vq);
218 void virtqueue_req_add_iovs(struct virtqueue *vq, struct iovec *iovs, uint16_t iovcnt,
/spdk/lib/virtio/
H A Dvirtio.c35 virtio_init_vring(struct virtqueue *vq) in virtio_init_vring()
74 struct virtqueue *vq; in virtio_init_queue()
140 struct virtqueue *vq; in virtio_free_queues()
175 dev->vqs = calloc(1, sizeof(struct virtqueue *) * max_queues); in virtio_alloc_queues()
301 vq_ring_free_chain(struct virtqueue *vq, uint16_t desc_idx) in vq_ring_free_chain()
335 virtqueue_dequeue_burst_rx(struct virtqueue *vq, void **rx_pkts, in virtqueue_dequeue_burst_rx()
369 finish_req(struct virtqueue *vq) in finish_req()
394 virtqueue_req_start(struct virtqueue *vq, void *cookie, int iovcnt) in virtqueue_req_start()
416 virtqueue_req_flush(struct virtqueue *vq) in virtqueue_req_flush()
451 virtqueue_req_abort(struct virtqueue *vq) in virtqueue_req_abort()
[all …]
H A Dvirtio_vfio_user.c222 virtio_vfio_user_setup_queue(struct virtio_dev *vdev, struct virtqueue *vq) in virtio_vfio_user_setup_queue()
343 virtio_vfio_user_del_queue(struct virtio_dev *vdev, struct virtqueue *vq) in virtio_vfio_user_del_queue()
371 virtio_vfio_user_notify_queue(struct virtio_dev *vdev, struct virtqueue *vq) in virtio_vfio_user_notify_queue()
H A Dvirtio_pci.c197 check_vq_phys_addr_ok(struct virtqueue *vq) in check_vq_phys_addr_ok()
404 modern_setup_queue(struct virtio_dev *dev, struct virtqueue *vq) in modern_setup_queue()
473 modern_del_queue(struct virtio_dev *dev, struct virtqueue *vq) in modern_del_queue()
494 modern_notify_queue(struct virtio_dev *dev, struct virtqueue *vq) in modern_notify_queue()
H A Dvirtio_vhost_user.c488 /* Of all per virtqueue MSGs, make sure VHOST_SET_VRING_CALL come in virtio_user_create_queue()
489 * firstly because vhost depends on this msg to allocate virtqueue in virtio_user_create_queue()
541 /* Of all per virtqueue MSGs, make sure VHOST_USER_SET_VRING_KICK comes in virtio_user_kick_queue()
862 virtio_user_setup_queue(struct virtio_dev *vdev, struct virtqueue *vq) in virtio_user_setup_queue()
937 virtio_user_del_queue(struct virtio_dev *vdev, struct virtqueue *vq) in virtio_user_del_queue()
959 virtio_user_notify_queue(struct virtio_dev *vdev, struct virtqueue *vq) in virtio_user_notify_queue()
/spdk/doc/
H A Dvhost_processing.md34 It uses the same virtqueue layout as Virtio to allow Vhost devices to be mapped
50 > plane needed to establish virtqueue sharing with a user space process on the
107 starts sending virtqueue data, which consists of:
109 - unique virtqueue id
168 Legacy Virtio implementations used the name vring alongside virtqueue, and the
184 descriptor for proper virtqueue. There are multiple interrupt coalescing
/spdk/module/bdev/virtio/
H A Dbdev_virtio_scsi.c151 struct virtqueue *vq;
180 virtio_scsi_dev_send_eventq_io(struct virtqueue *vq, struct virtio_scsi_eventq_io *io) in virtio_scsi_dev_send_eventq_io()
201 struct virtqueue *eventq; in virtio_scsi_dev_init()
489 struct virtqueue *vq = virtio_channel->vq; in bdev_virtio_send_io()
927 bdev_virtio_send_tmf_io(struct virtqueue *ctrlq, struct spdk_bdev_io *bdev_io) in bdev_virtio_send_tmf_io()
949 struct virtqueue *eventq = vdev->vqs[VIRTIO_SCSI_EVENTQ]; in bdev_virtio_mgmt_poll()
950 struct virtqueue *ctrlq = vdev->vqs[VIRTIO_SCSI_CONTROLQ]; in bdev_virtio_mgmt_poll()
988 struct virtqueue *vq; in bdev_virtio_scsi_ch_create_cb()
1013 struct virtqueue *vq = ch->vq; in bdev_virtio_scsi_ch_destroy_cb()
1058 struct virtqueue *v in send_scan_io()
[all...]
H A Dbdev_virtio_blk.c47 struct virtqueue *vq;
116 struct virtqueue *vq = virtio_channel->vq; in bdev_virtio_blk_send_io()
347 struct virtqueue *vq; in bdev_virtio_blk_ch_create_cb()
371 struct virtqueue *vq = ch->vq; in bdev_virtio_blk_ch_destroy_cb()
/spdk/test/app/fuzz/vhost_fuzz/
H A Dvhost_fuzz.c787 submit_virtio_req_rsp_pair(struct fuzz_vhost_dev_ctx *dev_ctx, struct virtqueue *vq, in submit_virtio_req_rsp_pair()
817 dev_submit_requests(struct fuzz_vhost_dev_ctx *dev_ctx, struct virtqueue *vq, in dev_submit_requests()
890 struct virtqueue *vq; in poll_dev()