All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kirti Wankhede <kwankhede@nvidia.com>
To: Yan Zhao <yan.y.zhao@intel.com>
Cc: "Zhengxiao.zx@Alibaba-inc.com" <Zhengxiao.zx@Alibaba-inc.com>,
	"Tian, Kevin" <kevin.tian@intel.com>,
	"Liu, Yi L" <yi.l.liu@intel.com>,
	"cjia@nvidia.com" <cjia@nvidia.com>,
	"eskultet@redhat.com" <eskultet@redhat.com>,
	"Yang, Ziye" <ziye.yang@intel.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"cohuck@redhat.com" <cohuck@redhat.com>,
	"shuangtai.tst@alibaba-inc.com" <shuangtai.tst@alibaba-inc.com>,
	"dgilbert@redhat.com" <dgilbert@redhat.com>,
	"Wang,  Zhi A" <zhi.a.wang@intel.com>,
	"mlevitsk@redhat.com" <mlevitsk@redhat.com>,
	"pasic@linux.ibm.com" <pasic@linux.ibm.com>,
	"aik@ozlabs.ru" <aik@ozlabs.ru>,
	"alex.williamson@redhat.com" <alex.williamson@redhat.com>,
	"eauger@redhat.com" <eauger@redhat.com>,
	"felipe@nutanix.com" <felipe@nutanix.com>,
	"jonathan.davies@nutanix.com" <jonathan.davies@nutanix.com>,
	"Liu, Changpeng" <changpeng.liu@intel.com>,
	"Ken.Xue@amd.com" <Ken.Xue@amd.com>
Subject: Re: [Qemu-devel] [PATCH v7 07/13] vfio: Add migration state change notifier
Date: Wed, 21 Aug 2019 01:54:27 +0530	[thread overview]
Message-ID: <4dfe05df-288c-9840-ddfa-347cb9fa1ac0@nvidia.com> (raw)
In-Reply-To: <20190717022513.GD8912@joy-OptiPlex-7040>



