From: Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>
To: Max Gurtovoy <mgurtovoy@nvidia.com>, Leon Romanovsky <leon@kernel.org>
Cc: Doug Ledford <dledford@redhat.com>,
Jason Gunthorpe <jgg@nvidia.com>,
Yishai Hadas <yishaih@nvidia.com>,
Alex Williamson <alex.williamson@redhat.com>,
Bjorn Helgaas <bhelgaas@google.com>,
"David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
"Kirti Wankhede" <kwankhede@nvidia.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
"linux-rdma@vger.kernel.org" <linux-rdma@vger.kernel.org>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
Saeed Mahameed <saeedm@nvidia.com>,
liulongfang <liulongfang@huawei.com>
Subject: RE: [PATCH mlx5-next 2/7] vfio: Add an API to check migration state transition validity
Date: Sun, 26 Sep 2021 16:17:07 +0000 [thread overview]
Message-ID: <85743eabdae04d08bb5eba7b6857496e@huawei.com> (raw)
In-Reply-To: <078fc846-1f72-adc0-339c-1b638c6c6e33@nvidia.com>
> -----Original Message-----
> From: Max Gurtovoy [mailto:mgurtovoy@nvidia.com]
> Sent: 26 September 2021 10:10
> To: Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>;
> Leon Romanovsky <leon@kernel.org>
> Cc: Doug Ledford <dledford@redhat.com>; Jason Gunthorpe
> <jgg@nvidia.com>; Yishai Hadas <yishaih@nvidia.com>; Alex Williamson
> <alex.williamson@redhat.com>; Bjorn Helgaas <bhelgaas@google.com>; David
> S. Miller <davem@davemloft.net>; Jakub Kicinski <kuba@kernel.org>; Kirti
> Wankhede <kwankhede@nvidia.com>; kvm@vger.kernel.org;
> linux-kernel@vger.kernel.org; linux-pci@vger.kernel.org;
> linux-rdma@vger.kernel.org; netdev@vger.kernel.org; Saeed Mahameed
> <saeedm@nvidia.com>; liulongfang <liulongfang@huawei.com>
> Subject: Re: [PATCH mlx5-next 2/7] vfio: Add an API to check migration state
> transition validity
>
>
> On 9/24/2021 10:44 AM, Shameerali Kolothum Thodi wrote:
> >
> >> -----Original Message-----
> >> From: Max Gurtovoy [mailto:mgurtovoy@nvidia.com]
> >> Sent: 23 September 2021 14:56
> >> To: Leon Romanovsky <leon@kernel.org>; Shameerali Kolothum Thodi
> >> <shameerali.kolothum.thodi@huawei.com>
> >> Cc: Doug Ledford <dledford@redhat.com>; Jason Gunthorpe
> >> <jgg@nvidia.com>; Yishai Hadas <yishaih@nvidia.com>; Alex Williamson
> >> <alex.williamson@redhat.com>; Bjorn Helgaas <bhelgaas@google.com>;
> >> David S. Miller <davem@davemloft.net>; Jakub Kicinski
> >> <kuba@kernel.org>; Kirti Wankhede <kwankhede@nvidia.com>;
> >> kvm@vger.kernel.org; linux-kernel@vger.kernel.org;
> >> linux-pci@vger.kernel.org; linux-rdma@vger.kernel.org;
> >> netdev@vger.kernel.org; Saeed Mahameed <saeedm@nvidia.com>
> >> Subject: Re: [PATCH mlx5-next 2/7] vfio: Add an API to check
> >> migration state transition validity
> >>
> >>
> >> On 9/23/2021 2:17 PM, Leon Romanovsky wrote:
> >>> On Thu, Sep 23, 2021 at 10:33:10AM +0000, Shameerali Kolothum Thodi
> >> wrote:
> >>>>> -----Original Message-----
> >>>>> From: Leon Romanovsky [mailto:leon@kernel.org]
> >>>>> Sent: 22 September 2021 11:39
> >>>>> To: Doug Ledford <dledford@redhat.com>; Jason Gunthorpe
> >> <jgg@nvidia.com>
> >>>>> Cc: Yishai Hadas <yishaih@nvidia.com>; Alex Williamson
> >>>>> <alex.williamson@redhat.com>; Bjorn Helgaas <bhelgaas@google.com>;
> >> David
> >>>>> S. Miller <davem@davemloft.net>; Jakub Kicinski <kuba@kernel.org>;
> >>>>> Kirti Wankhede <kwankhede@nvidia.com>; kvm@vger.kernel.org;
> >>>>> linux-kernel@vger.kernel.org; linux-pci@vger.kernel.org;
> >>>>> linux-rdma@vger.kernel.org; netdev@vger.kernel.org; Saeed Mahameed
> >>>>> <saeedm@nvidia.com>
> >>>>> Subject: [PATCH mlx5-next 2/7] vfio: Add an API to check migration
> >>>>> state transition validity
> >>>>>
> >>>>> From: Yishai Hadas <yishaih@nvidia.com>
> >>>>>
> >>>>> Add an API in the core layer to check migration state transition
> >>>>> validity as part of a migration flow.
> >>>>>
> >>>>> The valid transitions follow the expected usage as described in
> >>>>> uapi/vfio.h and triggered by QEMU.
> >>>>>
> >>>>> This ensures that all migration implementations follow a
> >>>>> consistent migration state machine.
> >>>>>
> >>>>> Signed-off-by: Yishai Hadas <yishaih@nvidia.com>
> >>>>> Reviewed-by: Kirti Wankhede <kwankhede@nvidia.com>
> >>>>> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
> >>>>> Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
> >>>>> ---
> >>>>> drivers/vfio/vfio.c | 41
> >> +++++++++++++++++++++++++++++++++++++++++
> >>>>> include/linux/vfio.h | 1 +
> >>>>> 2 files changed, 42 insertions(+)
> >>>>>
> >>>>> diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c index
> >>>>> 3c034fe14ccb..c3ca33e513c8 100644
> >>>>> --- a/drivers/vfio/vfio.c
> >>>>> +++ b/drivers/vfio/vfio.c
> >>>>> @@ -1664,6 +1664,47 @@ static int vfio_device_fops_release(struct
> >> inode
> >>>>> *inode, struct file *filep)
> >>>>> return 0;
> >>>>> }
> >>>>>
> >>>>> +/**
> >>>>> + * vfio_change_migration_state_allowed - Checks whether a
> >>>>> +migration
> >> state
> >>>>> + * transition is valid.
> >>>>> + * @new_state: The new state to move to.
> >>>>> + * @old_state: The old state.
> >>>>> + * Return: true if the transition is valid.
> >>>>> + */
> >>>>> +bool vfio_change_migration_state_allowed(u32 new_state, u32
> >> old_state)
> >>>>> +{
> >>>>> + enum { MAX_STATE = VFIO_DEVICE_STATE_RESUMING };
> >>>>> + static const u8 vfio_from_state_table[MAX_STATE + 1][MAX_STATE +
> >> 1] = {
> >>>>> + [VFIO_DEVICE_STATE_STOP] = {
> >>>>> + [VFIO_DEVICE_STATE_RUNNING] = 1,
> >>>>> + [VFIO_DEVICE_STATE_RESUMING] = 1,
> >>>>> + },
> >>>>> + [VFIO_DEVICE_STATE_RUNNING] = {
> >>>>> + [VFIO_DEVICE_STATE_STOP] = 1,
> >>>>> + [VFIO_DEVICE_STATE_SAVING] = 1,
> >>>>> + [VFIO_DEVICE_STATE_SAVING |
> >> VFIO_DEVICE_STATE_RUNNING]
> >>>>> = 1,
> >>>> Do we need to allow _RESUMING state here or not? As per the "State
> >> transitions"
> >>>> section from uapi/linux/vfio.h,
> >>> It looks like we missed this state transition.
> >>>
> >>> Thanks
> >> I'm not sure this state transition is valid.
> >>
> >> Kirti, When we would like to move from RUNNING to RESUMING ?
> > I guess it depends on what you report as your dev default state.
> >
> > For HiSilicon ACC migration driver, we set the default to _RUNNING.
>
> Where do you set it and report it ?
Currently, in _open_device() we set the device_state to _RUNNING.
I think in your case the default of vmig->vfio_dev_state == 0 (_STOP).
>
> >
> > And when the migration starts, the destination side Qemu, set the
> > device state to _RESUMING(vfio_load_state()).
> >
> > From the documentation, it looks like the assumption on default state
> > of the VFIO dev is _RUNNING.
> >
> > "
> > * 001b => Device running, which is the default state "
> >
> >> Sameerali, can you please re-test and update if you see this transition ?
> > Yes. And if I change the default state to _STOP, then the transition
> > is from _STOP --> _RESUMING.
> >
> > But the documentation on State transitions doesn't have _STOP -->
> > _RESUMING transition as valid.
> >
> > Thanks,
> > Shameer
> >
> >>
> >>>> " * 4. To start the resuming phase, the device state should be
> >>>> transitioned
> >> from
> >>>> * the _RUNNING to the _RESUMING state."
> >>>>
> >>>> IIRC, I have seen that transition happening on the destination dev
> >>>> while
> >> testing the
> >>>> HiSilicon ACC dev migration.
> >>>>
> >>>> Thanks,
> >>>> Shameer
> >>>>
> >>>>> + },
> >>>>> + [VFIO_DEVICE_STATE_SAVING] = {
> >>>>> + [VFIO_DEVICE_STATE_STOP] = 1,
> >>>>> + [VFIO_DEVICE_STATE_RUNNING] = 1,
> >>>>> + },
> >>>>> + [VFIO_DEVICE_STATE_SAVING | VFIO_DEVICE_STATE_RUNNING]
> >> = {
> >>>>> + [VFIO_DEVICE_STATE_RUNNING] = 1,
> >>>>> + [VFIO_DEVICE_STATE_SAVING] = 1,
> >>>>> + },
> >>>>> + [VFIO_DEVICE_STATE_RESUMING] = {
> >>>>> + [VFIO_DEVICE_STATE_RUNNING] = 1,
> >>>>> + [VFIO_DEVICE_STATE_STOP] = 1,
> >>>>> + },
> >>>>> + };
> >>>>> +
> >>>>> + if (new_state > MAX_STATE || old_state > MAX_STATE)
> >>>>> + return false;
> >>>>> +
> >>>>> + return vfio_from_state_table[old_state][new_state];
> >>>>> +}
> >>>>> +EXPORT_SYMBOL_GPL(vfio_change_migration_state_allowed);
> >>>>> +
> >>>>> static long vfio_device_fops_unl_ioctl(struct file *filep,
> >>>>> unsigned int cmd, unsigned long arg)
> >>>>> {
> >>>>> diff --git a/include/linux/vfio.h b/include/linux/vfio.h index
> >>>>> b53a9557884a..e65137a708f1 100644
> >>>>> --- a/include/linux/vfio.h
> >>>>> +++ b/include/linux/vfio.h
> >>>>> @@ -83,6 +83,7 @@ extern struct vfio_device
> >>>>> *vfio_device_get_from_dev(struct device *dev);
> >>>>> extern void vfio_device_put(struct vfio_device *device);
> >>>>>
> >>>>> int vfio_assign_device_set(struct vfio_device *device, void
> >>>>> *set_id);
> >>>>> +bool vfio_change_migration_state_allowed(u32 new_state, u32
> >> old_state);
> >>>>> /* events for the backend driver notify callback */
> >>>>> enum vfio_iommu_notify_type {
> >>>>> --
> >>>>> 2.31.1
next prev parent reply other threads:[~2021-09-26 16:17 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-22 10:38 [PATCH mlx5-next 0/7] Add mlx5 live migration driver Leon Romanovsky
2021-09-22 10:38 ` [PATCH mlx5-next 1/7] PCI/IOV: Provide internal VF index Leon Romanovsky
2021-09-22 21:59 ` Bjorn Helgaas
2021-09-23 6:35 ` Leon Romanovsky
2021-09-24 13:08 ` Bjorn Helgaas
2021-09-25 10:10 ` Leon Romanovsky
2021-09-25 17:41 ` Bjorn Helgaas
2021-09-26 6:36 ` Leon Romanovsky
2021-09-26 20:23 ` Bjorn Helgaas
2021-09-27 11:55 ` Leon Romanovsky
2021-09-27 14:47 ` Bjorn Helgaas
2021-09-22 10:38 ` [PATCH mlx5-next 2/7] vfio: Add an API to check migration state transition validity Leon Romanovsky
2021-09-23 10:33 ` Shameerali Kolothum Thodi
2021-09-23 11:17 ` Leon Romanovsky
2021-09-23 13:55 ` Max Gurtovoy
2021-09-24 7:44 ` Shameerali Kolothum Thodi
2021-09-24 9:37 ` Kirti Wankhede
2021-09-26 9:09 ` Max Gurtovoy
2021-09-26 16:17 ` Shameerali Kolothum Thodi [this message]
2021-09-27 18:24 ` Max Gurtovoy
2021-09-27 18:29 ` Shameerali Kolothum Thodi
2021-09-27 22:46 ` Alex Williamson
2021-09-27 23:12 ` Jason Gunthorpe
2021-09-28 19:19 ` Alex Williamson
2021-09-28 19:35 ` Jason Gunthorpe
2021-09-28 20:18 ` Alex Williamson
2021-09-29 16:16 ` Jason Gunthorpe
2021-09-29 18:06 ` Alex Williamson
2021-09-29 18:26 ` Jason Gunthorpe
2021-09-29 10:57 ` Max Gurtovoy
2021-09-29 10:44 ` Max Gurtovoy
2021-09-29 12:35 ` Alex Williamson
2021-09-29 13:26 ` Max Gurtovoy
2021-09-29 13:50 ` Alex Williamson
2021-09-29 14:36 ` Max Gurtovoy
2021-09-29 15:17 ` Alex Williamson
2021-09-29 15:28 ` Max Gurtovoy
2021-09-29 16:14 ` Jason Gunthorpe
2021-09-29 21:48 ` Max Gurtovoy
2021-09-29 22:44 ` Alex Williamson
2021-09-30 9:25 ` Max Gurtovoy
2021-09-30 12:41 ` Alex Williamson
2021-09-29 23:21 ` Jason Gunthorpe
2021-09-30 9:34 ` Max Gurtovoy
2021-09-30 14:47 ` Jason Gunthorpe
2021-09-30 15:32 ` Max Gurtovoy
2021-09-30 16:24 ` Jason Gunthorpe
2021-09-30 16:51 ` Max Gurtovoy
2021-09-30 17:01 ` Jason Gunthorpe
2021-09-22 10:38 ` [PATCH mlx5-next 3/7] vfio/pci_core: Make the region->release() function optional Leon Romanovsky
2021-09-23 13:57 ` Max Gurtovoy
2021-09-22 10:38 ` [PATCH mlx5-next 4/7] net/mlx5: Introduce migration bits and structures Leon Romanovsky
2021-09-24 5:48 ` Mark Zhang
2021-09-22 10:38 ` [PATCH mlx5-next 5/7] net/mlx5: Expose APIs to get/put the mlx5 core device Leon Romanovsky
2021-09-22 10:38 ` [PATCH mlx5-next 6/7] mlx5_vfio_pci: Expose migration commands over mlx5 device Leon Romanovsky
2021-09-28 20:22 ` Alex Williamson
2021-09-29 5:36 ` Leon Romanovsky
2021-09-22 10:38 ` [PATCH mlx5-next 7/7] mlx5_vfio_pci: Implement vfio_pci driver for mlx5 devices Leon Romanovsky
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=85743eabdae04d08bb5eba7b6857496e@huawei.com \
--to=shameerali.kolothum.thodi@huawei.com \
--cc=alex.williamson@redhat.com \
--cc=bhelgaas@google.com \
--cc=davem@davemloft.net \
--cc=dledford@redhat.com \
--cc=jgg@nvidia.com \
--cc=kuba@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=kwankhede@nvidia.com \
--cc=leon@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=liulongfang@huawei.com \
--cc=mgurtovoy@nvidia.com \
--cc=netdev@vger.kernel.org \
--cc=saeedm@nvidia.com \
--cc=yishaih@nvidia.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.