All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Wang <jasowang@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Thibaut Collet <thibaut.collet@6wind.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v3 2/2] vhost user: Add RARP injection for legacy guest
Date: Wed, 24 Jun 2015 16:31:15 +0800	[thread overview]
Message-ID: <558A6AD3.2090005@redhat.com> (raw)
In-Reply-To: <20150623073410-mutt-send-email-mst@redhat.com>



On 06/23/2015 01:49 PM, Michael S. Tsirkin wrote:
> On Tue, Jun 23, 2015 at 10:12:17AM +0800, Jason Wang wrote:
>> > 
>> > 
>> > On 06/18/2015 11:16 PM, Thibaut Collet wrote:
>>> > > On Tue, Jun 16, 2015 at 10:05 AM, Jason Wang <jasowang@redhat.com> wrote:
>>>> > >>
>>>> > >> On 06/16/2015 03:24 PM, Thibaut Collet wrote:
>>>>> > >>> If my understanding is correct, on a resume operation, we have the
>>>>> > >>> following callback trace:
>>>>> > >>> 1. virtio_pci_restore function that calls all restore call back of
>>>>> > >>> virtio devices
>>>>> > >>> 2. virtnet_restore that calls try_fill_recv function for each virtual queues
>>>>> > >>> 3. try_fill_recv function kicks the virtual queue (through
>>>>> > >>> virtqueue_kick function)
>>>> > >> Yes, but this happens only after pm resume not migration. Migration is
>>>> > >> totally transparent to guest.
>>>> > >>
>>> > > Hi Jason,
>>> > >
>>> > > After a deeper look in the migration code of QEMU a resume event is
>>> > > always sent when the live migration is finished.
>>> > > On a live migration we have the following callback trace:
>>> > > 1. The VM on the new host is set to the state RUN_STATE_INMIGRATE, the
>>> > > autostart boolean to 1  and calls the qemu_start_incoming_migration
>>> > > function (see function main of vl.c)
>>> > > .....
>>> > > 2. call of process_incoming_migration function in
>>> > > migration/migration.c file whatever the way to do the live migration
>>> > > (tcp:, fd:, unix:, exec: ...)
>>> > > 3. call of process_incoming_migration_co function in migration/migration.c
>>> > > 4. call of vm_start function in vl.c (otherwise the migrated VM stay
>>> > > in the pause state, the autostart boolean is set to 1 by the main
>>> > > function in vl.c)
>>> > > 5. call of vm_start function that sets the VM is the RUN_STATE_RUNNING state.
>>> > > 6. call of qapi_event_send_resume function that ends a resume event to the VM
>> > 
>> > AFAIK, this function sends resume event to qemu monitor not VM.
>> > 
>>> > >
>>> > > So when a live migration is ended:
>>> > > 1. a resume event is sent to the guest
>>> > > 2. On the reception of this resume event the virtual queue are kicked
>>> > > by the guest
>>> > > 3. Backend vhost user catches this kick and can emit a RARP to guest
>>> > > that does not support GUEST_ANNOUNCE
>>> > >
>>> > > This solution, as solution based on detection of DRIVER_OK status
>>> > > suggested by Michael, allows backend to send the RARP to legacy guest
>>> > > without involving QEMU and add ioctl to vhost-user.
>> > 
>> > A question here is did vhost-user code pass status to the backend? If
>> > not, how can userspace backend detect DRIVER_OK?
> Sorry, I must have been unclear.
> vhost core calls VHOST_NET_SET_BACKEND on DRIVER_OK.
> Unfortunately vhost user currently translates it to VHOST_USER_NONE.

Looks like VHOST_NET_SET_BACKEND was only used for tap backend.

> As a work around, I think kicking ioeventfds once you get
> VHOST_NET_SET_BACKEND will work.

Maybe just a eventfd_set() in vhost_net_start(). But is this
"workaround" elegant enough to be documented? Is it better to do this
explicitly with a new feature?

  reply	other threads:[~2015-06-24  8:31 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-10 13:43 [Qemu-devel] [PATCH v3 0/2] Add live migration for vhost user Thibaut Collet
2015-06-10 13:43 ` [Qemu-devel] [PATCH v3 1/2] vhost user: add support of live migration Thibaut Collet
2015-06-10 13:52   ` Michael S. Tsirkin
2015-06-10 14:22     ` Thibaut Collet
2015-06-10 14:27       ` Michael S. Tsirkin
2015-06-10 15:24         ` Thibaut Collet
2015-06-10 15:34     ` Stefan Hajnoczi
2015-06-23  6:01   ` Michael S. Tsirkin
2015-06-10 13:43 ` [Qemu-devel] [PATCH v3 2/2] vhost user: Add RARP injection for legacy guest Thibaut Collet
2015-06-10 15:34   ` Michael S. Tsirkin
2015-06-10 15:48     ` Thibaut Collet
2015-06-10 16:00       ` Michael S. Tsirkin
2015-06-10 20:25         ` Thibaut Collet
2015-06-10 20:50           ` Michael S. Tsirkin
2015-06-11  5:34             ` Thibaut Collet
2015-06-11  5:39           ` Jason Wang
2015-06-11  5:49             ` Thibaut Collet
2015-06-11  5:54               ` Jason Wang
2015-06-11 10:38                 ` Michael S. Tsirkin
2015-06-11 12:10                   ` Thibaut Collet
2015-06-11 12:13                     ` Michael S. Tsirkin
2015-06-11 12:33                       ` Thibaut Collet
2015-06-12  7:55                       ` Jason Wang
2015-06-12 11:53                         ` Thibaut Collet
2015-06-12 14:28                         ` Michael S. Tsirkin
2015-06-15  7:43                           ` Jason Wang
2015-06-15  8:44                             ` Michael S. Tsirkin
2015-06-15 12:12                               ` Thibaut Collet
2015-06-15 12:45                                 ` Michael S. Tsirkin
2015-06-15 13:04                                   ` Thibaut Collet
2015-06-16  5:29                                 ` Jason Wang
2015-06-16  7:24                                   ` Thibaut Collet
2015-06-16  8:05                                     ` Jason Wang
2015-06-16  8:16                                       ` Thibaut Collet
2015-06-17  4:16                                         ` Jason Wang
2015-06-17  6:42                                           ` Michael S. Tsirkin
2015-06-17  7:05                                             ` Thibaut Collet
2015-06-18 15:16                                       ` Thibaut Collet
2015-06-23  2:12                                         ` Jason Wang
2015-06-23  5:49                                           ` Michael S. Tsirkin
2015-06-24  8:31                                             ` Jason Wang [this message]
2015-06-24 11:05                                               ` Michael S. Tsirkin
2015-06-25  9:59                                                 ` Jason Wang
2015-06-25 11:01                                                   ` Thibaut Collet
2015-06-25 12:53                                                     ` Michael S. Tsirkin
2015-06-25 14:22                                                       ` Thibaut Collet
2015-06-26  4:06                                                         ` Jason Wang
2015-06-16  3:35                               ` Jason 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=558A6AD3.2090005@redhat.com \
    --to=jasowang@redhat.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=thibaut.collet@6wind.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 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.