qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Amit Shah <amit.shah@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: quintela@redhat.com, qemu-devel@nongnu.org, kraxel@redhat.com
Subject: [Qemu-devel] Re: [PATCHv4 09/12] vhost: vhost net support
Date: Fri, 5 Mar 2010 23:49:11 +0530	[thread overview]
Message-ID: <20100305181911.GA24686@amit-x200.redhat.com> (raw)
In-Reply-To: <36c10281d19b4c845444363273657c4709210e35.1267636215.git.mst@redhat.com>

On (Wed) Mar 03 2010 [19:16:35], Michael S. Tsirkin wrote:

> +static int vhost_virtqueue_init(struct vhost_dev *dev,
> +                                struct VirtIODevice *vdev,
> +                                struct vhost_virtqueue *vq,
> +                                unsigned idx)
> +{
> +    target_phys_addr_t s, l, a;
> +    int r;
> +    struct vhost_vring_file file = {
> +        .index = idx,
> +    };
> +    struct vhost_vring_state state = {
> +        .index = idx,
> +    };
> +    struct VirtQueue *q = virtio_queue(vdev, idx);

Why depart from using 'vq' for VirtQueue? Why not use 'hvq' for
vhost_virtqueue? That'll make reading through this code easier... Also,
'hvdev' for vhost_dev will be apt as well.

> +    vq->num = state.num = virtio_queue_get_num(vdev, idx);

I think this should be named 'virtio_queue_get_vq_num' for clarity.

> +    r = ioctl(dev->control, VHOST_SET_VRING_NUM, &state);
> +    if (r) {
> +        return -errno;
> +    }
> +
> +    state.num = virtio_queue_last_avail_idx(vdev, idx);
> +    r = ioctl(dev->control, VHOST_SET_VRING_BASE, &state);
> +    if (r) {
> +        return -errno;
> +    }
> +
> +    s = l = virtio_queue_get_desc_size(vdev, idx);
> +    a = virtio_queue_get_desc(vdev, idx);
> +    vq->desc = cpu_physical_memory_map(a, &l, 0);
> +    if (!vq->desc || l != s) {
> +        r = -ENOMEM;
> +        goto fail_alloc_desc;
> +    }
> +    s = l = virtio_queue_get_avail_size(vdev, idx);
> +    a = virtio_queue_get_avail(vdev, idx);
> +    vq->avail = cpu_physical_memory_map(a, &l, 0);
> +    if (!vq->avail || l != s) {
> +        r = -ENOMEM;
> +        goto fail_alloc_avail;
> +    }
> +    vq->used_size = s = l = virtio_queue_get_used_size(vdev, idx);
> +    vq->used_phys = a = virtio_queue_get_used(vdev, idx);
> +    vq->used = cpu_physical_memory_map(a, &l, 1);
> +    if (!vq->used || l != s) {
> +        r = -ENOMEM;
> +        goto fail_alloc_used;
> +    }
> +
> +    vq->ring_size = s = l = virtio_queue_get_ring_size(vdev, idx);
> +    vq->ring_phys = a = virtio_queue_get_ring(vdev, idx);
> +    vq->ring = cpu_physical_memory_map(a, &l, 1);
> +    if (!vq->ring || l != s) {
> +        r = -ENOMEM;
> +        goto fail_alloc_ring;
> +    }
> +
> +    r = vhost_virtqueue_set_addr(dev, vq, idx, dev->log_enabled);
> +    if (r < 0) {
> +        r = -errno;
> +        goto fail_alloc;
> +    }
> +    if (!vdev->binding->guest_notifier || !vdev->binding->host_notifier) {
> +        fprintf(stderr, "binding does not support irqfd/queuefd\n");
> +        r = -ENOSYS;
> +        goto fail_alloc;
> +    }

This could be checked much earlier on in the function; so that we avoid
doing all that stuff above and the cleanup.

		Amit

  reply	other threads:[~2010-03-05 18:20 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-03 17:15 [Qemu-devel] [PATCHv4 00/12] vhost-net: upstream integration Michael S. Tsirkin
2010-03-03 17:15 ` [Qemu-devel] [PATCHv4 01/12] tap: add interface to get device fd Michael S. Tsirkin
2010-03-03 17:15 ` [Qemu-devel] [PATCHv4 02/12] kvm: add API to set ioeventfd Michael S. Tsirkin
2010-03-03 17:16 ` [Qemu-devel] [PATCHv4 03/12] notifier: event notifier implementation Michael S. Tsirkin
2010-03-05 12:03   ` [Qemu-devel] " Amit Shah
2010-03-03 17:16 ` [Qemu-devel] [PATCHv4 04/12] virtio: add notifier support Michael S. Tsirkin
2010-03-05 12:04   ` [Qemu-devel] " Amit Shah
2010-03-03 17:16 ` [Qemu-devel] [PATCHv4 05/12] virtio: add APIs for queue fields Michael S. Tsirkin
2010-03-05 12:10   ` [Qemu-devel] " Amit Shah
2010-03-06 19:09     ` Michael S. Tsirkin
2010-03-05 13:08   ` Amit Shah
2010-03-06 19:07     ` Michael S. Tsirkin
2010-03-08  6:16       ` Amit Shah
2010-03-08 18:11         ` Michael S. Tsirkin
2010-03-03 17:16 ` [Qemu-devel] [PATCHv4 06/12] virtio: add set_status callback Michael S. Tsirkin
2010-03-04 12:19   ` Amit Shah
2010-03-04 12:20     ` Michael S. Tsirkin
2010-03-03 17:16 ` [Qemu-devel] [PATCHv4 07/12] virtio: move typedef to qemu-common Michael S. Tsirkin
2010-03-04 12:20   ` Amit Shah
2010-03-04 12:19     ` Michael S. Tsirkin
2010-03-04 12:29       ` Amit Shah
2010-03-04 12:31         ` Michael S. Tsirkin
2010-03-03 17:16 ` [Qemu-devel] [PATCHv4 08/12] virtio-pci: fill in notifier support Michael S. Tsirkin
2010-03-03 17:16 ` [Qemu-devel] [PATCHv4 09/12] vhost: vhost net support Michael S. Tsirkin
2010-03-05 18:19   ` Amit Shah [this message]
2010-03-06 19:06     ` [Qemu-devel] " Michael S. Tsirkin
2010-03-08  6:20       ` Amit Shah
2010-03-16 15:37         ` Michael S. Tsirkin
2010-03-17  4:09           ` Amit Shah
2010-03-03 17:16 ` [Qemu-devel] [PATCHv4 10/12] tap: add vhost/vhostfd options Michael S. Tsirkin
2010-03-03 17:16 ` [Qemu-devel] [PATCHv4 11/12] tap: add API to retrieve vhost net header Michael S. Tsirkin
2010-03-03 17:16 ` [Qemu-devel] [PATCHv4 12/12] virtio-net: vhost net support Michael S. Tsirkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100305181911.GA24686@amit-x200.redhat.com \
    --to=amit.shah@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).