diff options
author | Jason Wang <jasowang@redhat.com> | 2019-05-24 04:12:13 -0400 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2019-06-05 16:23:52 -0400 |
commit | 1ab5d1385af40272ca44a5cd38af7e13da6ed847 (patch) | |
tree | 266251dade0c6ed9ae0fdae4efd48354918d2608 /drivers/vhost/vhost.c | |
parent | c1ea02f15ab5efb3e93fc3144d895410bf79fcf2 (diff) |
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>
Diffstat (limited to 'drivers/vhost/vhost.c')
-rw-r--r-- | drivers/vhost/vhost.c | 11 |
1 files changed, 1 insertions, 10 deletions
diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c index 3f3eac4bcc58..3fb58015f8b3 100644 --- a/drivers/vhost/vhost.c +++ b/drivers/vhost/vhost.c | |||
@@ -2273,16 +2273,7 @@ static int __vhost_add_used_n(struct vhost_virtqueue *vq, | |||
2273 | 2273 | ||
2274 | start = vq->last_used_idx & (vq->num - 1); | 2274 | start = vq->last_used_idx & (vq->num - 1); |
2275 | used = vq->used->ring + start; | 2275 | used = vq->used->ring + start; |
2276 | if (count == 1) { | 2276 | if (vhost_copy_to_user(vq, used, heads, count * sizeof *used)) { |
2277 | if (vhost_put_user(vq, heads[0].id, &used->id)) { | ||
2278 | vq_err(vq, "Failed to write used id"); | ||
2279 | return -EFAULT; | ||
2280 | } | ||
2281 | if (vhost_put_user(vq, heads[0].len, &used->len)) { | ||
2282 | vq_err(vq, "Failed to write used len"); | ||
2283 | return -EFAULT; | ||
2284 | } | ||
2285 | } else if (vhost_copy_to_user(vq, used, heads, count * sizeof *used)) { | ||
2286 | vq_err(vq, "Failed to write used"); | 2277 | vq_err(vq, "Failed to write used"); |
2287 | return -EFAULT; | 2278 | return -EFAULT; |
2288 | } | 2279 | } |