On Tue, 5 May 2020 04:14:42 +0530 Kirti Wankhede <kwankh...@nvidia.com> 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 <kwankh...@nvidia.com> > Reviewed-by: Neo Jia <c...@nvidia.com> > --- > hw/vfio/migration.c | 30 ++++++++++++++++++++++++++++++ > hw/vfio/trace-events | 5 +++-- > include/hw/vfio/vfio-common.h | 1 + > 3 files changed, 34 insertions(+), 2 deletions(-) > > diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c > index e79b34003079..c2f5564b51c3 100644 > --- a/hw/vfio/migration.c > +++ b/hw/vfio/migration.c > @@ -154,6 +154,28 @@ 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, > + MigrationStatus_str(s->state)); > + > + switch (s->state) { > + case MIGRATION_STATUS_CANCELLING: > + case MIGRATION_STATUS_CANCELLED: > + case MIGRATION_STATUS_FAILED: > + ret = vfio_migration_set_state(vbasedev, > + ~(VFIO_DEVICE_STATE_SAVING | > VFIO_DEVICE_STATE_RESUMING), > + VFIO_DEVICE_STATE_RUNNING); > + if (ret) { > + error_report("%s: Failed to set state RUNNING", vbasedev->name); > + } What is the actually desired state transition here? Again, I find the interface hard to read... and my comments regarding state propagation and error states from the previous patch apply here as well. > + } > +} > +