virtio: Add helper functions to attach/detach vring descriptors
Move the attach and detach logic for manipulating vring descriptors
out into their own functions so that we can later extend these to
bounce the data for devices with VIRTIO_F_IOMMU_PLATFORM set.
Signed-off-by: Will Deacon <willdeacon@google.com>
[ Paul: pick from the Android tree. Rebase to the upstream ]
Signed-off-by: Ying-Chun Liu (PaulLiu) <paul.liu@linaro.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Link: f73258a4bf
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
75582fc2e6
commit
a15d67e01a
1 changed files with 6 additions and 0 deletions
|
@ -47,6 +47,10 @@ static unsigned int virtqueue_attach_desc(struct virtqueue *vq, unsigned int i,
|
||||||
return desc_shadow->next;
|
return desc_shadow->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void virtqueue_detach_desc(struct virtqueue *vq, unsigned int idx)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
int virtqueue_add(struct virtqueue *vq, struct virtio_sg *sgs[],
|
int virtqueue_add(struct virtqueue *vq, struct virtio_sg *sgs[],
|
||||||
unsigned int out_sgs, unsigned int in_sgs)
|
unsigned int out_sgs, unsigned int in_sgs)
|
||||||
{
|
{
|
||||||
|
@ -165,10 +169,12 @@ static void detach_buf(struct virtqueue *vq, unsigned int head)
|
||||||
i = head;
|
i = head;
|
||||||
|
|
||||||
while (vq->vring_desc_shadow[i].flags & VRING_DESC_F_NEXT) {
|
while (vq->vring_desc_shadow[i].flags & VRING_DESC_F_NEXT) {
|
||||||
|
virtqueue_detach_desc(vq, i);
|
||||||
i = vq->vring_desc_shadow[i].next;
|
i = vq->vring_desc_shadow[i].next;
|
||||||
vq->num_free++;
|
vq->num_free++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtqueue_detach_desc(vq, i);
|
||||||
vq->vring_desc_shadow[i].next = vq->free_head;
|
vq->vring_desc_shadow[i].next = vq->free_head;
|
||||||
vq->free_head = head;
|
vq->free_head = head;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue