From: Wei Wang <wei.w.wang@intel.com> To: virtio-dev@lists.oasis-open.org, qemu-devel@nongnu.org, mst@redhat.com, marcandre.lureau@redhat.com, jasowang@redhat.com, stefanha@redhat.com, pbonzini@redhat.com Cc: jan.kiszka@siemens.com, avi.cohen@huawei.com, zhiyong.yang@intel.com, Wei Wang <wei.w.wang@intel.com> Subject: [Qemu-devel] [PATCH v3 7/7] virtio/vhost.c: vhost-pci needs remote gpa Date: Tue, 5 Dec 2017 11:33:16 +0800 [thread overview] Message-ID: <1512444796-30615-8-git-send-email-wei.w.wang@intel.com> (raw) In-Reply-To: <1512444796-30615-1-git-send-email-wei.w.wang@intel.com> The vhost-pci driver uses the remote guest physical address to send/receive packets from the remote guest, so when sending the ving info to the vhost-pci device, send the guest physical adress directly. Signed-off-by: Wei Wang <wei.w.wang@intel.com> --- hw/virtio/vhost.c | 56 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index dda7b8f..ffbda6c 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -1057,26 +1057,38 @@ static int vhost_virtqueue_start(struct vhost_dev *dev, } } - vq->desc_size = s = l = virtio_queue_get_desc_size(vdev, idx); vq->desc_phys = a = virtio_queue_get_desc_addr(vdev, idx); - vq->desc = vhost_memory_map(dev, a, &l, 0); - if (!vq->desc || l != s) { - r = -ENOMEM; - goto fail_alloc_desc; + if (vhost_pci_enabled(dev)) { + vq->desc = (void *)a; + } else { + vq->desc_size = s = l = virtio_queue_get_desc_size(vdev, idx); + vq->desc = vhost_memory_map(dev, a, &l, 0); + if (!vq->desc || l != s) { + r = -ENOMEM; + goto fail_alloc_desc; + } } vq->avail_size = s = l = virtio_queue_get_avail_size(vdev, idx); vq->avail_phys = a = virtio_queue_get_avail_addr(vdev, idx); - vq->avail = vhost_memory_map(dev, a, &l, 0); - if (!vq->avail || l != s) { - r = -ENOMEM; - goto fail_alloc_avail; + if (vhost_pci_enabled(dev)) { + vq->avail = (void *)a; + } else { + vq->avail = vhost_memory_map(dev, 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_addr(vdev, idx); - vq->used = vhost_memory_map(dev, a, &l, 1); - if (!vq->used || l != s) { - r = -ENOMEM; - goto fail_alloc_used; + if (vhost_pci_enabled(dev)) { + vq->used = (void *)a; + } else { + vq->used = vhost_memory_map(dev, a, &l, 1); + if (!vq->used || l != s) { + r = -ENOMEM; + goto fail_alloc_used; + } } r = vhost_virtqueue_set_addr(dev, vq, vhost_vq_index, dev->log_enabled); @@ -1163,13 +1175,17 @@ static void vhost_virtqueue_stop(struct vhost_dev *dev, !virtio_is_big_endian(vdev), vhost_vq_index); } - - vhost_memory_unmap(dev, vq->used, virtio_queue_get_used_size(vdev, idx), - 1, virtio_queue_get_used_size(vdev, idx)); - vhost_memory_unmap(dev, vq->avail, virtio_queue_get_avail_size(vdev, idx), - 0, virtio_queue_get_avail_size(vdev, idx)); - vhost_memory_unmap(dev, vq->desc, virtio_queue_get_desc_size(vdev, idx), - 0, virtio_queue_get_desc_size(vdev, idx)); + if (!vhost_pci_enabled(dev)) { + vhost_memory_unmap(dev, vq->used, + virtio_queue_get_used_size(vdev, idx), + 1, virtio_queue_get_used_size(vdev, idx)); + vhost_memory_unmap(dev, vq->avail, + virtio_queue_get_avail_size(vdev, idx), + 0, virtio_queue_get_avail_size(vdev, idx)); + vhost_memory_unmap(dev, vq->desc, + virtio_queue_get_desc_size(vdev, idx), + 0, virtio_queue_get_desc_size(vdev, idx)); + } } static void vhost_eventfd_add(MemoryListener *listener, -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: Wei Wang <wei.w.wang@intel.com> To: virtio-dev@lists.oasis-open.org, qemu-devel@nongnu.org, mst@redhat.com, marcandre.lureau@redhat.com, jasowang@redhat.com, stefanha@redhat.com, pbonzini@redhat.com Cc: jan.kiszka@siemens.com, avi.cohen@huawei.com, zhiyong.yang@intel.com, Wei Wang <wei.w.wang@intel.com> Subject: [virtio-dev] [PATCH v3 7/7] virtio/vhost.c: vhost-pci needs remote gpa Date: Tue, 5 Dec 2017 11:33:16 +0800 [thread overview] Message-ID: <1512444796-30615-8-git-send-email-wei.w.wang@intel.com> (raw) In-Reply-To: <1512444796-30615-1-git-send-email-wei.w.wang@intel.com> The vhost-pci driver uses the remote guest physical address to send/receive packets from the remote guest, so when sending the ving info to the vhost-pci device, send the guest physical adress directly. Signed-off-by: Wei Wang <wei.w.wang@intel.com> --- hw/virtio/vhost.c | 56 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index dda7b8f..ffbda6c 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -1057,26 +1057,38 @@ static int vhost_virtqueue_start(struct vhost_dev *dev, } } - vq->desc_size = s = l = virtio_queue_get_desc_size(vdev, idx); vq->desc_phys = a = virtio_queue_get_desc_addr(vdev, idx); - vq->desc = vhost_memory_map(dev, a, &l, 0); - if (!vq->desc || l != s) { - r = -ENOMEM; - goto fail_alloc_desc; + if (vhost_pci_enabled(dev)) { + vq->desc = (void *)a; + } else { + vq->desc_size = s = l = virtio_queue_get_desc_size(vdev, idx); + vq->desc = vhost_memory_map(dev, a, &l, 0); + if (!vq->desc || l != s) { + r = -ENOMEM; + goto fail_alloc_desc; + } } vq->avail_size = s = l = virtio_queue_get_avail_size(vdev, idx); vq->avail_phys = a = virtio_queue_get_avail_addr(vdev, idx); - vq->avail = vhost_memory_map(dev, a, &l, 0); - if (!vq->avail || l != s) { - r = -ENOMEM; - goto fail_alloc_avail; + if (vhost_pci_enabled(dev)) { + vq->avail = (void *)a; + } else { + vq->avail = vhost_memory_map(dev, 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_addr(vdev, idx); - vq->used = vhost_memory_map(dev, a, &l, 1); - if (!vq->used || l != s) { - r = -ENOMEM; - goto fail_alloc_used; + if (vhost_pci_enabled(dev)) { + vq->used = (void *)a; + } else { + vq->used = vhost_memory_map(dev, a, &l, 1); + if (!vq->used || l != s) { + r = -ENOMEM; + goto fail_alloc_used; + } } r = vhost_virtqueue_set_addr(dev, vq, vhost_vq_index, dev->log_enabled); @@ -1163,13 +1175,17 @@ static void vhost_virtqueue_stop(struct vhost_dev *dev, !virtio_is_big_endian(vdev), vhost_vq_index); } - - vhost_memory_unmap(dev, vq->used, virtio_queue_get_used_size(vdev, idx), - 1, virtio_queue_get_used_size(vdev, idx)); - vhost_memory_unmap(dev, vq->avail, virtio_queue_get_avail_size(vdev, idx), - 0, virtio_queue_get_avail_size(vdev, idx)); - vhost_memory_unmap(dev, vq->desc, virtio_queue_get_desc_size(vdev, idx), - 0, virtio_queue_get_desc_size(vdev, idx)); + if (!vhost_pci_enabled(dev)) { + vhost_memory_unmap(dev, vq->used, + virtio_queue_get_used_size(vdev, idx), + 1, virtio_queue_get_used_size(vdev, idx)); + vhost_memory_unmap(dev, vq->avail, + virtio_queue_get_avail_size(vdev, idx), + 0, virtio_queue_get_avail_size(vdev, idx)); + vhost_memory_unmap(dev, vq->desc, + virtio_queue_get_desc_size(vdev, idx), + 0, virtio_queue_get_desc_size(vdev, idx)); + } } static void vhost_eventfd_add(MemoryListener *listener, -- 2.7.4 --------------------------------------------------------------------- To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org
next prev parent reply other threads:[~2017-12-05 3:49 UTC|newest] Thread overview: 170+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-12-05 3:33 [Qemu-devel] [PATCH v3 0/7] Vhost-pci for inter-VM communication Wei Wang 2017-12-05 3:33 ` [virtio-dev] " Wei Wang 2017-12-05 3:33 ` [Qemu-devel] [PATCH v3 1/7] vhost-user: share the vhost-user protocol related structures Wei Wang 2017-12-05 3:33 ` [virtio-dev] " Wei Wang 2017-12-05 3:33 ` [Qemu-devel] [PATCH v3 2/7] vhost-pci-net: add vhost-pci-net Wei Wang 2017-12-05 3:33 ` [virtio-dev] " Wei Wang 2017-12-05 14:59 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-05 14:59 ` Stefan Hajnoczi 2017-12-05 15:17 ` [Qemu-devel] " Michael S. Tsirkin 2017-12-05 15:17 ` Michael S. Tsirkin 2017-12-05 15:55 ` [Qemu-devel] " Michael S. Tsirkin 2017-12-05 15:55 ` Michael S. Tsirkin 2017-12-05 16:41 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-05 16:41 ` Stefan Hajnoczi 2017-12-05 16:53 ` [Qemu-devel] " Michael S. Tsirkin 2017-12-05 16:53 ` Michael S. Tsirkin 2017-12-05 17:00 ` [Qemu-devel] " Cornelia Huck 2017-12-05 17:00 ` [virtio-dev] " Cornelia Huck 2017-12-05 18:06 ` Michael S. Tsirkin 2017-12-05 18:06 ` [virtio-dev] " Michael S. Tsirkin 2017-12-06 10:17 ` Wei Wang 2017-12-06 10:17 ` Wei Wang 2017-12-06 12:01 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-06 12:01 ` Stefan Hajnoczi 2017-12-05 3:33 ` [Qemu-devel] [PATCH v3 3/7] virtio/virtio-pci.c: add vhost-pci-net-pci Wei Wang 2017-12-05 3:33 ` [virtio-dev] " Wei Wang 2017-12-05 3:33 ` [Qemu-devel] [PATCH v3 4/7] vhost-pci-slave: add vhost-pci slave implementation Wei Wang 2017-12-05 3:33 ` [virtio-dev] " Wei Wang 2017-12-05 15:56 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-05 15:56 ` [virtio-dev] " Stefan Hajnoczi 2017-12-14 17:30 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-14 17:30 ` [virtio-dev] " Stefan Hajnoczi 2017-12-14 17:48 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-14 17:48 ` [virtio-dev] " Stefan Hajnoczi 2017-12-05 3:33 ` [Qemu-devel] [PATCH v3 5/7] vhost-user: VHOST_USER_SET_VHOST_PCI msg Wei Wang 2017-12-05 3:33 ` [virtio-dev] " Wei Wang 2017-12-05 16:00 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-05 16:00 ` [virtio-dev] " Stefan Hajnoczi 2017-12-06 10:32 ` [Qemu-devel] " Wei Wang 2017-12-06 10:32 ` Wei Wang 2017-12-15 12:40 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-15 12:40 ` Stefan Hajnoczi 2017-12-05 3:33 ` [Qemu-devel] [PATCH v3 6/7] vhost-pci-slave: handle VHOST_USER_SET_VHOST_PCI Wei Wang 2017-12-05 3:33 ` [virtio-dev] " Wei Wang 2017-12-05 3:33 ` Wei Wang [this message] 2017-12-05 3:33 ` [virtio-dev] [PATCH v3 7/7] virtio/vhost.c: vhost-pci needs remote gpa Wei Wang 2017-12-05 16:05 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-05 16:05 ` [virtio-dev] " Stefan Hajnoczi 2017-12-06 10:46 ` [Qemu-devel] " Wei Wang 2017-12-06 10:46 ` Wei Wang 2017-12-05 4:13 ` [Qemu-devel] [PATCH v3 0/7] Vhost-pci for inter-VM communication no-reply 2017-12-05 7:01 ` [Qemu-devel] [virtio-dev] " Jason Wang 2017-12-05 7:01 ` Jason Wang 2017-12-05 7:15 ` [Qemu-devel] " Wei Wang 2017-12-05 7:15 ` Wei Wang 2017-12-05 7:19 ` [Qemu-devel] " Jason Wang 2017-12-05 7:19 ` Jason Wang 2017-12-05 8:49 ` [Qemu-devel] " Avi Cohen (A) 2017-12-05 8:49 ` Avi Cohen (A) 2017-12-05 10:36 ` [Qemu-devel] " Wei Wang 2017-12-05 10:36 ` Wei Wang 2017-12-05 14:30 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-05 14:30 ` Stefan Hajnoczi 2017-12-05 15:20 ` [Qemu-devel] " Michael S. Tsirkin 2017-12-05 15:20 ` [virtio-dev] " Michael S. Tsirkin 2017-12-05 16:06 ` [Qemu-devel] [virtio-dev] " Stefan Hajnoczi 2017-12-05 16:06 ` Stefan Hajnoczi 2017-12-06 13:49 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-06 13:49 ` Stefan Hajnoczi 2017-12-06 16:09 ` [Qemu-devel] " Wang, Wei W 2017-12-06 16:09 ` Wang, Wei W 2017-12-06 16:27 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-07 3:57 ` Wei Wang 2017-12-07 3:57 ` [virtio-dev] " Wei Wang 2017-12-07 5:11 ` Michael S. Tsirkin 2017-12-07 5:11 ` [virtio-dev] " Michael S. Tsirkin 2017-12-07 5:34 ` Wei Wang 2017-12-07 5:34 ` [virtio-dev] " Wei Wang 2017-12-07 6:31 ` Stefan Hajnoczi 2017-12-07 7:54 ` Avi Cohen (A) 2017-12-07 7:54 ` [virtio-dev] " Avi Cohen (A) 2017-12-07 8:04 ` Stefan Hajnoczi 2017-12-07 8:31 ` Jason Wang 2017-12-07 8:31 ` [virtio-dev] " Jason Wang 2017-12-07 10:24 ` [Qemu-devel] [virtio-dev] " Stefan Hajnoczi 2017-12-07 10:24 ` [virtio-dev] Re: [Qemu-devel] " Stefan Hajnoczi 2017-12-07 13:33 ` Michael S. Tsirkin 2017-12-07 13:33 ` [virtio-dev] " Michael S. Tsirkin 2017-12-07 9:02 ` Wei Wang 2017-12-07 9:02 ` [virtio-dev] " Wei Wang 2017-12-07 13:08 ` Stefan Hajnoczi 2017-12-07 14:02 ` Michael S. Tsirkin 2017-12-07 14:02 ` [virtio-dev] " Michael S. Tsirkin 2017-12-07 16:29 ` Stefan Hajnoczi 2017-12-07 16:47 ` Michael S. Tsirkin 2017-12-07 16:47 ` [virtio-dev] " Michael S. Tsirkin 2017-12-07 17:29 ` Stefan Hajnoczi 2017-12-07 17:38 ` Michael S. Tsirkin 2017-12-07 17:38 ` [virtio-dev] " Michael S. Tsirkin 2017-12-07 18:28 ` Stefan Hajnoczi 2017-12-07 23:54 ` Michael S. Tsirkin 2017-12-07 23:54 ` [virtio-dev] " Michael S. Tsirkin 2017-12-08 6:08 ` Stefan Hajnoczi 2017-12-08 14:27 ` Michael S. Tsirkin 2017-12-08 14:27 ` [virtio-dev] " Michael S. Tsirkin 2017-12-08 16:15 ` Stefan Hajnoczi 2017-12-09 16:08 ` Wang, Wei W 2017-12-09 16:08 ` [virtio-dev] " Wang, Wei W 2017-12-08 6:43 ` Wei Wang 2017-12-08 6:43 ` [virtio-dev] " Wei Wang 2017-12-08 8:33 ` Stefan Hajnoczi 2017-12-09 16:23 ` Wang, Wei W 2017-12-09 16:23 ` [virtio-dev] " Wang, Wei W 2017-12-11 11:11 ` Stefan Hajnoczi 2017-12-11 11:11 ` [virtio-dev] " Stefan Hajnoczi 2017-12-11 13:53 ` Wang, Wei W 2017-12-11 13:53 ` [virtio-dev] " Wang, Wei W 2017-12-12 10:14 ` Stefan Hajnoczi 2017-12-12 10:14 ` [virtio-dev] " Stefan Hajnoczi 2017-12-13 8:11 ` Wei Wang 2017-12-13 8:11 ` [virtio-dev] " Wei Wang 2017-12-13 12:35 ` Stefan Hajnoczi 2017-12-13 15:01 ` Michael S. Tsirkin 2017-12-13 15:01 ` [virtio-dev] " Michael S. Tsirkin 2017-12-13 20:08 ` Stefan Hajnoczi 2017-12-13 20:59 ` Michael S. Tsirkin 2017-12-13 20:59 ` [virtio-dev] " Michael S. Tsirkin 2017-12-14 15:06 ` Stefan Hajnoczi 2017-12-14 15:06 ` [virtio-dev] " Stefan Hajnoczi 2017-12-15 10:33 ` Wei Wang 2017-12-15 10:33 ` [virtio-dev] " Wei Wang 2017-12-15 12:37 ` Stefan Hajnoczi 2017-12-15 12:37 ` [virtio-dev] " Stefan Hajnoczi 2017-12-13 21:50 ` Maxime Coquelin 2017-12-13 21:50 ` [virtio-dev] " Maxime Coquelin 2017-12-14 15:46 ` [Qemu-devel] [virtio-dev] " Stefan Hajnoczi 2017-12-14 15:46 ` [virtio-dev] Re: [Qemu-devel] " Stefan Hajnoczi 2017-12-14 16:27 ` [Qemu-devel] [virtio-dev] " Michael S. Tsirkin 2017-12-14 16:27 ` [virtio-dev] Re: [Qemu-devel] " Michael S. Tsirkin 2017-12-14 16:39 ` [Qemu-devel] [virtio-dev] " Maxime Coquelin 2017-12-14 16:39 ` [virtio-dev] Re: [Qemu-devel] " Maxime Coquelin 2017-12-14 16:40 ` [Qemu-devel] [virtio-dev] " Michael S. Tsirkin 2017-12-14 16:40 ` [virtio-dev] Re: [Qemu-devel] " Michael S. Tsirkin 2017-12-14 16:50 ` [Qemu-devel] [virtio-dev] " Maxime Coquelin 2017-12-14 16:50 ` [virtio-dev] Re: [Qemu-devel] " Maxime Coquelin 2017-12-14 18:11 ` [Qemu-devel] [virtio-dev] " Stefan Hajnoczi 2017-12-14 18:11 ` [virtio-dev] Re: [Qemu-devel] " Stefan Hajnoczi 2017-12-14 5:53 ` Wei Wang 2017-12-14 5:53 ` [virtio-dev] " Wei Wang 2017-12-14 17:32 ` Stefan Hajnoczi 2017-12-14 17:32 ` [virtio-dev] " Stefan Hajnoczi 2017-12-15 9:10 ` Wei Wang 2017-12-15 9:10 ` [virtio-dev] " Wei Wang 2017-12-15 12:26 ` Stefan Hajnoczi 2017-12-15 12:26 ` [virtio-dev] " Stefan Hajnoczi 2017-12-14 18:04 ` Stefan Hajnoczi 2017-12-14 18:04 ` [virtio-dev] " Stefan Hajnoczi 2017-12-15 10:33 ` [Qemu-devel] [virtio-dev] " Wei Wang 2017-12-15 10:33 ` [virtio-dev] Re: [Qemu-devel] " Wei Wang 2017-12-15 12:00 ` [Qemu-devel] [virtio-dev] " Stefan Hajnoczi 2017-12-15 12:00 ` [virtio-dev] Re: [Qemu-devel] " Stefan Hajnoczi 2017-12-06 16:13 ` Stefan Hajnoczi 2017-12-19 11:35 ` Stefan Hajnoczi 2017-12-19 11:35 ` Stefan Hajnoczi 2017-12-19 14:56 ` [Qemu-devel] " Michael S. Tsirkin 2017-12-19 14:56 ` Michael S. Tsirkin 2017-12-19 17:05 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-20 4:06 ` Michael S. Tsirkin 2017-12-20 4:06 ` [virtio-dev] " Michael S. Tsirkin 2017-12-20 6:26 ` Stefan Hajnoczi
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=1512444796-30615-8-git-send-email-wei.w.wang@intel.com \ --to=wei.w.wang@intel.com \ --cc=avi.cohen@huawei.com \ --cc=jan.kiszka@siemens.com \ --cc=jasowang@redhat.com \ --cc=marcandre.lureau@redhat.com \ --cc=mst@redhat.com \ --cc=pbonzini@redhat.com \ --cc=qemu-devel@nongnu.org \ --cc=stefanha@redhat.com \ --cc=virtio-dev@lists.oasis-open.org \ --cc=zhiyong.yang@intel.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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.