Home
last modified time | relevance | path

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

123

/linux/include/linux/
H A Dvirtio.h17 * struct virtqueue - a queue to register buffers for sending or receiving.
20 * @name: the name of this virtqueue (mainly for debugging)
22 * @priv: a pointer for the virtqueue implementation to use.
32 struct virtqueue { struct
34 void (*callback)(struct virtqueue *vq); argument
44 int virtqueue_add_outbuf(struct virtqueue *vq, argument
49 int virtqueue_add_inbuf(struct virtqueue *vq,
54 int virtqueue_add_inbuf_ctx(struct virtqueue *vq,
60 int virtqueue_add_inbuf_premapped(struct virtqueue *vq,
66 int virtqueue_add_outbuf_premapped(struct virtqueue *v
[all...]
H A Dvirtio_ring.h60 struct virtqueue;
64 * Creates a virtqueue and allocates the descriptor ring. If
69 struct virtqueue *vring_create_virtqueue(unsigned int index,
76 bool (*notify)(struct virtqueue *vq),
77 void (*callback)(struct virtqueue *vq),
81 * Creates a virtqueue and allocates the descriptor ring with per
82 * virtqueue DMA device.
84 struct virtqueue *vring_create_virtqueue_dma(unsigned int index,
91 bool (*notify)(struct virtqueue *vq),
92 void (*callback)(struct virtqueue *v
[all...]
H A Dvirtio_config.h19 typedef void vq_callback_t(struct virtqueue *);
22 * struct virtqueue_info - Info for a virtqueue passed to find_vqs().
23 * @name: virtqueue description. Used mainly for debugging, NULL for
24 * a virtqueue unused by the driver.
26 * NULL for a virtqueue that does not need a callback.
27 * @ctx: A flag to indicate to maintain an extra context per virtqueue.
70 * vqs_info: array of virtqueue info structures
73 * @synchronize_cbs: synchronize with the virtqueue callbacks (optional)
96 * @set_vq_affinity: set the affinity for a virtqueue (optional).
97 * @get_vq_affinity: get the affinity for a virtqueue (optiona
[all...]
/linux/tools/virtio/linux/
H A Dvirtio.h20 struct virtqueue { struct
22 void (*callback)(struct virtqueue *vq); argument
33 int virtqueue_add_sgs(struct virtqueue *vq, argument
40 int virtqueue_add_outbuf(struct virtqueue *vq,
45 int virtqueue_add_inbuf(struct virtqueue *vq,
50 bool virtqueue_kick(struct virtqueue *vq);
52 void *virtqueue_get_buf(struct virtqueue *vq, unsigned int *len);
54 void virtqueue_disable_cb(struct virtqueue *vq);
56 bool virtqueue_enable_cb(struct virtqueue *vq);
57 bool virtqueue_enable_cb_delayed(struct virtqueue *v
[all...]
H A Dvirtio_config.h9 int (*disable_vq_and_reset)(struct virtqueue *vq);
10 int (*enable_vq_after_reset)(struct virtqueue *vq);
/linux/drivers/virtio/
H A Dvirtio_ring.c163 struct virtqueue vq;
208 bool (*notify)(struct virtqueue *vq);
227 static void vring_free(struct virtqueue *_vq);
475 static struct vring_desc *alloc_indirect_split(struct virtqueue *_vq, in alloc_indirect_split()
486 * virtqueue. in alloc_indirect_split()
504 static inline unsigned int virtqueue_add_desc_split(struct virtqueue *vq, in virtqueue_add_desc_split()
529 static inline int virtqueue_add_split(struct virtqueue *_vq, in virtqueue_add_split()
716 static bool virtqueue_kick_prepare_split(struct virtqueue *_vq) in virtqueue_kick_prepare_split()
811 static void *virtqueue_get_buf_ctx_split(struct virtqueue *_vq, in virtqueue_get_buf_ctx_split()
869 static void virtqueue_disable_cb_split(struct virtqueue *_v
1134 __vring_new_virtqueue_split(unsigned int index,struct vring_virtqueue_split * vring_split,struct virtio_device * vdev,bool weak_barriers,bool context,bool (* notify)(struct virtqueue *),void (* callback)(struct virtqueue *),const char * name,struct device * dma_dev) __vring_new_virtqueue_split() argument
1135 __vring_new_virtqueue_split(unsigned int index,struct vring_virtqueue_split * vring_split,struct virtio_device * vdev,bool weak_barriers,bool context,bool (* notify)(struct virtqueue *),void (* callback)(struct virtqueue *),const char * name,struct device * dma_dev) __vring_new_virtqueue_split() argument
1195 vring_create_virtqueue_split(unsigned int index,unsigned int num,unsigned int vring_align,struct virtio_device * vdev,bool weak_barriers,bool may_reduce_num,bool context,bool (* notify)(struct virtqueue *),void (* callback)(struct virtqueue *),const char * name,struct device * dma_dev) vring_create_virtqueue_split() argument
1196 vring_create_virtqueue_split(unsigned int index,unsigned int num,unsigned int vring_align,struct virtio_device * vdev,bool weak_barriers,bool may_reduce_num,bool context,bool (* notify)(struct virtqueue *),void (* callback)(struct virtqueue *),const char * name,struct device * dma_dev) vring_create_virtqueue_split() argument
2112 __vring_new_virtqueue_packed(unsigned int index,struct vring_virtqueue_packed * vring_packed,struct virtio_device * vdev,bool weak_barriers,bool context,bool (* notify)(struct virtqueue *),void (* callback)(struct virtqueue *),const char * name,struct device * dma_dev) __vring_new_virtqueue_packed() argument
2113 __vring_new_virtqueue_packed(unsigned int index,struct vring_virtqueue_packed * vring_packed,struct virtio_device * vdev,bool weak_barriers,bool context,bool (* notify)(struct virtqueue *),void (* callback)(struct virtqueue *),const char * name,struct device * dma_dev) __vring_new_virtqueue_packed() argument
2173 vring_create_virtqueue_packed(unsigned int index,unsigned int num,unsigned int vring_align,struct virtio_device * vdev,bool weak_barriers,bool may_reduce_num,bool context,bool (* notify)(struct virtqueue *),void (* callback)(struct virtqueue *),const char * name,struct device * dma_dev) vring_create_virtqueue_packed() argument
2174 vring_create_virtqueue_packed(unsigned int index,unsigned int num,unsigned int vring_align,struct virtio_device * vdev,bool weak_barriers,bool may_reduce_num,bool context,bool (* notify)(struct virtqueue *),void (* callback)(struct virtqueue *),const char * name,struct device * dma_dev) vring_create_virtqueue_packed() argument
2733 vring_create_virtqueue(unsigned int index,unsigned int num,unsigned int vring_align,struct virtio_device * vdev,bool weak_barriers,bool may_reduce_num,bool context,bool (* notify)(struct virtqueue *),void (* callback)(struct virtqueue *),const char * name) vring_create_virtqueue() argument
2734 vring_create_virtqueue(unsigned int index,unsigned int num,unsigned int vring_align,struct virtio_device * vdev,bool weak_barriers,bool may_reduce_num,bool context,bool (* notify)(struct virtqueue *),void (* callback)(struct virtqueue *),const char * name) vring_create_virtqueue() argument
2757 vring_create_virtqueue_dma(unsigned int index,unsigned int num,unsigned int vring_align,struct virtio_device * vdev,bool weak_barriers,bool may_reduce_num,bool context,bool (* notify)(struct virtqueue *),void (* callback)(struct virtqueue *),const char * name,struct device * dma_dev) vring_create_virtqueue_dma() argument
2758 vring_create_virtqueue_dma(unsigned int index,unsigned int num,unsigned int vring_align,struct virtio_device * vdev,bool weak_barriers,bool may_reduce_num,bool context,bool (* notify)(struct virtqueue *),void (* callback)(struct virtqueue *),const char * name,struct device * dma_dev) vring_create_virtqueue_dma() argument
[all...]
H A Dvirtio_pci_common.h35 /* the actual virtqueue */
36 struct virtqueue *vq;
48 /* Protects virtqueue access. */
101 struct virtqueue *(*setup_vq)(struct virtio_pci_device *vp_dev,
104 void (*callback)(struct virtqueue *vq),
131 bool vp_notify(struct virtqueue *vq);
136 struct virtqueue *vqs[], struct virtqueue_info vqs_info[],
140 /* Setup the affinity for a virtqueue:
145 int vp_set_vq_affinity(struct virtqueue *vq, const struct cpumask *cpu_mask);
197 void vp_modern_avq_done(struct virtqueue *v
[all...]
H A Dvirtio_vdpa.c93 static bool virtio_vdpa_notify(struct virtqueue *vq) in virtio_vdpa_notify()
103 static bool virtio_vdpa_notify_with_data(struct virtqueue *vq) in virtio_vdpa_notify_with_data()
125 struct virtqueue *vq = private; in virtio_vdpa_virtqueue_cb()
130 static struct virtqueue *
132 void (*callback)(struct virtqueue *vq), in virtio_vdpa_setup_vq()
138 bool (*notify)(struct virtqueue *vq) = virtio_vdpa_notify; in virtio_vdpa_setup_vq()
140 struct virtqueue *vq; in virtio_vdpa_setup_vq()
142 /* Assume split virtqueue, switch to packed if necessary */ in virtio_vdpa_setup_vq()
198 /* Setup virtqueue callback */ in virtio_vdpa_setup_vq()
216 /* reset virtqueue stat in virtio_vdpa_setup_vq()
[all...]
H A Dvirtio_pci_common.c51 bool vp_notify(struct virtqueue *vq) in vp_notify()
206 static struct virtqueue *vp_setup_vq(struct virtio_device *vdev, unsigned int index, in vp_setup_vq()
207 void (*callback)(struct virtqueue *vq), in vp_setup_vq()
215 struct virtqueue *vq; in vp_setup_vq()
247 static void vp_del_vq(struct virtqueue *vq, struct virtio_pci_vq_info *info) in vp_del_vq()
271 struct virtqueue *vq, *n; in vp_del_vqs()
329 static struct virtqueue *
337 struct virtqueue *vq; in vp_find_one_vq_msix()
377 struct virtqueue *vqs[], in vp_find_vqs_msix()
386 struct virtqueue *v in vp_find_vqs_msix()
[all...]
H A Dvirtio_mmio.c264 static bool vm_notify(struct virtqueue *vq) in vm_notify()
274 static bool vm_notify_with_data(struct virtqueue *vq) in vm_notify_with_data()
288 struct virtqueue *vq; in vm_interrupt()
311 static void vm_del_vq(struct virtqueue *vq) in vm_del_vq()
331 struct virtqueue *vq, *n; in vm_del_vqs()
346 static struct virtqueue *vm_setup_vq(struct virtio_device *vdev, unsigned int index, in vm_setup_vq()
347 void (*callback)(struct virtqueue *vq), in vm_setup_vq()
351 bool (*notify)(struct virtqueue *vq); in vm_setup_vq()
352 struct virtqueue *vq; in vm_setup_vq()
447 struct virtqueue *vq in vm_find_vqs()
[all...]
H A Dvirtio_pci_legacy.c110 static struct virtqueue *setup_vq(struct virtio_pci_device *vp_dev, in setup_vq()
113 void (*callback)(struct virtqueue *vq), in setup_vq()
118 struct virtqueue *vq; in setup_vq()
173 struct virtqueue *vq = info->vq; in del_vq()
H A Dvirtio_rtc_driver.c23 /* virtqueue order */
31 * struct viortc_vq - virtqueue abstraction
32 * @vq: virtqueue
36 struct virtqueue *vq;
126 * @vq: notification virtqueue
134 static int viortc_feed_vq(struct viortc_dev *viortc, struct virtqueue *vq, in viortc_feed_vq()
152 * the virtqueue callback, and once in the thread waiting on the message (on
221 * viortc_do_cb() - generic virtqueue callback logic
222 * @vq: virtqueue
225 * Context: virtqueue callbac
[all...]
H A Dvirtio_pci_modern.c47 void vp_modern_avq_done(struct virtqueue *vq) in vp_modern_avq_done()
84 struct virtqueue *vq; in virtqueue_exec_admin_cmd()
352 struct virtqueue *vq; in vp_modern_avq_cleanup()
567 static int vp_active_vq(struct virtqueue *vq, u16 msix_vec) in vp_active_vq()
590 static int vp_modern_disable_vq_and_reset(struct virtqueue *vq) in vp_modern_disable_vq_and_reset()
629 static int vp_modern_enable_vq_after_reset(struct virtqueue *vq) in vp_modern_enable_vq_after_reset()
676 static bool vp_notify_with_data(struct virtqueue *vq) in vp_notify_with_data()
685 static struct virtqueue *setup_vq(struct virtio_pci_device *vp_dev, in setup_vq()
688 void (*callback)(struct virtqueue *vq), in setup_vq()
695 bool (*notify)(struct virtqueue *v in setup_vq()
[all...]
H A Dvirtio_balloon.c57 struct virtqueue *inflate_vq, *deflate_vq, *stats_vq, *free_page_vq;
120 struct virtqueue *reporting_vq;
176 static void balloon_ack(struct virtqueue *vq) in balloon_ack()
183 static void tell_host(struct virtio_balloon *vb, struct virtqueue *vq) in tell_host()
204 struct virtqueue *vq = vb->reporting_vq; in virtballoon_free_page_report()
427 * the stats queue operates in reverse. The driver initializes the virtqueue
430 * the virtqueue with a fresh stats buffer. Since stats collection can sleep,
434 static void stats_request(struct virtqueue *vq) in stats_request()
448 struct virtqueue *vq; in stats_handle_request()
582 struct virtqueue *vq in init_vqs()
[all...]
/linux/Documentation/driver-api/virtio/
H A Dwriting_virtio_drivers.rst24 virtqueue definitions in the device. A basic driver skeleton could look
34 struct virtqueue *vq;
37 static void virtio_dummy_recv_cb(struct virtqueue *vq)
57 /* the device has a single virtqueue */
121 virtqueue. virtio_device_ready() is used to enable the virtqueue and to
144 appropriate virtqueue using any of the virtqueue_add_inbuf(),
148 `scatterlists`, respectively. Then, once the virtqueue is set up, a call
168 read the data produced by the device (if the virtqueue was set up with
175 The virtqueue callback
[all...]
/linux/drivers/gpu/drm/virtio/
H A Dvirtgpu_trace.h12 TP_PROTO(struct virtqueue *vq, struct virtio_gpu_ctrl_hdr *hdr, u32 seqno),
43 TP_PROTO(struct virtqueue *vq, struct virtio_gpu_ctrl_hdr *hdr, u32 seqno),
48 TP_PROTO(struct virtqueue *vq, struct virtio_gpu_ctrl_hdr *hdr, u32 seqno),
/linux/drivers/i2c/busses/
H A Di2c-virtio.c26 * @vq: the virtio virtqueue for communication
31 struct virtqueue *vq;
48 static void virtio_i2c_msg_done(struct virtqueue *vq) in virtio_i2c_msg_done()
57 static int virtio_i2c_prepare_reqs(struct virtqueue *vq, in virtio_i2c_prepare_reqs()
109 static int virtio_i2c_complete_reqs(struct virtqueue *vq, in virtio_i2c_complete_reqs()
138 struct virtqueue *vq = vi->vq; in virtio_i2c_xfer()
154 * virtqueue will be left in undefined state in that case. We kick the in virtio_i2c_xfer()
155 * remote here to clear the virtqueue, so we can try another set of in virtio_i2c_xfer()
/linux/drivers/nvdimm/
H A Dvirtio_pmem.h36 struct virtqueue *req_vq;
42 /* List to store deferred work if virtqueue is full */
45 /* Synchronize virtqueue data */
53 void virtio_pmem_host_ack(struct virtqueue *vq);
/linux/Documentation/userspace-api/
H A Dvduse.rst28 2. Setup each virtqueue with ioctl(VDUSE_VQ_SETUP) on /dev/vduse/$NAME.
104 add per-virtqueue configuration such as the max size of virtqueue to the device.
140 - VDUSE_GET_VQ_STATE: Get the state for virtqueue, userspace should return
141 avail index for split virtqueue or the device/driver ring wrap counters and
142 the avail and used index for packed virtqueue.
157 1. Get the specified virtqueue's information with the VDUSE_VQ_GET_INFO ioctl,
230 5. Inject an interrupt for specific virtqueue with the VDUSE_INJECT_VQ_IRQ ioctl
/linux/drivers/bluetooth/
H A Dvirtio_bt.c24 struct virtqueue *vqs[VIRTBT_NUM_VQS];
31 struct virtqueue *vq = vbt->vqs[VIRTBT_VQ_RX]; in virtbt_add_inbuf()
77 struct virtqueue *vq = vbt->vqs[i]; in virtbt_close_vdev()
239 static void virtbt_tx_done(struct virtqueue *vq) in virtbt_tx_done()
248 static void virtbt_rx_done(struct virtqueue *vq) in virtbt_rx_done()
/linux/sound/virtio/
H A Dvirtio_pcm.h40 * @msg_last_enqueued: Index of the last I/O message added to the virtqueue.
41 * @msg_count: Number of pending I/O messages in the virtqueue.
105 void virtsnd_pcm_tx_notify_cb(struct virtqueue *vqueue);
107 void virtsnd_pcm_rx_notify_cb(struct virtqueue *vqueue);
/linux/drivers/char/
H A Dvirtio_console.c147 struct virtqueue *c_ivq, *c_ovq;
156 struct virtqueue **in_vqs, **out_vqs;
188 struct virtqueue *in_vq, *out_vq;
308 struct virtqueue *vq) in find_port_by_vq()
483 static int add_inbuf(struct virtqueue *vq, struct port_buffer *buf) in add_inbuf()
543 struct virtqueue *vq; in __send_control_msg()
600 struct virtqueue *out_vq; in __send_to_port()
1290 static int fill_queue(struct virtqueue *vq, spinlock_t *lock) in fill_queue()
1663 struct virtqueue *vq; in control_work_handler()
1689 static void flush_bufs(struct virtqueue *v
[all...]
/linux/drivers/s390/virtio/
H A Dvirtio_ccw.c158 struct virtqueue *vq;
232 static void drop_airq_indicator(struct virtqueue *vq, struct airq_info *info) in drop_airq_indicator()
302 static unsigned long *get_airq_indicator(struct virtqueue *vqs[], int nvqs, in get_airq_indicator()
440 static inline bool virtio_ccw_do_kvm_notify(struct virtqueue *vq, u32 data) in virtio_ccw_do_kvm_notify()
457 static bool virtio_ccw_kvm_notify(struct virtqueue *vq) in virtio_ccw_kvm_notify()
462 static bool virtio_ccw_kvm_notify_with_data(struct virtqueue *vq) in virtio_ccw_kvm_notify_with_data()
483 static void virtio_ccw_del_vq(struct virtqueue *vq, struct ccw1 *ccw) in virtio_ccw_del_vq()
532 struct virtqueue *vq, *n; in virtio_ccw_del_vqs()
548 static struct virtqueue *virtio_ccw_setup_vq(struct virtio_device *vdev, in virtio_ccw_setup_vq()
554 bool (*notify)(struct virtqueue *v in virtio_ccw_setup_vq()
[all...]
/linux/arch/um/drivers/
H A Dvirtio_uml.c381 struct virtqueue *vq; in vu_req_read_message()
443 struct virtqueue *vq; in vu_req_interrupt()
672 * see (depending on the direction of the virtqueue traffic.) in vhost_user_set_mem_table()
789 static bool vu_notify(struct virtqueue *vq) in vu_notify()
817 struct virtqueue *vq = opaque; in vu_interrupt()
870 static void vu_del_vq(struct virtqueue *vq) in vu_del_vq()
893 struct virtqueue *vq, *n; in vu_del_vqs()
908 struct virtqueue *vq) in vu_setup_vq_call_fd()
955 static struct virtqueue *vu_setup_vq(struct virtio_device *vdev, in vu_setup_vq()
962 struct virtqueue *v in vu_setup_vq()
[all...]
/linux/drivers/remoteproc/
H A Dremoteproc_virtio.c64 /* kick the remote processor, and let it know which virtqueue to poke at */
65 static bool rproc_virtio_notify(struct virtqueue *vq) in rproc_virtio_notify()
78 * rproc_vq_interrupt() - tell remoteproc that a virtqueue is interrupted
80 * @notifyid: index of the signalled virtqueue (unique per this @rproc)
83 * when the remote processor signals that a specific virtqueue has pending
86 * Return: IRQ_NONE if no message was found in the @notifyid virtqueue,
103 static struct virtqueue *rp_find_vq(struct virtio_device *vdev, in rp_find_vq()
105 void (*callback)(struct virtqueue *vq), in rp_find_vq()
114 struct virtqueue *vq; in rp_find_vq()
168 struct virtqueue *v in __rproc_virtio_del_vqs()
[all...]

123