| /devicemodel/hw/pci/virtio/ |
| A D | virtio.c | 106 vq->viothrd.iothread_run = vq->notify; in virtio_set_iothread() 111 vq->viothrd.iomvt.arg = &vq->viothrd; in virtio_set_iothread() 113 vq->viothrd.iomvt.fd = vq->viothrd.kick_fd; in virtio_set_iothread() 115 if (!iothread_add(vq->viothrd.ioctx, vq->viothrd.kick_fd, &vq->viothrd.iomvt)) in virtio_set_iothread() 181 (*vq->notify)(DEV_STRUCT(base), vq); in virtio_poll_timer() 277 for (vq = base->queues, i = 0; i < nvq; vq++, i++) { in virtio_reset_dev() 750 if (!vq || !vq->used) in vq_endchains() 767 vq->save_used = new_idx = vq->used->idx; in vq_endchains() 1129 (*vq->notify)(DEV_STRUCT(base), vq); in virtio_pci_legacy_write() 1737 (*vq->notify)(DEV_STRUCT(base), vq); in virtio_notify_cfg_write() [all …]
|
| A D | vhost.c | 182 struct vhost_vq *vq; in vhost_vq_register_eventfd() local 225 struct vhost_vq *vq; in vhost_vq_init() local 231 if (!vq) in vhost_vq_init() 246 vq->idx = idx; in vhost_vq_init() 247 vq->dev = vdev; in vhost_vq_init() 251 close(vq->kick_fd); in vhost_vq_init() 253 vq->kick_fd = -1; in vhost_vq_init() 254 vq->call_fd = -1; in vhost_vq_init() 262 if (!vq) in vhost_vq_deinit() 267 vq->call_fd = -1; in vhost_vq_deinit() [all …]
|
| A D | virtio_rnd.c | 54 struct virtio_vq_info vq; member 161 j = rnd->vq.msix_idx; in virtio_rnd_k_set_status() 168 rnd->vq.qsize, in virtio_rnd_k_set_status() 169 rnd->vq.pfn, in virtio_rnd_k_set_status() 170 rnd->vq.msix_idx, in virtio_rnd_k_set_status() 304 struct virtio_vq_info *vq = &rnd->vq; in virtio_rnd_get_entropy() local 318 while (!vq_has_descs(vq)) in virtio_rnd_get_entropy() 331 vq_retchain(vq); in virtio_rnd_get_entropy() 332 vq_endchains(vq, 0); in virtio_rnd_get_entropy() 345 vq_endchains(vq, 1); in virtio_rnd_get_entropy() [all …]
|
| A D | virtio_block.c | 212 vq_endchains(vq, !vq_has_descs(vq)); in virtio_blk_done() 219 if (idx < vq->qsize) { in virtio_blk_abort() 220 vq_relchain(vq, idx, 1); in virtio_blk_abort() 221 vq_endchains(vq, 0); in virtio_blk_abort() 237 qidx = vq - blk->vqs; in virtio_blk_proc() 238 idx = vq->qsize; in virtio_blk_proc() 251 virtio_blk_abort(vq, idx); in virtio_blk_proc() 258 virtio_blk_abort(vq, idx); in virtio_blk_proc() 266 virtio_blk_abort(vq, idx); in virtio_blk_proc() 276 virtio_blk_abort(vq, idx); in virtio_blk_proc() [all …]
|
| A D | virtio_audio.c | 53 struct virtio_vq_info vq[VIRTIO_AUDIO_VQ_NUM]; member 247 if (virt_audio->vq[i].msix_idx in virtio_audio_k_set_status() 249 j = virt_audio->vq[i].msix_idx; in virtio_audio_k_set_status() 257 virt_audio->vq[i].qsize, in virtio_audio_k_set_status() 258 virt_audio->vq[i].pfn, in virtio_audio_k_set_status() 259 virt_audio->vq[i].msix_idx, in virtio_audio_k_set_status() 320 virt_audio->vq, in virtio_audio_init() 334 virt_audio->vq[0].qsize = VIRTIO_AUDIO_RINGSZ; in virtio_audio_init() 335 virt_audio->vq[1].qsize = VIRTIO_AUDIO_RINGSZ; in virtio_audio_init() 336 virt_audio->vq[2].qsize = VIRTIO_AUDIO_RINGSZ; in virtio_audio_init() [all …]
|
| A D | virtio_net.c | 407 struct virtio_vq_info *vq; in virtio_net_tap_rx() local 439 if (!vq_has_descs(vq)) { in virtio_net_tap_rx() 447 vq_endchains(vq, 1); in virtio_net_tap_rx() 476 vq_retchain(vq); in virtio_net_tap_rx() 477 vq_endchains(vq, 0); in virtio_net_tap_rx() 498 } while (vq_has_descs(vq)); in virtio_net_tap_rx() 501 vq_endchains(vq, 1); in virtio_net_tap_rx() 527 if (vq->used != NULL) { in virtio_net_ping_rxq() 562 vq_relchain(vq, idx, tlen); in virtio_net_proctx() 573 if (!vq_has_descs(vq)) in virtio_net_ping_txq() [all …]
|
| A D | virtio_console.c | 222 uint16_t num = vq->num; in virtio_console_vq_to_port() 357 struct virtio_vq_info *vq; in virtio_console_control_send() local 364 if (!vq_has_descs(vq)) in virtio_console_control_send() 379 vq_endchains(vq, 1); in virtio_console_control_send() 405 vq_relchain(vq, idx, 0); in virtio_console_notify_tx() 421 if (vq_has_descs(vq)) { in virtio_console_notify_rx() 477 if (!vq_has_descs(vq)) { in virtio_console_backend_read() 479 vq_endchains(vq, 1); in virtio_console_backend_read() 493 vq_retchain(vq); in virtio_console_backend_read() 494 vq_endchains(vq, 0); in virtio_console_backend_read() [all …]
|
| A D | virtio_hyper_dmabuf.c | 55 struct virtio_vq_info vq[HYPER_DMABUF_VQ_NUM]; member 194 virtio_hyper_dmabuf_no_notify(void *base, struct virtio_vq_info *vq) in virtio_hyper_dmabuf_no_notify() argument 231 if (hyper_dmabuf->vq[i].msix_idx != in virtio_hyper_dmabuf_set_status() 233 j = hyper_dmabuf->vq[i].msix_idx; in virtio_hyper_dmabuf_set_status() 240 hyper_dmabuf->vq[i].qsize, in virtio_hyper_dmabuf_set_status() 241 hyper_dmabuf->vq[i].pfn, in virtio_hyper_dmabuf_set_status() 242 hyper_dmabuf->vq[i].msix_idx, in virtio_hyper_dmabuf_set_status() 302 hyper_dmabuf->vq, in virtio_hyper_dmabuf_init() 316 hyper_dmabuf->vq[0].qsize = HYPER_DMABUF_RINGSZ; in virtio_hyper_dmabuf_init() 317 hyper_dmabuf->vq[1].qsize = HYPER_DMABUF_RINGSZ; in virtio_hyper_dmabuf_init()
|
| A D | virtio_ipu.c | 53 struct virtio_vq_info vq[VIRTIO_IPU_VQ_NUM]; member 211 virtio_ipu_no_notify(void *base, struct virtio_vq_info *vq) in virtio_ipu_no_notify() argument 252 if (ipu->vq[i].msix_idx != in virtio_ipu_set_status() 254 j = ipu->vq[i].msix_idx; in virtio_ipu_set_status() 262 ipu->vq[i].qsize, in virtio_ipu_set_status() 263 ipu->vq[i].pfn, in virtio_ipu_set_status() 264 ipu->vq[i].msix_idx, in virtio_ipu_set_status() 322 ipu->vq, in virtio_ipu_init() 337 ipu->vq[0].qsize = VIRTIO_IPU_RINGSZ; in virtio_ipu_init() 338 ipu->vq[1].qsize = VIRTIO_IPU_RINGSZ; in virtio_ipu_init()
|
| A D | virtio_input.c | 251 while (vq_has_descs(vq)) { in virtio_input_notify_status_vq() 252 n = vq_getchain(vq, &idx, &iov, 1, NULL); in virtio_input_notify_status_vq() 284 vq_relchain(vq, idx, sizeof(event)); /* Release the chain */ in virtio_input_notify_status_vq() 286 vq_endchains(vq, 1); /* Generate interrupt if appropriate. */ in virtio_input_notify_status_vq() 293 struct virtio_vq_info *vq; in virtio_input_send_event() local 317 vq = &vi->queues[VIRTIO_INPUT_EVENT_QUEUE]; in virtio_input_send_event() 319 if (!vq_has_descs(vq)) { in virtio_input_send_event() 321 vq_retchain(vq); in virtio_input_send_event() 326 n = vq_getchain(vq, &idx, &iov, 1, NULL); in virtio_input_send_event() 348 vq_relchain(vq, vi->event_queue[i].idx, in virtio_input_send_event() [all …]
|
| A D | virtio_gpio.c | 278 if (idx < vq->qsize) { in virtio_gpio_abort() 279 vq_relchain(vq, idx, 1); in virtio_gpio_abort() 280 vq_endchains(vq, 0); in virtio_gpio_abort() 687 idx = vq->qsize; in virtio_gpio_notify() 689 if (vq_has_descs(vq)) { in virtio_gpio_notify() 912 vq = &gpio->queues[2]; in gpio_irq_deliver_intr() 913 idx = vq->qsize; in gpio_irq_deliver_intr() 932 vq_endchains(vq, 1); in gpio_irq_deliver_intr() 1235 idx = vq->qsize; in virtio_irq_notify() 1237 if (vq_has_descs(vq)) { in virtio_irq_notify() [all …]
|
| A D | virtio_i2c.c | 131 struct virtio_vq_info vq; member 539 struct virtio_vq_info *vq = &vi2c->vq; in virtio_i2c_proc_thread() local 552 while (!vq_has_descs(vq) && !vi2c->closing) in virtio_i2c_proc_thread() 562 n = vq_getchain(vq, &idx, iov, 3, flags); in virtio_i2c_proc_thread() 605 vq_relchain(vq, idx, 1); in virtio_i2c_proc_thread() 609 } while (vq_has_descs(vq)); in virtio_i2c_proc_thread() 610 vq_endchains(vq, 0); in virtio_i2c_proc_thread() 770 virtio_i2c_notify(void *vdev, struct virtio_vq_info *vq) in virtio_i2c_notify() argument 774 if (!vq_has_descs(vq)) in virtio_i2c_notify() 826 virtio_linkup(&vi2c->base, &virtio_i2c_ops, vi2c, dev, &vi2c->vq, BACKEND_VBSU); in virtio_i2c_init() [all …]
|
| A D | virtio_mei.c | 1522 vq_relchain(vq, idx, 0); in vmei_proc_tx() 1603 vq_relchain(vq, idx, tlen); in vmei_proc_tx() 1621 vq_relchain(vq, idx, tlen); in vmei_proc_tx() 1631 if (!vq_has_descs(vq)) in vmei_notify_tx() 1640 vmei_proc_tx(vmei, vq); in vmei_notify_tx() 1643 vq_endchains(vq, 1); in vmei_notify_tx() 1830 vq_relchain(vq, idx, 0); in vmei_proc_vclient_rx() 1865 vq_relchain(vq, idx, len); in vmei_proc_vclient_rx() 1948 vq_has_descs(vq)) in vmei_rx_thread() 1964 vq_endchains(vq, !vq_has_descs(vq)); in vmei_rx_thread() [all …]
|
| A D | virtio_rpmb.c | 74 struct virtio_vq_info vq; member 623 virtio_rpmb_notify(void *base, struct virtio_vq_info *vq) in virtio_rpmb_notify() argument 632 while (vq_has_descs(vq)) { in virtio_rpmb_notify() 633 n = vq_getchain(vq, &idx, iov, VIRTIO_RPMB_MAXSEGS, NULL); in virtio_rpmb_notify() 651 vq_relchain(vq, idx, tlen); in virtio_rpmb_notify() 653 vq_endchains(vq, 1); /* Generate interrupt if appropriate. */ in virtio_rpmb_notify() 725 virtio_linkup(&rpmb->base, &virtio_rpmb_ops, rpmb, dev, &rpmb->vq, BACKEND_VBSU); in virtio_rpmb_init() 728 rpmb->vq.qsize = VIRTIO_RPMB_RINGSZ; in virtio_rpmb_init()
|
| A D | virtio_gpu.c | 366 struct virtio_vq_info vq[VIRTIO_GPU_QNUM]; member 386 struct virtio_vq_info *vq; member 1411 struct virtio_vq_info *vq; in virtio_gpu_ctrl_bh() local 1418 vq = (struct virtio_vq_info *)data; in virtio_gpu_ctrl_bh() 1419 vdev = (struct virtio_gpu *)(vq->base); in virtio_gpu_ctrl_bh() 1423 while (vq_has_descs(vq)) { in virtio_gpu_ctrl_bh() 1545 struct virtio_vq_info *vq; in virtio_gpu_cursor_bh() local 1552 vq = (struct virtio_vq_info *)data; in virtio_gpu_cursor_bh() 1553 vdev = (struct virtio_gpu *)(vq->base); in virtio_gpu_cursor_bh() 1557 while (vq_has_descs(vq)) { in virtio_gpu_cursor_bh() [all …]
|
| A D | virtio_coreu.c | 255 virtio_coreu_notify(void *vdev, struct virtio_vq_info *vq) in virtio_coreu_notify() argument 260 if (!vq_has_descs(vq)) in virtio_coreu_notify()
|
| A D | virtio_hdcp.c | 382 virtio_hdcp_notify(void *vdev, struct virtio_vq_info *vq) in virtio_hdcp_notify() argument 387 if (!vq_has_descs(vq)) in virtio_hdcp_notify()
|
| A D | vhost_vsock.c | 229 vhost_vsock_handle_output(void *vdev, struct virtio_vq_info *vq) { in vhost_vsock_handle_output() argument
|
| /devicemodel/include/ |
| A D | virtio.h | 467 #define VQ_AVAIL_EVENT_IDX(vq) \ argument 468 (*(volatile uint16_t *)&(vq)->used->ring[(vq)->qsize]) 469 #define VQ_USED_EVENT_IDX(vq) \ argument 470 ((vq)->avail->ring[(vq)->qsize]) 480 vq_ring_ready(struct virtio_vq_info *vq) in vq_ring_ready() argument 482 return ((vq->flags & VQ_ALLOC) == VQ_ALLOC); in vq_ring_ready() 495 vq_has_descs(struct virtio_vq_info *vq) in vq_has_descs() argument 498 if (vq_ring_ready(vq) && vq->last_avail != vq->avail->idx) { in vq_has_descs() 499 if ((uint16_t)((u_int)vq->avail->idx - vq->last_avail) > vq->qsize) in vq_has_descs() 520 pci_generate_msix(vb->dev, vq->msix_idx); in vq_interrupt() [all …]
|