On 7/17/2019 7:55 AM, Yan Zhao wrote:
> On Tue, Jul 09, 2019 at 05:49:14PM +0800, Kirti Wankhede wrote:
>> Added migration state change notifier to get notification on migration state
>> change. These states are translated to VFIO device state and conveyed to vendor
>> driver.
>>
>> Signed-off-by: Kirti Wankhede <kwankhede@nvidia.com>
>> Reviewed-by: Neo Jia <cjia@nvidia.com>
>> ---
>>  hw/vfio/migration.c           | 54 +++++++++++++++++++++++++++++++++++++++++++
>>  hw/vfio/trace-events          |  1 +
>>  include/hw/vfio/vfio-common.h |  1 +
>>  3 files changed, 56 insertions(+)
>>
>> diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c
>> index c01f08b659d0..e4a89a6f9bc7 100644
>> --- a/hw/vfio/migration.c
>> +++ b/hw/vfio/migration.c
>> @@ -132,6 +132,53 @@ static void vfio_vmstate_change(void *opaque, int running, RunState state)
>>      }
>>  }
>>  
>> +static void vfio_migration_state_notifier(Notifier *notifier, void *data)
>> +{
>> +    MigrationState *s = data;
>> +    VFIODevice *vbasedev = container_of(notifier, VFIODevice, migration_state);
>> +    int ret;
>> +
>> +    trace_vfio_migration_state_notifier(vbasedev->name, s->state);
>> +
>> +    switch (s->state) {
>> +    case MIGRATION_STATUS_ACTIVE:
>> +        if (vbasedev->device_state & VFIO_DEVICE_STATE_RUNNING) {
>> +            if (vbasedev->vm_running) {
>> +                ret = vfio_migration_set_state(vbasedev,
>> +                          VFIO_DEVICE_STATE_RUNNING | VFIO_DEVICE_STATE_SAVING);
>> +                if (ret) {
>> +                    error_report("%s: Failed to set state RUNNING and SAVING",
>> +                                  vbasedev->name);
>> +                }
>> +            } else {
>> +                ret = vfio_migration_set_state(vbasedev,
>> +                                               VFIO_DEVICE_STATE_SAVING);
>> +                if (ret) {
>> +                    error_report("%s: Failed to set state STOP and SAVING",
>> +                                 vbasedev->name);
>> +                }
>> +            }
>> +        } else {
>> +            ret = vfio_migration_set_state(vbasedev,
>> +                                           VFIO_DEVICE_STATE_RESUMING);
>> +            if (ret) {
>> +                error_report("%s: Failed to set state RESUMING",
>> +                             vbasedev->name);
>> +            }
>> +        }
>> +        return;
>> +
> hi Kirti
> currently, migration state notifiers are only notified in below 3 interfaces:
> migrate_fd_connect, migrate_fd_cleanup, postcopy_start, where
> MIGRATION_STATUS_ACTIVE is not an valid state.
> Have you tested the above code? what's the purpose of the code?
> 

Sorry for delayed response.

migration_iteration_finish() -> qemu_bh_schedule(s->cleanup_bh) which is
migrate_fd_cleanup().

migration_iteration_finish() can be called with MIGRATION_STATUS_ACTIVE
state. So migration state notifiers can be called with
MIGRATION_STATUS_ACTIVE. So handled that case here.


Thanks,
Kirti


> Thanks
> Yan
> 
>> +    case MIGRATION_STATUS_CANCELLING:
>> +    case MIGRATION_STATUS_CANCELLED:
>> +    case MIGRATION_STATUS_FAILED:
>> +        ret = vfio_migration_set_state(vbasedev, VFIO_DEVICE_STATE_RUNNING);
>> +        if (ret) {
>> +            error_report("%s: Failed to set state RUNNING", vbasedev->name);
>> +        }
>> +        return;
>> +    }
>> +}
>> +
>>  static int vfio_migration_init(VFIODevice *vbasedev,
>>                                 struct vfio_region_info *info)
>>  {
>> @@ -152,6 +199,9 @@ static int vfio_migration_init(VFIODevice *vbasedev,
>>      vbasedev->vm_state = qemu_add_vm_change_state_handler(vfio_vmstate_change,
>>                                                            vbasedev);
>>  
>> +    vbasedev->migration_state.notify = vfio_migration_state_notifier;
>> +    add_migration_state_change_notifier(&vbasedev->migration_state);
>> +
>>      return 0;
>>  }
>>  
>> @@ -194,6 +244,10 @@ void vfio_migration_finalize(VFIODevice *vbasedev)
>>          return;
>>      }
>>  
>> +    if (vbasedev->migration_state.notify) {
>> +        remove_migration_state_change_notifier(&vbasedev->migration_state);
>> +    }
>> +
>>      if (vbasedev->vm_state) {
>>          qemu_del_vm_change_state_handler(vbasedev->vm_state);
>>      }
>> diff --git a/hw/vfio/trace-events b/hw/vfio/trace-events
>> index 3d15bacd031a..69503228f20e 100644
>> --- a/hw/vfio/trace-events
>> +++ b/hw/vfio/trace-events
>> @@ -148,3 +148,4 @@ vfio_display_edid_write_error(void) ""
>>  vfio_migration_probe(char *name, uint32_t index) " (%s) Region %d"
>>  vfio_migration_set_state(char *name, uint32_t state) " (%s) state %d"
>>  vfio_vmstate_change(char *name, int running, const char *reason, uint32_t dev_state) " (%s) running %d reason %s device state %d"
>> +vfio_migration_state_notifier(char *name, int state) " (%s) state %d"
>> diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
>> index f6c70db3a9c1..a022484d2636 100644
>> --- a/include/hw/vfio/vfio-common.h
>> +++ b/include/hw/vfio/vfio-common.h
>> @@ -128,6 +128,7 @@ typedef struct VFIODevice {
>>      uint32_t device_state;
>>      VMChangeStateEntry *vm_state;
>>      int vm_running;
>> +    Notifier migration_state;
>>  } VFIODevice;
>>  
>>  struct VFIODeviceOps {
>> -- 
>> 2.7.0
>>


  reply	other threads:[~2019-08-20 20:25 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-09  9:49 [Qemu-devel] [PATCH v7 00/13] Add migration support for VFIO device Kirti Wankhede
2019-07-09  9:49 ` [Qemu-devel] [PATCH v7 01/13] vfio: KABI for migration interface Kirti Wankhede
2019-07-16 20:56   ` Alex Williamson
2019-07-17 11:55     ` Cornelia Huck
2019-07-23 12:13     ` Cornelia Huck
2019-08-21 20:32       ` Kirti Wankhede
2019-08-21 20:31     ` Kirti Wankhede
2019-07-09  9:49 ` [Qemu-devel] [PATCH v7 02/13] vfio: Add function to unmap VFIO region Kirti Wankhede
2019-07-16 16:29   ` Cornelia Huck
2019-07-18 18:54     ` Kirti Wankhede
2019-07-09  9:49 ` [Qemu-devel] [PATCH v7 03/13] vfio: Add vfio_get_object callback to VFIODeviceOps Kirti Wankhede
2019-07-16 16:32   ` Cornelia Huck
2019-07-09  9:49 ` [Qemu-devel] [PATCH v7 04/13] vfio: Add save and load functions for VFIO PCI devices Kirti Wankhede
2019-07-11 12:07   ` Dr. David Alan Gilbert
2019-08-22  4:50     ` Kirti Wankhede
2019-08-22  9:32       ` Dr. David Alan Gilbert
2019-08-22 19:10         ` Kirti Wankhede
2019-08-22 19:13           ` Dr. David Alan Gilbert
2019-08-22 23:57             ` Tian, Kevin
2019-08-23  9:26               ` Dr. David Alan Gilbert
2019-08-23  9:49                 ` Tian, Kevin
2019-07-16 21:14   ` Alex Williamson
2019-07-17  9:10     ` Dr. David Alan Gilbert
2019-07-09  9:49 ` [Qemu-devel] [PATCH v7 05/13] vfio: Add migration region initialization and finalize function Kirti Wankhede
2019-07-16 21:37   ` Alex Williamson
2019-07-18 20:19     ` Kirti Wankhede
2019-07-23 12:52   ` Cornelia Huck
2019-07-09  9:49 ` [Qemu-devel] [PATCH v7 06/13] vfio: Add VM state change handler to know state of VM Kirti Wankhede
2019-07-11 12:13   ` Dr. David Alan Gilbert
2019-07-11 19:14     ` Kirti Wankhede
2019-07-22  8:23       ` Yan Zhao
2019-08-20 20:31         ` Kirti Wankhede
2019-07-16 22:03   ` Alex Williamson
2019-07-22  8:37   ` Yan Zhao
2019-08-20 20:33     ` Kirti Wankhede
2019-08-23  1:32       ` Yan Zhao
2019-07-09  9:49 ` [Qemu-devel] [PATCH v7 07/13] vfio: Add migration state change notifier Kirti Wankhede
2019-07-17  2:25   ` Yan Zhao
2019-08-20 20:24     ` Kirti Wankhede [this message]
2019-08-23  0:54       ` Yan Zhao
2019-07-09  9:49 ` [Qemu-devel] [PATCH v7 08/13] vfio: Register SaveVMHandlers for VFIO device Kirti Wankhede
2019-07-22  8:34   ` Yan Zhao
2019-08-20 20:33     ` Kirti Wankhede
2019-08-23  1:23       ` Yan Zhao
2019-07-09  9:49 ` [Qemu-devel] [PATCH v7 09/13] vfio: Add save state functions to SaveVMHandlers Kirti Wankhede
2019-07-12  2:44   ` Yan Zhao
2019-07-18 18:45     ` Kirti Wankhede
2019-07-17  2:50   ` Yan Zhao
2019-08-20 20:30     ` Kirti Wankhede
2019-07-09  9:49 ` [Qemu-devel] [PATCH v7 10/13] vfio: Add load " Kirti Wankhede
2019-07-12  2:52   ` Yan Zhao
2019-07-18 19:00     ` Kirti Wankhede
2019-07-22  3:20       ` Yan Zhao
2019-07-22 19:07         ` Alex Williamson
2019-07-22 21:50           ` Yan Zhao
2019-08-20 20:35             ` Kirti Wankhede
2019-07-09  9:49 ` [Qemu-devel] [PATCH v7 11/13] vfio: Add function to get dirty page list Kirti Wankhede
2019-07-12  0:33   ` Yan Zhao
2019-07-18 18:39     ` Kirti Wankhede
2019-07-19  1:24       ` Yan Zhao
2019-07-22  8:39   ` Yan Zhao
2019-08-20 20:34     ` Kirti Wankhede
2019-07-09  9:49 ` [Qemu-devel] [PATCH v7 12/13] vfio: Add vfio_listerner_log_sync to mark dirty pages Kirti Wankhede
2019-07-23 13:18   ` Cornelia Huck
2019-07-09  9:49 ` [Qemu-devel] [PATCH v7 13/13] vfio: Make vfio-pci device migration capable Kirti Wankhede
2019-07-11  2:55 ` [Qemu-devel] [PATCH v7 00/13] Add migration support for VFIO device Yan Zhao
2019-07-11 10:50   ` Dr. David Alan Gilbert
2019-07-11 11:47     ` Yan Zhao
2019-07-11 16:23       ` Dr. David Alan Gilbert
2019-07-11 19:08         ` Kirti Wankhede
2019-07-12  0:32           ` Yan Zhao
2019-07-18 18:32             ` Kirti Wankhede
2019-07-19  1:23               ` Yan Zhao
2019-07-24 11:32                 ` Dr. David Alan Gilbert
2019-07-12 17:42           ` Dr. David Alan Gilbert
2019-07-15  0:35             ` Yan Zhao
2019-07-12  0:14         ` Yan Zhao

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=4dfe05df-288c-9840-ddfa-347cb9fa1ac0@nvidia.com \
    --to=kwankhede@nvidia.com \
    --cc=Ken.Xue@amd.com \
    --cc=Zhengxiao.zx@Alibaba-inc.com \
    --cc=aik@ozlabs.ru \
    --cc=alex.williamson@redhat.com \
    --cc=changpeng.liu@intel.com \
    --cc=cjia@nvidia.com \
    --cc=cohuck@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=eauger@redhat.com \
    --cc=eskultet@redhat.com \
    --cc=felipe@nutanix.com \
    --cc=jonathan.davies@nutanix.com \
    --cc=kevin.tian@intel.com \
    --cc=mlevitsk@redhat.com \
    --cc=pasic@linux.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=shuangtai.tst@alibaba-inc.com \
    --cc=yan.y.zhao@intel.com \
    --cc=yi.l.liu@intel.com \
    --cc=zhi.a.wang@intel.com \
    --cc=ziye.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: 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.