qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Wei Wang <wei.w.wang@intel.com>
To: "Marc-André Lureau" <marcandre.lureau@gmail.com>
Cc: mst@redhat.com, stefanha@redhat.com, pbonzini@redhat.com,
	qemu-devel@nongnu.org, virtio-dev@lists.oasis-open.org
Subject: Re: [Qemu-devel] [RESEND Patch v1 00/37] Implementation of vhost-pci for inter-vm commucation
Date: Mon, 09 Jan 2017 13:13:39 +0800	[thread overview]
Message-ID: <58731C03.3040002@intel.com> (raw)
In-Reply-To: <5858B472.9000007@intel.com>

Hi Marc-André,

Do you have any comments on the responses? Thanks.

On 12/20/2016 12:32 PM, Wei Wang wrote:
> Hi Marc-André, thanks for the comments.
>
> On 12/20/2016 12:43 AM, Marc-André Lureau wrote:
>> Hi Wei,
>>
>> On Mon, Dec 19, 2016 at 7:00 AM Wei Wang <wei.w.wang@intel.com 
>> <mailto:wei.w.wang@intel.com>> wrote:
>>
>>     This patch series implements vhost-pci, which is a point-to-point
>>     based inter-vm
>>     communication solution. The QEMU side implementation includes the
>>     vhost-user
>>     extension, vhost-pci device emulation and management. The current
>>     device part
>>     implementation is based on virtio 1.0, but it can be easily
>>     upgraded to support
>>     the upcoming virtio 1.1.
>>
>>     The current QEMU implementation supports the polling mode driver
>>     on both sides
>>     to receive packets. More features, such as interrupt support, live
>>     migration
>>     support, protected memory accesses will be added later.
>>
>>
>>
>> I highly appreciate the effort you put in splitting the patch series 
>> and commenting each, although some are probably superfluous.
>
> I will see if I can combine some of the unnecessary splits in the next 
> version.
>
>> High level question, why do you need to create device dynamically? I 
>> would rather have the following qemu setup:
>>
>> -chardev socket,id=chr,path=.. -device vhost-pci-net,chardev=chr
>>
>> This would also avoid some global state (vp_slave etc)
>
> With the above commands, the slave QEMU will create and plug in the 
> vhost-pci-net device at the QEMU booting time. I think this won't 
> work, because at the slave QEMU booting time, the master, in most 
> cases, hasn't connected to the slave to transmit the info (e.g. memory 
> info) that's required for the device setup - for example, the device 
> bar can't be constructed without the memory info passed from the 
> master, and if the device is created and plugged in the VM without a 
> bar at the beginning, I think we don't have another chance to add a 
> bar on the fly when the device is already driven in the guest. That's 
> the reason that I get a global vp_slave to manage (dynamically 
> create/destroy a device when requested by the master) the vhost-pci 
> device.
>
>>
>> Regarding the protocol changes to support slave request: I tried to 
>> explained that before, apprently I didn't manage to. It is not enough 
>> to support bidirectionnal communications to simply add chardev 
>> frontend handlers. Until now, qemu's code expects an immediate reply 
>> after a request. With your protocol change, it must now also consider 
>> that the slave may send a request before the master request reaches 
>> the slave handler. So all req/reply write()/read() must now handle in 
>> between requests from slave to be race-free (master can read back a 
>> request when it expects a reply). That's not really trivial change, 
>> that's why I proposed to have a secondary channel for slave->master 
>> communications in the past. Not only would this be easier to 
>> implement, but the protocol documentation would also be simpler, the 
>> cost is simply 1 additional unix socket (that I proposed to setup and 
>> pass with ancilliary data on the main channel).
>
> I don't disagree with the second channel method. That implementation 
> hasn't been in the upstream QEMU yet, are you planning to get it in 
> first, so that we can upstream vhost-pci based on that?
>
>>
>>     RESEND change: Fixed some coding style issue
>>
>>
>> there are some spelling to be fixed, and perhaps some 
>> variables/fields to rename  (asyn -> async, crq -> ctrlq?) That can 
>> be addressed in a detailed review.
>
> Sure, I will fix them.
>
Best,
Wei

  parent reply	other threads:[~2017-01-09  5:12 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-19  5:58 [Qemu-devel] [RESEND Patch v1 00/37] Implementation of vhost-pci for inter-vm commucation Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 01/37] vhost-pci-net: the fundamental vhost-pci-net device emulation Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 02/37] vhost-pci-net: the fundamental implementation of vhost-pci-net-pci Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 03/37] vhost-user: share the vhost-user protocol related structures Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 04/37] vl: add the vhost-pci-slave command line option Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 05/37] vhost-pci-slave: start the implementation of vhost-pci-slave Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 06/37] vhost-pci-slave: set up the fundamental handlers for the server socket Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 07/37] vhost-pci-slave/msg: VHOST_USER_GET_FEATURES Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 08/37] vhost-pci-slave/msg: VHOST_USER_SET_FEATURES Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 09/37] vhost-pci-slave/msg: VHOST_USER_GET_PROTOCOL_FEATURES Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 10/37] vhost-pci-slave/msg: VHOST_USER_SET_PROTOCOL_FEATURES Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 11/37] vhost-user/msg: VHOST_USER_PROTOCOL_F_SET_DEVICE_ID Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 12/37] vhost-pci-slave/msg: VHOST_USER_SET_DEVICE_ID Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 13/37] vhost-pci-slave/msg: VHOST_USER_GET_QUEUE_NUM Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 14/37] vhost-pci-slave/msg: VHOST_USER_SET_OWNER Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 15/37] vhost-pci-slave/msg: VHOST_USER_SET_MEM_TABLE Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 16/37] vhost-pci-slave/msg: VHOST_USER_SET_VRING_NUM Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 17/37] vhost-pci-slave/msg: VHOST_USER_SET_VRING_BASE Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 18/37] vhost-user: send guest physical address of virtqueues to the slave Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 19/37] vhost-pci-slave/msg: VHOST_USER_SET_VRING_ADDR Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 20/37] vhost-pci-slave/msg: VHOST_USER_SET_VRING_KICK Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 21/37] vhost-pci-slave/msg: VHOST_USER_SET_VRING_CALL Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 22/37] vhost-pci-slave/msg: VHOST_USER_SET_VRING_ENABLE Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 23/37] vhost-pci-slave/msg: VHOST_USER_SET_LOG_BASE Wei Wang
2016-12-19  5:58 ` [Qemu-devel] [RESEND Patch v1 24/37] vhost-pci-slave/msg: VHOST_USER_SET_LOG_FD Wei Wang
2016-12-19  5:59 ` [Qemu-devel] [RESEND Patch v1 25/37] vhost-pci-slave/msg: VHOST_USER_SEND_RARP Wei Wang
2016-12-19  5:59 ` [Qemu-devel] [RESEND Patch v1 26/37] vhost-pci-slave/msg: VHOST_USER_GET_VRING_BASE Wei Wang
2016-12-19  5:59 ` [Qemu-devel] [RESEND Patch v1 27/37] vhost-pci-net: pass the info collected by vp_slave to the device Wei Wang
2016-12-19  5:59 ` [Qemu-devel] [RESEND Patch v1 28/37] vhost-pci-net: pass the mem and vring info to the driver Wei Wang
2016-12-19  5:59 ` [Qemu-devel] [RESEND Patch v1 29/37] vhost-pci-slave/msg: VHOST_USER_SET_VHOST_PCI (start) Wei Wang
2016-12-19  5:59 ` [Qemu-devel] [RESEND Patch v1 30/37] vhost-pci-slave/msg: VHOST_USER_SET_VHOST_PCI (stop) Wei Wang
2016-12-19  5:59 ` [Qemu-devel] [RESEND Patch v1 31/37] vhost-user/msg: send VHOST_USER_SET_VHOST_PCI (start/stop) Wei Wang
2016-12-19  5:59 ` [Qemu-devel] [RESEND Patch v1 32/37] vhost-user: add asynchronous read for the vhost-user master Wei Wang
2016-12-19  5:59 ` [Qemu-devel] [RESEND Patch v1 33/37] vhost-pci-net: send the negotiated feature bits to the master Wei Wang
2016-12-19  5:59 ` [Qemu-devel] [RESEND Patch v1 34/37] vhost-pci-slave: add "peer_reset" Wei Wang
2016-12-19  5:59 ` [Qemu-devel] [RESEND Patch v1 35/37] vhost-pci-net: start the vhost-pci-net device Wei Wang
2016-12-19  5:59 ` [Qemu-devel] [RESEND Patch v1 36/37] vhost-user/msg: handling VHOST_USER_SET_FEATURES Wei Wang
2016-12-19  8:28   ` Wei Wang
2016-12-19  5:59 ` [Qemu-devel] [RESEND Patch v1 37/37] vl: enable vhost-pci-slave Wei Wang
2016-12-19  7:17 ` [Qemu-devel] [RESEND Patch v1 00/37] Implementation of vhost-pci for inter-vm commucation no-reply
2016-12-19 16:43 ` Marc-André Lureau
2016-12-20  4:32   ` Wei Wang
2016-12-20  7:22     ` [Qemu-devel] [virtio-dev] " Wei Wang
2017-01-09  5:13     ` Wei Wang [this message]
2017-01-05  7:34   ` [Qemu-devel] " Wei Wang
2017-01-05  7:47     ` [Qemu-devel] [virtio-dev] " Wei Wang

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=58731C03.3040002@intel.com \
    --to=wei.w.wang@intel.com \
    --cc=marcandre.lureau@gmail.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 \
    /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).