• Home
  • Raw
  • Download

Lines Matching refs:_vq

32 #define BAD_RING(_vq, fmt, args...)				\  argument
34 dev_err(&(_vq)->vq.vdev->dev, \
35 "%s:"fmt, (_vq)->vq.name, ##args); \
39 #define START_USE(_vq) \ argument
41 if ((_vq)->in_use) \
43 (_vq)->vq.name, (_vq)->in_use); \
44 (_vq)->in_use = __LINE__; \
46 #define END_USE(_vq) \ argument
47 do { BUG_ON(!(_vq)->in_use); (_vq)->in_use = 0; } while(0)
49 #define BAD_RING(_vq, fmt, args...) \ argument
51 dev_err(&_vq->vq.vdev->dev, \
52 "%s:"fmt, (_vq)->vq.name, ##args); \
53 (_vq)->broken = true; \
112 #define to_vvq(_vq) container_of(_vq, struct vring_virtqueue, vq) argument
233 static struct vring_desc *alloc_indirect(struct virtqueue *_vq, in alloc_indirect() argument
251 desc[i].next = cpu_to_virtio16(_vq->vdev, i + 1); in alloc_indirect()
255 static inline int virtqueue_add(struct virtqueue *_vq, in virtqueue_add() argument
263 struct vring_virtqueue *vq = to_vvq(_vq); in virtqueue_add()
300 desc = alloc_indirect(_vq, total_sg, gfp); in virtqueue_add()
337 desc[i].flags = cpu_to_virtio16(_vq->vdev, VRING_DESC_F_NEXT); in virtqueue_add()
338 desc[i].addr = cpu_to_virtio64(_vq->vdev, addr); in virtqueue_add()
339 desc[i].len = cpu_to_virtio32(_vq->vdev, sg->length); in virtqueue_add()
341 i = virtio16_to_cpu(_vq->vdev, desc[i].next); in virtqueue_add()
350 desc[i].flags = cpu_to_virtio16(_vq->vdev, VRING_DESC_F_NEXT | VRING_DESC_F_WRITE); in virtqueue_add()
351 desc[i].addr = cpu_to_virtio64(_vq->vdev, addr); in virtqueue_add()
352 desc[i].len = cpu_to_virtio32(_vq->vdev, sg->length); in virtqueue_add()
354 i = virtio16_to_cpu(_vq->vdev, desc[i].next); in virtqueue_add()
358 desc[prev].flags &= cpu_to_virtio16(_vq->vdev, ~VRING_DESC_F_NEXT); in virtqueue_add()
368 vq->vring.desc[head].flags = cpu_to_virtio16(_vq->vdev, VRING_DESC_F_INDIRECT); in virtqueue_add()
369 vq->vring.desc[head].addr = cpu_to_virtio64(_vq->vdev, addr); in virtqueue_add()
371 vq->vring.desc[head].len = cpu_to_virtio32(_vq->vdev, total_sg * sizeof(struct vring_desc)); in virtqueue_add()
379 vq->free_head = virtio16_to_cpu(_vq->vdev, vq->vring.desc[head].next); in virtqueue_add()
391 vq->vring.avail->ring[avail] = cpu_to_virtio16(_vq->vdev, head); in virtqueue_add()
397 vq->vring.avail->idx = cpu_to_virtio16(_vq->vdev, vq->avail_idx_shadow); in virtqueue_add()
406 virtqueue_kick(_vq); in virtqueue_add()
443 int virtqueue_add_sgs(struct virtqueue *_vq, in virtqueue_add_sgs() argument
458 return virtqueue_add(_vq, sgs, total_sg, out_sgs, in_sgs, data, gfp); in virtqueue_add_sgs()
517 bool virtqueue_kick_prepare(struct virtqueue *_vq) in virtqueue_kick_prepare() argument
519 struct vring_virtqueue *vq = to_vvq(_vq); in virtqueue_kick_prepare()
541 needs_kick = vring_need_event(virtio16_to_cpu(_vq->vdev, vring_avail_event(&vq->vring)), in virtqueue_kick_prepare()
544 needs_kick = !(vq->vring.used->flags & cpu_to_virtio16(_vq->vdev, VRING_USED_F_NO_NOTIFY)); in virtqueue_kick_prepare()
559 bool virtqueue_notify(struct virtqueue *_vq) in virtqueue_notify() argument
561 struct vring_virtqueue *vq = to_vvq(_vq); in virtqueue_notify()
567 if (!vq->notify(_vq)) { in virtqueue_notify()
657 void *virtqueue_get_buf(struct virtqueue *_vq, unsigned int *len) in virtqueue_get_buf() argument
659 struct vring_virtqueue *vq = to_vvq(_vq); in virtqueue_get_buf()
681 i = virtio32_to_cpu(_vq->vdev, vq->vring.used->ring[last_used].id); in virtqueue_get_buf()
682 *len = virtio32_to_cpu(_vq->vdev, vq->vring.used->ring[last_used].len); in virtqueue_get_buf()
701 vring_used_event(&vq->vring) = cpu_to_virtio16(_vq->vdev, vq->last_used_idx); in virtqueue_get_buf()
723 void virtqueue_disable_cb(struct virtqueue *_vq) in virtqueue_disable_cb() argument
725 struct vring_virtqueue *vq = to_vvq(_vq); in virtqueue_disable_cb()
730 vq->vring.avail->flags = cpu_to_virtio16(_vq->vdev, vq->avail_flags_shadow); in virtqueue_disable_cb()
748 unsigned virtqueue_enable_cb_prepare(struct virtqueue *_vq) in virtqueue_enable_cb_prepare() argument
750 struct vring_virtqueue *vq = to_vvq(_vq); in virtqueue_enable_cb_prepare()
763 vq->vring.avail->flags = cpu_to_virtio16(_vq->vdev, vq->avail_flags_shadow); in virtqueue_enable_cb_prepare()
765 vring_used_event(&vq->vring) = cpu_to_virtio16(_vq->vdev, last_used_idx = vq->last_used_idx); in virtqueue_enable_cb_prepare()
780 bool virtqueue_poll(struct virtqueue *_vq, unsigned last_used_idx) in virtqueue_poll() argument
782 struct vring_virtqueue *vq = to_vvq(_vq); in virtqueue_poll()
788 return (u16)last_used_idx != virtio16_to_cpu(_vq->vdev, vq->vring.used->idx); in virtqueue_poll()
803 bool virtqueue_enable_cb(struct virtqueue *_vq) in virtqueue_enable_cb() argument
805 unsigned last_used_idx = virtqueue_enable_cb_prepare(_vq); in virtqueue_enable_cb()
806 return !virtqueue_poll(_vq, last_used_idx); in virtqueue_enable_cb()
823 bool virtqueue_enable_cb_delayed(struct virtqueue *_vq) in virtqueue_enable_cb_delayed() argument
825 struct vring_virtqueue *vq = to_vvq(_vq); in virtqueue_enable_cb_delayed()
838 vq->vring.avail->flags = cpu_to_virtio16(_vq->vdev, vq->avail_flags_shadow); in virtqueue_enable_cb_delayed()
842 vring_used_event(&vq->vring) = cpu_to_virtio16(_vq->vdev, vq->last_used_idx + bufs); in virtqueue_enable_cb_delayed()
844 if (unlikely((u16)(virtio16_to_cpu(_vq->vdev, vq->vring.used->idx) - vq->last_used_idx) > bufs)) { in virtqueue_enable_cb_delayed()
862 void *virtqueue_detach_unused_buf(struct virtqueue *_vq) in virtqueue_detach_unused_buf() argument
864 struct vring_virtqueue *vq = to_vvq(_vq); in virtqueue_detach_unused_buf()
877 vq->vring.avail->idx = cpu_to_virtio16(_vq->vdev, vq->avail_idx_shadow); in virtqueue_detach_unused_buf()
889 irqreturn_t vring_interrupt(int irq, void *_vq) in vring_interrupt() argument
891 struct vring_virtqueue *vq = to_vvq(_vq); in vring_interrupt()
1009 unsigned int virtqueue_get_vring_size(struct virtqueue *_vq) in virtqueue_get_vring_size() argument
1012 struct vring_virtqueue *vq = to_vvq(_vq); in virtqueue_get_vring_size()
1018 bool virtqueue_is_broken(struct virtqueue *_vq) in virtqueue_is_broken() argument
1020 struct vring_virtqueue *vq = to_vvq(_vq); in virtqueue_is_broken()
1032 struct virtqueue *_vq; in virtio_break_device() local
1034 list_for_each_entry(_vq, &dev->vqs, list) { in virtio_break_device()
1035 struct vring_virtqueue *vq = to_vvq(_vq); in virtio_break_device()
1043 void *virtqueue_get_avail(struct virtqueue *_vq) in virtqueue_get_avail() argument
1045 struct vring_virtqueue *vq = to_vvq(_vq); in virtqueue_get_avail()
1051 void *virtqueue_get_used(struct virtqueue *_vq) in virtqueue_get_used() argument
1053 struct vring_virtqueue *vq = to_vvq(_vq); in virtqueue_get_used()