vhost: generalize adding used elem
Use one generic vhost_copy_to_user() instead of two dedicated accessor. This will simplify the conversion to fine grain accessors. About 2% improvement of PPS were seen during vitio-user txonly test. Signed-off-by: Jason Wang <jasowang@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
c1ea02f15a
commit
1ab5d1385a
|
@ -2273,16 +2273,7 @@ static int __vhost_add_used_n(struct vhost_virtqueue *vq,
|
||||||
|
|
||||||
start = vq->last_used_idx & (vq->num - 1);
|
start = vq->last_used_idx & (vq->num - 1);
|
||||||
used = vq->used->ring + start;
|
used = vq->used->ring + start;
|
||||||
if (count == 1) {
|
if (vhost_copy_to_user(vq, used, heads, count * sizeof *used)) {
|
||||||
if (vhost_put_user(vq, heads[0].id, &used->id)) {
|
|
||||||
vq_err(vq, "Failed to write used id");
|
|
||||||
return -EFAULT;
|
|
||||||
}
|
|
||||||
if (vhost_put_user(vq, heads[0].len, &used->len)) {
|
|
||||||
vq_err(vq, "Failed to write used len");
|
|
||||||
return -EFAULT;
|
|
||||||
}
|
|
||||||
} else if (vhost_copy_to_user(vq, used, heads, count * sizeof *used)) {
|
|
||||||
vq_err(vq, "Failed to write used");
|
vq_err(vq, "Failed to write used");
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue