Home
last modified time | relevance | path

Searched refs:vq (Results 1 – 25 of 88) sorted by relevance

1234

/linux/drivers/virtio/
H A Dvirtio_ring.c22 dev_err(&(_vq)->vq.vdev->dev, \
23 "%s:"fmt, (_vq)->vq.name, ##args); \
31 (_vq)->vq.name, (_vq)->in_use); \
59 dev_err(&_vq->vq.vdev->dev, \
60 "%s:"fmt, (_vq)->vq.name, ##args); \
63 #define START_USE(vq) argument
64 #define END_USE(vq) argument
65 #define LAST_ADD_TIME_UPDATE(vq) argument
66 #define LAST_ADD_TIME_CHECK(vq) argument
67 #define LAST_ADD_TIME_INVALID(vq) argument
[all …]
H A Dvirtio_vdpa.c93 static bool virtio_vdpa_notify(struct virtqueue *vq) in virtio_vdpa_notify() argument
95 struct vdpa_device *vdpa = vd_get_vdpa(vq->vdev); in virtio_vdpa_notify()
98 ops->kick_vq(vdpa, vq->index); in virtio_vdpa_notify()
103 static bool virtio_vdpa_notify_with_data(struct virtqueue *vq) in virtio_vdpa_notify_with_data() argument
105 struct vdpa_device *vdpa = vd_get_vdpa(vq->vdev); in virtio_vdpa_notify_with_data()
107 u32 data = vring_notification_data(vq); in virtio_vdpa_notify_with_data()
125 struct virtqueue *vq = private; in virtio_vdpa_virtqueue_cb() local
127 return vring_interrupt(0, vq); in virtio_vdpa_virtqueue_cb()
132 void (*callback)(struct virtqueue *vq), in virtio_vdpa_setup_vq() argument
137 bool (*notify)(struct virtqueue *vq) = virtio_vdpa_notify; in virtio_vdpa_setup_vq()
[all …]
H A Dvirtio_pci_modern.c47 void vp_modern_avq_done(struct virtqueue *vq) in vp_modern_avq_done() argument
49 struct virtio_pci_device *vp_dev = to_vp_device(vq->vdev); in vp_modern_avq_done()
58 virtqueue_disable_cb(vq); in vp_modern_avq_done()
59 while ((cmd = virtqueue_get_buf(vq, &len))) { in vp_modern_avq_done()
73 } while (!virtqueue_enable_cb(vq)); in vp_modern_avq_done()
84 struct virtqueue *vq; in virtqueue_exec_admin_cmd() local
88 vq = admin_vq->info->vq; in virtqueue_exec_admin_cmd()
89 if (!vq) in virtqueue_exec_admin_cmd()
100 if (virtqueue_is_broken(vq)) in virtqueue_exec_admin_cmd()
104 ret = virtqueue_add_sgs(vq, sgs, out_num, in_num, cmd, GFP_KERNEL); in virtqueue_exec_admin_cmd()
[all …]
H A Dvirtio_pci_legacy.c113 void (*callback)(struct virtqueue *vq), in setup_vq() argument
118 struct virtqueue *vq; in setup_vq() local
131 vq = vring_create_virtqueue(index, num, in setup_vq()
135 if (!vq) in setup_vq()
138 vq->num_max = num; in setup_vq()
140 q_pfn = virtqueue_get_desc_addr(vq) >> VIRTIO_PCI_QUEUE_ADDR_SHIFT; in setup_vq()
152 vq->priv = (void __force *)vp_dev->ldev.ioaddr + VIRTIO_PCI_QUEUE_NOTIFY; in setup_vq()
162 return vq; in setup_vq()
167 vring_del_virtqueue(vq); in setup_vq()
173 struct virtqueue *vq = info->vq; in del_vq() local
[all …]
H A Dvirtio_rtc_driver.c36 struct virtqueue *vq; member
134 static int viortc_feed_vq(struct viortc_dev *viortc, struct virtqueue *vq, in viortc_feed_vq() argument
141 return virtqueue_add_inbuf(vq, &sg, 1, data, GFP_ATOMIC); in viortc_feed_vq()
227 static void viortc_do_cb(struct virtqueue *vq, in viortc_do_cb() argument
229 struct virtqueue *vq, in viortc_do_cb()
233 struct viortc_dev *viortc = vq->vdev->priv; in viortc_do_cb()
240 viortc_vq = &viortc->vqs[vq->index]; in viortc_do_cb()
246 virtqueue_disable_cb(vq); in viortc_do_cb()
250 token = virtqueue_get_buf(vq, &len); in viortc_do_cb()
252 if (virtqueue_enable_cb(vq)) { in viortc_do_cb()
[all …]
H A Dvirtio_mmio.c264 static bool vm_notify(struct virtqueue *vq) in vm_notify() argument
266 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vq->vdev); in vm_notify()
270 writel(vq->index, vm_dev->base + VIRTIO_MMIO_QUEUE_NOTIFY); in vm_notify()
274 static bool vm_notify_with_data(struct virtqueue *vq) in vm_notify_with_data() argument
276 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vq->vdev); in vm_notify_with_data()
277 u32 data = vring_notification_data(vq); in vm_notify_with_data()
288 struct virtqueue *vq; in vm_interrupt() local
302 virtio_device_for_each_vq(&vm_dev->vdev, vq) in vm_interrupt()
303 ret |= vring_interrupt(irq, vq); in vm_interrupt()
311 static void vm_del_vq(struct virtqueue *vq) in vm_del_vq() argument
[all …]
/linux/drivers/vhost/
H A Dvhost.c57 #define vhost_used_event(vq) ((__virtio16 __user *)&vq->avail->ring[vq->num]) argument
58 #define vhost_avail_event(vq) ((__virtio16 __user *)&vq->used->ring[vq->num]) argument
61 static void vhost_disable_cross_endian(struct vhost_virtqueue *vq) in vhost_disable_cross_endian() argument
63 vq->user_be = !virtio_legacy_is_little_endian(); in vhost_disable_cross_endian()
66 static void vhost_enable_cross_endian_big(struct vhost_virtqueue *vq) in vhost_enable_cross_endian_big() argument
68 vq->user_be = true; in vhost_enable_cross_endian_big()
71 static void vhost_enable_cross_endian_little(struct vhost_virtqueue *vq) in vhost_enable_cross_endian_little() argument
73 vq->user_be = false; in vhost_enable_cross_endian_little()
76 static long vhost_set_vring_endian(struct vhost_virtqueue *vq, int __user *argp) in vhost_set_vring_endian() argument
80 if (vq->private_data) in vhost_set_vring_endian()
[all …]
H A Dnet.c101 struct vhost_virtqueue *vq; member
113 struct vhost_virtqueue vq; member
231 static void vhost_net_enable_zcopy(int vq) in vhost_net_enable_zcopy() argument
233 vhost_net_zcopy_mask |= 0x1 << vq; in vhost_net_enable_zcopy()
237 vhost_net_ubuf_alloc(struct vhost_virtqueue *vq, bool zcopy) in vhost_net_ubuf_alloc() argument
248 ubufs->vq = vq; in vhost_net_ubuf_alloc()
366 struct vhost_virtqueue *vq) in vhost_zerocopy_signal_used() argument
369 container_of(vq, struct vhost_net_virtqueue, vq); in vhost_zerocopy_signal_used()
374 if (vq->heads[i].len == VHOST_DMA_FAILED_LEN) in vhost_zerocopy_signal_used()
376 if (VHOST_DMA_IS_DONE(vq->heads[i].len)) { in vhost_zerocopy_signal_used()
[all …]
H A Dtest.c51 struct vhost_virtqueue *vq = &n->vqs[VHOST_TEST_VQ]; in handle_vq() local
57 mutex_lock(&vq->mutex); in handle_vq()
58 private = vhost_vq_get_backend(vq); in handle_vq()
60 mutex_unlock(&vq->mutex); in handle_vq()
64 vhost_disable_notify(&n->dev, vq); in handle_vq()
67 head = vhost_get_vq_desc(vq, vq->iov, in handle_vq()
68 ARRAY_SIZE(vq->iov), in handle_vq()
75 if (head == vq->num) { in handle_vq()
76 if (unlikely(vhost_enable_notify(&n->dev, vq))) { in handle_vq()
77 vhost_disable_notify(&n->dev, vq); in handle_vq()
[all …]
H A Dvsock.c94 struct vhost_virtqueue *vq) in vhost_transport_do_send_pkt() argument
101 mutex_lock(&vq->mutex); in vhost_transport_do_send_pkt()
103 if (!vhost_vq_get_backend(vq)) in vhost_transport_do_send_pkt()
106 if (!vq_meta_prefetch(vq)) in vhost_transport_do_send_pkt()
110 vhost_disable_notify(&vsock->dev, vq); in vhost_transport_do_send_pkt()
126 vhost_enable_notify(&vsock->dev, vq); in vhost_transport_do_send_pkt()
130 head = vhost_get_vq_desc(vq, vq->iov, ARRAY_SIZE(vq->iov), in vhost_transport_do_send_pkt()
137 if (head == vq->num) { in vhost_transport_do_send_pkt()
142 if (unlikely(vhost_enable_notify(&vsock->dev, vq))) { in vhost_transport_do_send_pkt()
143 vhost_disable_notify(&vsock->dev, vq); in vhost_transport_do_send_pkt()
[all …]
H A Dscsi.c217 struct vhost_virtqueue vq; member
309 struct vhost_virtqueue *vq; in vhost_scsi_init_inflight() local
313 vq = &vs->vqs[i].vq; in vhost_scsi_init_inflight()
315 mutex_lock(&vq->mutex); in vhost_scsi_init_inflight()
328 mutex_unlock(&vq->mutex); in vhost_scsi_init_inflight()
333 vhost_scsi_get_inflight(struct vhost_virtqueue *vq) in vhost_scsi_get_inflight() argument
338 svq = container_of(vq, struct vhost_scsi_virtqueue, vq); in vhost_scsi_get_inflight()
379 static int vhost_scsi_copy_cmd_log(struct vhost_virtqueue *vq, in vhost_scsi_copy_cmd_log() argument
385 cmd->tvc_log = kmalloc_array(vq->dev->iov_limit, in vhost_scsi_copy_cmd_log()
390 vq_err(vq, "Failed to alloc tvc_log\n"); in vhost_scsi_copy_cmd_log()
[all …]
H A Dvhost.h63 struct vhost_virtqueue *vq; member
68 struct vhost_virtqueue *vq);
174 struct vhost_virtqueue *vq; member
209 bool vhost_exceeds_weight(struct vhost_virtqueue *vq, int pkts, int total_len);
226 bool vhost_vq_access_ok(struct vhost_virtqueue *vq);
235 int vhost_get_vq_desc_n(struct vhost_virtqueue *vq,
244 bool vhost_vq_work_queue(struct vhost_virtqueue *vq, struct vhost_work *work);
245 bool vhost_vq_has_work(struct vhost_virtqueue *vq);
246 bool vhost_vq_is_setup(struct vhost_virtqueue *vq);
261 int vhost_log_write(struct vhost_virtqueue *vq, struct vhost_log *log,
[all …]
/linux/arch/arm64/include/uapi/asm/
H A Dsve_context.h42 #define __sve_vl_from_vq(vq) ((vq) * __SVE_VQ_BYTES) argument
44 #define __SVE_ZREG_SIZE(vq) ((__u32)(vq) * __SVE_VQ_BYTES) argument
45 #define __SVE_PREG_SIZE(vq) ((__u32)(vq) * (__SVE_VQ_BYTES / 8)) argument
46 #define __SVE_FFR_SIZE(vq) __SVE_PREG_SIZE(vq) argument
49 #define __SVE_ZREG_OFFSET(vq, n) \ argument
50 (__SVE_ZREGS_OFFSET + __SVE_ZREG_SIZE(vq) * (n))
51 #define __SVE_ZREGS_SIZE(vq) \ argument
52 (__SVE_ZREG_OFFSET(vq, __SVE_NUM_ZREGS) - __SVE_ZREGS_OFFSET)
54 #define __SVE_PREGS_OFFSET(vq) \ argument
55 (__SVE_ZREGS_OFFSET + __SVE_ZREGS_SIZE(vq))
[all …]
/linux/tools/virtio/
H A Dvhost_net_test.c42 struct virtqueue *vq; member
138 static bool vq_notify(struct virtqueue *vq) in vq_notify() argument
140 struct vq_info *info = vq->priv; in vq_notify()
180 if (info->vq) in vq_reset()
181 vring_del_virtqueue(info->vq); in vq_reset()
185 info->vq = vring_new_virtqueue(info->idx, num, 4096, vdev, true, false, in vq_reset()
187 assert(info->vq); in vq_reset()
188 info->vq->priv = info; in vq_reset()
257 static void wait_for_interrupt(struct vq_info *vq) in wait_for_interrupt() argument
261 poll(&vq->fds, 1, 100); in wait_for_interrupt()
[all …]
H A Dvirtio_test.c35 struct virtqueue *vq; member
53 bool vq_notify(struct virtqueue *vq) in vq_notify() argument
55 struct vq_info *info = vq->priv; in vq_notify()
63 void vq_callback(struct virtqueue *vq) in vq_callback() argument
100 if (info->vq) in vq_reset()
101 vring_del_virtqueue(info->vq); in vq_reset()
105 info->vq = vring_new_virtqueue(info->idx, num, 4096, vdev, true, false, in vq_reset()
107 assert(info->vq); in vq_reset()
108 info->vq->priv = info; in vq_reset()
169 static void run_test(struct vdev_info *dev, struct vq_info *vq, in run_test() argument
[all …]
/linux/include/linux/
H A Dvirtio.h36 void (*callback)(struct virtqueue *vq);
55 int virtqueue_add_outbuf(struct virtqueue *vq,
60 int virtqueue_add_inbuf(struct virtqueue *vq,
65 int virtqueue_add_inbuf_ctx(struct virtqueue *vq,
71 int virtqueue_add_inbuf_premapped(struct virtqueue *vq,
77 int virtqueue_add_outbuf_premapped(struct virtqueue *vq,
82 int virtqueue_add_sgs(struct virtqueue *vq,
89 struct device *virtqueue_dma_dev(struct virtqueue *vq);
91 bool virtqueue_kick(struct virtqueue *vq);
93 bool virtqueue_kick_prepare(struct virtqueue *vq);
[all …]
/linux/drivers/vdpa/vdpa_sim/
H A Dvdpa_sim_blk.c110 struct vdpasim_virtqueue *vq) in vdpasim_blk_handle_req() argument
123 ret = vringh_getdesc_iotlb(&vq->vring, &vq->out_iov, &vq->in_iov, in vdpasim_blk_handle_req()
124 &vq->head, GFP_ATOMIC); in vdpasim_blk_handle_req()
128 if (vq->out_iov.used < 1 || vq->in_iov.used < 1) { in vdpasim_blk_handle_req()
130 vq->out_iov.used, vq->in_iov.used); in vdpasim_blk_handle_req()
134 if (vq->in_iov.iov[vq->in_iov.used - 1].iov_len < 1) { in vdpasim_blk_handle_req()
142 to_push = vringh_kiov_length(&vq->in_iov) - 1; in vdpasim_blk_handle_req()
144 to_pull = vringh_kiov_length(&vq->out_iov); in vdpasim_blk_handle_req()
146 bytes = vringh_iov_pull_iotlb(&vq->vring, &vq->out_iov, &hdr, in vdpasim_blk_handle_req()
179 bytes = vringh_iov_push_iotlb(&vq->vring, &vq->in_iov, in vdpasim_blk_handle_req()
[all …]
/linux/drivers/vdpa/vdpa_user/
H A Dvduse_dev.c254 struct vduse_virtqueue *vq, in vduse_dev_get_vq_state_packed() argument
261 msg.req.vq_state.index = vq->index; in vduse_dev_get_vq_state_packed()
280 struct vduse_virtqueue *vq, in vduse_dev_get_vq_state_split() argument
287 msg.req.vq_state.index = vq->index; in vduse_dev_get_vq_state_split()
451 struct vduse_virtqueue *vq = dev->vqs[i]; in vduse_dev_reset() local
453 vq->ready = false; in vduse_dev_reset()
454 vq->desc_addr = 0; in vduse_dev_reset()
455 vq->driver_addr = 0; in vduse_dev_reset()
456 vq->device_addr = 0; in vduse_dev_reset()
457 vq->num = 0; in vduse_dev_reset()
[all …]
/linux/tools/testing/selftests/arm64/fp/
H A Dfp-ptrace.c404 int ret, vq; in check_ptrace_values_sve() local
410 vq = __sve_vq_from_vl(config->sve_vl_in); in check_ptrace_values_sve()
412 iov.iov_len = SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, SVE_PT_REGS_SVE); in check_ptrace_values_sve()
448 if (sve->size != SVE_PT_SIZE(vq, sve->flags)) { in check_ptrace_values_sve()
450 sve->size, SVE_PT_SIZE(vq, sve->flags)); in check_ptrace_values_sve()
458 iov.iov_base + SVE_PT_SVE_ZREG_OFFSET(vq, 0), in check_ptrace_values_sve()
459 z_in, SVE_PT_SVE_ZREGS_SIZE(vq))) in check_ptrace_values_sve()
463 iov.iov_base + SVE_PT_SVE_PREG_OFFSET(vq, 0), in check_ptrace_values_sve()
464 p_in, SVE_PT_SVE_PREGS_SIZE(vq))) in check_ptrace_values_sve()
468 iov.iov_base + SVE_PT_SVE_FFR_OFFSET(vq), in check_ptrace_values_sve()
[all …]
H A Dsve-ptrace.c459 unsigned int vq = sve_vq_from_vl(vl); in ptrace_set_sve_get_sve_data() local
464 data_size = SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, SVE_PT_REGS_SVE); in ptrace_set_sve_get_sve_data()
480 fill_buf(write_buf + SVE_PT_SVE_ZREG_OFFSET(vq, i), in ptrace_set_sve_get_sve_data()
481 SVE_PT_SVE_ZREG_SIZE(vq)); in ptrace_set_sve_get_sve_data()
484 fill_buf(write_buf + SVE_PT_SVE_PREG_OFFSET(vq, i), in ptrace_set_sve_get_sve_data()
485 SVE_PT_SVE_PREG_SIZE(vq)); in ptrace_set_sve_get_sve_data()
487 fill_buf(write_buf + SVE_PT_SVE_FPSR_OFFSET(vq), SVE_PT_SVE_FPSR_SIZE); in ptrace_set_sve_get_sve_data()
488 fill_buf(write_buf + SVE_PT_SVE_FPCR_OFFSET(vq), SVE_PT_SVE_FPCR_SIZE); in ptrace_set_sve_get_sve_data()
516 if (memcmp(write_buf + SVE_PT_SVE_ZREG_OFFSET(vq, i), in ptrace_set_sve_get_sve_data()
517 read_buf + SVE_PT_SVE_ZREG_OFFSET(vq, i), in ptrace_set_sve_get_sve_data()
[all …]
H A Dsve-probe-vls.c20 unsigned int vq; in main() local
34 for (vq = SVE_VQ_MAX; vq > 0; --vq) { in main()
35 vl = prctl(PR_SVE_SET_VL, vq * 16); in main()
48 vq = sve_vq_from_vl(vl); in main()
53 vqs[nvqs++] = vq; in main()
/linux/arch/um/drivers/
H A Dvirtio_uml.c382 struct virtqueue *vq; in vu_req_read_message() local
404 virtio_device_for_each_vq((&vu_dev->vdev), vq) { in vu_req_read_message()
405 if (vq->index == msg.msg.payload.vring_state.index) { in vu_req_read_message()
407 vu_dev->vq_irq_vq_map |= BIT_ULL(vq->index); in vu_req_read_message()
444 struct virtqueue *vq; in vu_req_interrupt() local
446 virtio_device_for_each_vq((&vu_dev->vdev), vq) { in vu_req_interrupt()
447 if (vu_dev->vq_irq_vq_map & BIT_ULL(vq->index)) in vu_req_interrupt()
448 vring_interrupt(0 /* ignored */, vq); in vu_req_interrupt()
790 static bool vu_notify(struct virtqueue *vq) in vu_notify() argument
792 struct virtio_uml_vq_info *info = vq->priv; in vu_notify()
[all …]
/linux/tools/testing/selftests/arm64/signal/
H A Dsve_helpers.c18 int vq, vl; in sve_fill_vls() local
25 for (vq = SVE_VQ_MAX; vq > 0; --vq) { in sve_fill_vls()
26 vl = prctl(pr_set_vl, vq * 16); in sve_fill_vls()
41 if (vq < sve_vq_from_vl(vl)) in sve_fill_vls()
45 vq = sve_vq_from_vl(vl); in sve_fill_vls()
/linux/drivers/scsi/
H A Dvirtio_scsi.c72 struct virtqueue *vq; member
182 struct virtqueue *vq = virtscsi_vq->vq; in virtscsi_vq_done() local
186 virtqueue_disable_cb(vq); in virtscsi_vq_done()
187 while ((buf = virtqueue_get_buf(vq, &len)) != NULL) in virtscsi_vq_done()
190 } while (!virtqueue_enable_cb(vq)); in virtscsi_vq_done()
194 static void virtscsi_req_done(struct virtqueue *vq) in virtscsi_req_done() argument
196 struct Scsi_Host *sh = virtio_scsi_host(vq->vdev); in virtscsi_req_done()
198 int index = vq->index - VIRTIO_SCSI_VQ_BASE; in virtscsi_req_done()
222 static void virtscsi_ctrl_done(struct virtqueue *vq) in virtscsi_ctrl_done() argument
224 struct Scsi_Host *sh = virtio_scsi_host(vq->vdev); in virtscsi_ctrl_done()
[all …]
/linux/drivers/i2c/busses/
H A Di2c-virtio.c31 struct virtqueue *vq; member
48 static void virtio_i2c_msg_done(struct virtqueue *vq) in virtio_i2c_msg_done() argument
53 while ((req = virtqueue_get_buf(vq, &len))) in virtio_i2c_msg_done()
57 static int virtio_i2c_prepare_reqs(struct virtqueue *vq, in virtio_i2c_prepare_reqs() argument
100 if (virtqueue_add_sgs(vq, sgs, outcnt, incnt, &reqs[i], GFP_KERNEL)) { in virtio_i2c_prepare_reqs()
109 static int virtio_i2c_complete_reqs(struct virtqueue *vq, in virtio_i2c_complete_reqs() argument
138 struct virtqueue *vq = vi->vq; in virtio_i2c_xfer() local
146 count = virtio_i2c_prepare_reqs(vq, reqs, msgs, num); in virtio_i2c_xfer()
158 virtqueue_kick(vq); in virtio_i2c_xfer()
160 count = virtio_i2c_complete_reqs(vq, reqs, msgs, count); in virtio_i2c_xfer()
[all …]

1234