_vq 18 drivers/virtio/virtio_ring.c #define BAD_RING(_vq, fmt, args...) \ _vq 20 drivers/virtio/virtio_ring.c dev_err(&(_vq)->vq.vdev->dev, \ _vq 21 drivers/virtio/virtio_ring.c "%s:"fmt, (_vq)->vq.name, ##args); \ _vq 25 drivers/virtio/virtio_ring.c #define START_USE(_vq) \ _vq 27 drivers/virtio/virtio_ring.c if ((_vq)->in_use) \ _vq 29 drivers/virtio/virtio_ring.c (_vq)->vq.name, (_vq)->in_use); \ _vq 30 drivers/virtio/virtio_ring.c (_vq)->in_use = __LINE__; \ _vq 32 drivers/virtio/virtio_ring.c #define END_USE(_vq) \ _vq 33 drivers/virtio/virtio_ring.c do { BUG_ON(!(_vq)->in_use); (_vq)->in_use = 0; } while(0) _vq 34 drivers/virtio/virtio_ring.c #define LAST_ADD_TIME_UPDATE(_vq) \ _vq 39 drivers/virtio/virtio_ring.c if ((_vq)->last_add_time_valid) \ _vq 41 drivers/virtio/virtio_ring.c (_vq)->last_add_time)) > 100); \ _vq 42 drivers/virtio/virtio_ring.c (_vq)->last_add_time = now; \ _vq 43 drivers/virtio/virtio_ring.c (_vq)->last_add_time_valid = true; \ _vq 45 drivers/virtio/virtio_ring.c #define LAST_ADD_TIME_CHECK(_vq) \ _vq 47 drivers/virtio/virtio_ring.c if ((_vq)->last_add_time_valid) { \ _vq 49 drivers/virtio/virtio_ring.c (_vq)->last_add_time)) > 100); \ _vq 52 drivers/virtio/virtio_ring.c #define LAST_ADD_TIME_INVALID(_vq) \ _vq 53 drivers/virtio/virtio_ring.c ((_vq)->last_add_time_valid = false) _vq 55 drivers/virtio/virtio_ring.c #define BAD_RING(_vq, fmt, args...) \ _vq 57 drivers/virtio/virtio_ring.c dev_err(&_vq->vq.vdev->dev, \ _vq 58 drivers/virtio/virtio_ring.c "%s:"fmt, (_vq)->vq.name, ##args); \ _vq 59 drivers/virtio/virtio_ring.c (_vq)->broken = true; \ _vq 201 drivers/virtio/virtio_ring.c #define to_vvq(_vq) container_of(_vq, struct vring_virtqueue, vq) _vq 203 drivers/virtio/virtio_ring.c static inline bool virtqueue_use_indirect(struct virtqueue *_vq, _vq 206 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 392 drivers/virtio/virtio_ring.c static struct vring_desc *alloc_indirect_split(struct virtqueue *_vq, _vq 411 drivers/virtio/virtio_ring.c desc[i].next = cpu_to_virtio16(_vq->vdev, i + 1); _vq 415 drivers/virtio/virtio_ring.c static inline int virtqueue_add_split(struct virtqueue *_vq, _vq 424 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 447 drivers/virtio/virtio_ring.c if (virtqueue_use_indirect(_vq, total_sg)) _vq 448 drivers/virtio/virtio_ring.c desc = alloc_indirect_split(_vq, total_sg, gfp); _vq 487 drivers/virtio/virtio_ring.c desc[i].flags = cpu_to_virtio16(_vq->vdev, VRING_DESC_F_NEXT); _vq 488 drivers/virtio/virtio_ring.c desc[i].addr = cpu_to_virtio64(_vq->vdev, addr); _vq 489 drivers/virtio/virtio_ring.c desc[i].len = cpu_to_virtio32(_vq->vdev, sg->length); _vq 491 drivers/virtio/virtio_ring.c i = virtio16_to_cpu(_vq->vdev, desc[i].next); _vq 500 drivers/virtio/virtio_ring.c desc[i].flags = cpu_to_virtio16(_vq->vdev, VRING_DESC_F_NEXT | VRING_DESC_F_WRITE); _vq 501 drivers/virtio/virtio_ring.c desc[i].addr = cpu_to_virtio64(_vq->vdev, addr); _vq 502 drivers/virtio/virtio_ring.c desc[i].len = cpu_to_virtio32(_vq->vdev, sg->length); _vq 504 drivers/virtio/virtio_ring.c i = virtio16_to_cpu(_vq->vdev, desc[i].next); _vq 508 drivers/virtio/virtio_ring.c desc[prev].flags &= cpu_to_virtio16(_vq->vdev, ~VRING_DESC_F_NEXT); _vq 518 drivers/virtio/virtio_ring.c vq->split.vring.desc[head].flags = cpu_to_virtio16(_vq->vdev, _vq 520 drivers/virtio/virtio_ring.c vq->split.vring.desc[head].addr = cpu_to_virtio64(_vq->vdev, _vq 523 drivers/virtio/virtio_ring.c vq->split.vring.desc[head].len = cpu_to_virtio32(_vq->vdev, _vq 532 drivers/virtio/virtio_ring.c vq->free_head = virtio16_to_cpu(_vq->vdev, _vq 547 drivers/virtio/virtio_ring.c vq->split.vring.avail->ring[avail] = cpu_to_virtio16(_vq->vdev, head); _vq 553 drivers/virtio/virtio_ring.c vq->split.vring.avail->idx = cpu_to_virtio16(_vq->vdev, _vq 563 drivers/virtio/virtio_ring.c virtqueue_kick(_vq); _vq 579 drivers/virtio/virtio_ring.c i = virtio16_to_cpu(_vq->vdev, desc[i].next); _vq 589 drivers/virtio/virtio_ring.c static bool virtqueue_kick_prepare_split(struct virtqueue *_vq) _vq 591 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 608 drivers/virtio/virtio_ring.c needs_kick = vring_need_event(virtio16_to_cpu(_vq->vdev, _vq 613 drivers/virtio/virtio_ring.c cpu_to_virtio16(_vq->vdev, _vq 678 drivers/virtio/virtio_ring.c static void *virtqueue_get_buf_ctx_split(struct virtqueue *_vq, _vq 682 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 704 drivers/virtio/virtio_ring.c i = virtio32_to_cpu(_vq->vdev, _vq 706 drivers/virtio/virtio_ring.c *len = virtio32_to_cpu(_vq->vdev, _vq 728 drivers/virtio/virtio_ring.c cpu_to_virtio16(_vq->vdev, vq->last_used_idx)); _vq 736 drivers/virtio/virtio_ring.c static void virtqueue_disable_cb_split(struct virtqueue *_vq) _vq 738 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 744 drivers/virtio/virtio_ring.c cpu_to_virtio16(_vq->vdev, _vq 749 drivers/virtio/virtio_ring.c static unsigned virtqueue_enable_cb_prepare_split(struct virtqueue *_vq) _vq 751 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 765 drivers/virtio/virtio_ring.c cpu_to_virtio16(_vq->vdev, _vq 768 drivers/virtio/virtio_ring.c vring_used_event(&vq->split.vring) = cpu_to_virtio16(_vq->vdev, _vq 774 drivers/virtio/virtio_ring.c static bool virtqueue_poll_split(struct virtqueue *_vq, unsigned last_used_idx) _vq 776 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 778 drivers/virtio/virtio_ring.c return (u16)last_used_idx != virtio16_to_cpu(_vq->vdev, _vq 782 drivers/virtio/virtio_ring.c static bool virtqueue_enable_cb_delayed_split(struct virtqueue *_vq) _vq 784 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 798 drivers/virtio/virtio_ring.c cpu_to_virtio16(_vq->vdev, _vq 806 drivers/virtio/virtio_ring.c cpu_to_virtio16(_vq->vdev, vq->last_used_idx + bufs)); _vq 808 drivers/virtio/virtio_ring.c if (unlikely((u16)(virtio16_to_cpu(_vq->vdev, vq->split.vring.used->idx) _vq 818 drivers/virtio/virtio_ring.c static void *virtqueue_detach_unused_buf_split(struct virtqueue *_vq) _vq 820 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 833 drivers/virtio/virtio_ring.c vq->split.vring.avail->idx = cpu_to_virtio16(_vq->vdev, _vq 1091 drivers/virtio/virtio_ring.c static inline int virtqueue_add_packed(struct virtqueue *_vq, _vq 1100 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 1121 drivers/virtio/virtio_ring.c if (virtqueue_use_indirect(_vq, total_sg)) _vq 1232 drivers/virtio/virtio_ring.c static bool virtqueue_kick_prepare_packed(struct virtqueue *_vq) _vq 1234 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 1346 drivers/virtio/virtio_ring.c static void *virtqueue_get_buf_ctx_packed(struct virtqueue *_vq, _vq 1350 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 1411 drivers/virtio/virtio_ring.c static void virtqueue_disable_cb_packed(struct virtqueue *_vq) _vq 1413 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 1422 drivers/virtio/virtio_ring.c static unsigned virtqueue_enable_cb_prepare_packed(struct virtqueue *_vq) _vq 1424 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 1458 drivers/virtio/virtio_ring.c static bool virtqueue_poll_packed(struct virtqueue *_vq, u16 off_wrap) _vq 1460 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 1470 drivers/virtio/virtio_ring.c static bool virtqueue_enable_cb_delayed_packed(struct virtqueue *_vq) _vq 1472 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 1529 drivers/virtio/virtio_ring.c static void *virtqueue_detach_unused_buf_packed(struct virtqueue *_vq) _vq 1531 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 1693 drivers/virtio/virtio_ring.c static inline int virtqueue_add(struct virtqueue *_vq, _vq 1702 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 1704 drivers/virtio/virtio_ring.c return vq->packed_ring ? virtqueue_add_packed(_vq, sgs, total_sg, _vq 1706 drivers/virtio/virtio_ring.c virtqueue_add_split(_vq, sgs, total_sg, _vq 1724 drivers/virtio/virtio_ring.c int virtqueue_add_sgs(struct virtqueue *_vq, _vq 1740 drivers/virtio/virtio_ring.c return virtqueue_add(_vq, sgs, total_sg, out_sgs, in_sgs, _vq 1824 drivers/virtio/virtio_ring.c bool virtqueue_kick_prepare(struct virtqueue *_vq) _vq 1826 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 1828 drivers/virtio/virtio_ring.c return vq->packed_ring ? virtqueue_kick_prepare_packed(_vq) : _vq 1829 drivers/virtio/virtio_ring.c virtqueue_kick_prepare_split(_vq); _vq 1841 drivers/virtio/virtio_ring.c bool virtqueue_notify(struct virtqueue *_vq) _vq 1843 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 1849 drivers/virtio/virtio_ring.c if (!vq->notify(_vq)) { _vq 1894 drivers/virtio/virtio_ring.c void *virtqueue_get_buf_ctx(struct virtqueue *_vq, unsigned int *len, _vq 1897 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 1899 drivers/virtio/virtio_ring.c return vq->packed_ring ? virtqueue_get_buf_ctx_packed(_vq, len, ctx) : _vq 1900 drivers/virtio/virtio_ring.c virtqueue_get_buf_ctx_split(_vq, len, ctx); _vq 1904 drivers/virtio/virtio_ring.c void *virtqueue_get_buf(struct virtqueue *_vq, unsigned int *len) _vq 1906 drivers/virtio/virtio_ring.c return virtqueue_get_buf_ctx(_vq, len, NULL); _vq 1918 drivers/virtio/virtio_ring.c void virtqueue_disable_cb(struct virtqueue *_vq) _vq 1920 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 1923 drivers/virtio/virtio_ring.c virtqueue_disable_cb_packed(_vq); _vq 1925 drivers/virtio/virtio_ring.c virtqueue_disable_cb_split(_vq); _vq 1941 drivers/virtio/virtio_ring.c unsigned virtqueue_enable_cb_prepare(struct virtqueue *_vq) _vq 1943 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 1945 drivers/virtio/virtio_ring.c return vq->packed_ring ? virtqueue_enable_cb_prepare_packed(_vq) : _vq 1946 drivers/virtio/virtio_ring.c virtqueue_enable_cb_prepare_split(_vq); _vq 1959 drivers/virtio/virtio_ring.c bool virtqueue_poll(struct virtqueue *_vq, unsigned last_used_idx) _vq 1961 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 1964 drivers/virtio/virtio_ring.c return vq->packed_ring ? virtqueue_poll_packed(_vq, last_used_idx) : _vq 1965 drivers/virtio/virtio_ring.c virtqueue_poll_split(_vq, last_used_idx); _vq 1980 drivers/virtio/virtio_ring.c bool virtqueue_enable_cb(struct virtqueue *_vq) _vq 1982 drivers/virtio/virtio_ring.c unsigned last_used_idx = virtqueue_enable_cb_prepare(_vq); _vq 1984 drivers/virtio/virtio_ring.c return !virtqueue_poll(_vq, last_used_idx); _vq 2001 drivers/virtio/virtio_ring.c bool virtqueue_enable_cb_delayed(struct virtqueue *_vq) _vq 2003 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 2005 drivers/virtio/virtio_ring.c return vq->packed_ring ? virtqueue_enable_cb_delayed_packed(_vq) : _vq 2006 drivers/virtio/virtio_ring.c virtqueue_enable_cb_delayed_split(_vq); _vq 2018 drivers/virtio/virtio_ring.c void *virtqueue_detach_unused_buf(struct virtqueue *_vq) _vq 2020 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 2022 drivers/virtio/virtio_ring.c return vq->packed_ring ? virtqueue_detach_unused_buf_packed(_vq) : _vq 2023 drivers/virtio/virtio_ring.c virtqueue_detach_unused_buf_split(_vq); _vq 2032 drivers/virtio/virtio_ring.c irqreturn_t vring_interrupt(int irq, void *_vq) _vq 2034 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 2178 drivers/virtio/virtio_ring.c void vring_del_virtqueue(struct virtqueue *_vq) _vq 2180 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 2210 drivers/virtio/virtio_ring.c list_del(&_vq->list); _vq 2249 drivers/virtio/virtio_ring.c unsigned int virtqueue_get_vring_size(struct virtqueue *_vq) _vq 2252 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 2258 drivers/virtio/virtio_ring.c bool virtqueue_is_broken(struct virtqueue *_vq) _vq 2260 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 2272 drivers/virtio/virtio_ring.c struct virtqueue *_vq; _vq 2274 drivers/virtio/virtio_ring.c list_for_each_entry(_vq, &dev->vqs, list) { _vq 2275 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 2281 drivers/virtio/virtio_ring.c dma_addr_t virtqueue_get_desc_addr(struct virtqueue *_vq) _vq 2283 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 2294 drivers/virtio/virtio_ring.c dma_addr_t virtqueue_get_avail_addr(struct virtqueue *_vq) _vq 2296 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 2308 drivers/virtio/virtio_ring.c dma_addr_t virtqueue_get_used_addr(struct virtqueue *_vq) _vq 2310 drivers/virtio/virtio_ring.c struct vring_virtqueue *vq = to_vvq(_vq); _vq 114 include/linux/virtio_ring.h irqreturn_t vring_interrupt(int irq, void *_vq);