From: Jason Gunthorpe <jgg@nvidia.com>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: Yishai Hadas <yishaih@nvidia.com>,
bhelgaas@google.com, saeedm@nvidia.com,
linux-pci@vger.kernel.org, kvm@vger.kernel.org,
netdev@vger.kernel.org, kuba@kernel.org, leonro@nvidia.com,
kwankhede@nvidia.com, mgurtovoy@nvidia.com, maorg@nvidia.com,
ashok.raj@intel.com, kevin.tian@intel.com,
shameerali.kolothum.thodi@huawei.com
Subject: Re: [PATCH V7 mlx5-next 08/15] vfio: Define device migration protocol v2
Date: Tue, 8 Feb 2022 22:36:45 -0400 [thread overview]
Message-ID: <20220209023645.GN4160@nvidia.com> (raw)
In-Reply-To: <20220208170754.01d05a1d.alex.williamson@redhat.com>
On Tue, Feb 08, 2022 at 05:07:54PM -0700, Alex Williamson wrote:
> On Mon, 7 Feb 2022 19:22:09 +0200
> Yishai Hadas <yishaih@nvidia.com> wrote:
> > +static int
> > +vfio_ioctl_device_feature_mig_device_state(struct vfio_device *device,
> > + u32 flags, void __user *arg,
> > + size_t argsz)
> > +{
> > + size_t minsz =
> > + offsetofend(struct vfio_device_feature_mig_state, data_fd);
> > + struct vfio_device_feature_mig_state mig;
>
> Perhaps set default data_fd here? ie.
>
> struct vfio_device_feature_mig_state mig = { .data_fd = -1 };
Why? there is no path where this variable is read before set.
> > + struct file *filp = NULL;
> > + int ret;
> > +
> > + if (!device->ops->migration_set_state ||
> > + !device->ops->migration_get_state)
> > + return -ENOTTY;
> > +
> > + ret = vfio_check_feature(flags, argsz,
> > + VFIO_DEVICE_FEATURE_SET |
> > + VFIO_DEVICE_FEATURE_GET,
> > + sizeof(mig));
> > + if (ret != 1)
> > + return ret;
> > +
> > + if (copy_from_user(&mig, arg, minsz))
> > + return -EFAULT;
^^^^^^^^^^^^^^
Is before all gotos.
> > +enum vfio_device_mig_state {
> > + VFIO_DEVICE_STATE_ERROR = 0,
> > + VFIO_DEVICE_STATE_STOP = 1,
> > + VFIO_DEVICE_STATE_RUNNING = 2,
>
> I'm a little surprised we're not using RUNNING = 0 given all the
> objection in the v1 protocol that the default state was non-zero.
Making ERROR 0 ensures that errors, eg in the FSM table due to a
backport or something still work properly.
I think we corrected that confusion by explicitly calling out RUNNING
as the default and removing the register-like region API.
> > /* -------- API for Type1 VFIO IOMMU -------- */
> >
> > /**
>
> Otherwise, I'm still not sure how userspace handles the fact that it
> can't know how much data will be read from the device and how important
> that is. There's no replacement of that feature from the v1 protocol
> here.
I'm not sure this was part of the v1 protocol either. Yes it had a
pending_bytes, but I don't think it was actually expected to be 100%
accurate. Computing this value accurately is potentially quite
expensive, I would prefer we not enforce this on an implementation
without a reason, and qemu currently doesn't make use of it.
The ioctl from the precopy patch is probably the best approach, I
think it would be fine to allow that for stop copy as well, but also
don't see a usage right now.
It is not something that needs decision now, it is very easy to detect
if an ioctl is supported on the data_fd at runtime to add new things
here when needed.
> I also think we're still waiting for confirmation from owners of
> devices with extremely large device states (vGPUs) whether they consider
> the stream FD sufficient versus their ability to directly mmap regions
> of the device in the previous protocol. Thanks,
As is this.
I think the mlx5 and huwaei patches show that without a doubt the
stream fd is the correct choice for these drivers.
Jason
next prev parent reply other threads:[~2022-02-09 3:09 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-07 17:22 [PATCH V7 mlx5-next 00/15] Add mlx5 live migration driver and v2 migration protocol Yishai Hadas
2022-02-07 17:22 ` [PATCH V7 mlx5-next 01/15] PCI/IOV: Add pci_iov_vf_id() to get VF index Yishai Hadas
2022-02-07 17:22 ` [PATCH V7 mlx5-next 02/15] net/mlx5: Reuse exported virtfn index function call Yishai Hadas
2022-02-07 17:22 ` [PATCH V7 mlx5-next 03/15] net/mlx5: Disable SRIOV before PF removal Yishai Hadas
2022-02-07 17:22 ` [PATCH V7 mlx5-next 04/15] PCI/IOV: Add pci_iov_get_pf_drvdata() to allow VF reaching the drvdata of a PF Yishai Hadas
2022-02-07 17:22 ` [PATCH V7 mlx5-next 05/15] net/mlx5: Expose APIs to get/put the mlx5 core device Yishai Hadas
2022-02-07 17:22 ` [PATCH V7 mlx5-next 06/15] net/mlx5: Introduce migration bits and structures Yishai Hadas
2022-02-07 17:22 ` [PATCH V7 mlx5-next 07/15] vfio: Have the core code decode the VFIO_DEVICE_FEATURE ioctl Yishai Hadas
2022-02-07 17:22 ` [PATCH V7 mlx5-next 08/15] vfio: Define device migration protocol v2 Yishai Hadas
2022-02-09 0:07 ` Alex Williamson
2022-02-09 2:36 ` Jason Gunthorpe [this message]
2022-02-15 10:41 ` Tian, Kevin
2022-02-15 16:04 ` Jason Gunthorpe
2022-02-15 23:32 ` Alex Williamson
2022-02-16 1:17 ` Jason Gunthorpe
2022-02-16 3:17 ` Tian, Kevin
2022-02-16 12:14 ` Jason Gunthorpe
2022-02-17 2:29 ` Tian, Kevin
2022-02-15 10:58 ` Tian, Kevin
2022-02-15 13:13 ` Jason Gunthorpe
2022-02-15 8:04 ` Tian, Kevin
2022-02-15 15:33 ` Jason Gunthorpe
2022-02-16 3:04 ` Tian, Kevin
2022-02-07 17:22 ` [PATCH V7 mlx5-next 09/15] vfio: Extend the device migration protocol with RUNNING_P2P Yishai Hadas
2022-02-15 10:18 ` Tian, Kevin
2022-02-15 15:56 ` Jason Gunthorpe
2022-02-16 2:52 ` Tian, Kevin
2022-02-16 12:11 ` Jason Gunthorpe
2022-02-07 17:22 ` [PATCH V7 mlx5-next 10/15] vfio: Remove migration protocol v1 documentation Yishai Hadas
2022-02-11 11:03 ` Cornelia Huck
2022-02-07 17:22 ` [PATCH V7 mlx5-next 11/15] vfio/mlx5: Expose migration commands over mlx5 device Yishai Hadas
2022-02-07 17:22 ` [PATCH V7 mlx5-next 12/15] vfio/mlx5: Implement vfio_pci driver for mlx5 devices Yishai Hadas
2022-02-09 0:07 ` Alex Williamson
2022-02-07 17:22 ` [PATCH V7 mlx5-next 13/15] vfio/pci: Expose vfio_pci_core_aer_err_detected() Yishai Hadas
2022-02-07 17:22 ` [PATCH V7 mlx5-next 14/15] vfio/mlx5: Use its own PCI reset_done error handler Yishai Hadas
2022-02-09 0:08 ` Alex Williamson
2022-02-09 2:39 ` Jason Gunthorpe
2022-02-10 16:48 ` Alex Williamson
2022-02-10 17:27 ` Jason Gunthorpe
2022-02-07 17:22 ` [PATCH V7 mlx5-next 15/15] vfio: Extend the device migration protocol with PRE_COPY Yishai Hadas
2022-02-17 17:15 ` Alex Williamson
2022-02-18 0:03 ` Jason Gunthorpe
2022-02-18 8:01 ` Tian, Kevin
2022-02-18 14:06 ` Jason Gunthorpe
2022-02-22 1:43 ` Tian, Kevin
2022-02-22 15:50 ` Jason Gunthorpe
2022-02-23 0:40 ` Tian, Kevin
2022-02-23 0:44 ` Jason Gunthorpe
2022-02-23 1:46 ` Tian, Kevin
2022-02-18 8:11 ` [PATCH V7 mlx5-next 00/15] Add mlx5 live migration driver and v2 migration protocol Tarun Gupta (SW-GPU)
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=20220209023645.GN4160@nvidia.com \
--to=jgg@nvidia.com \
--cc=alex.williamson@redhat.com \
--cc=ashok.raj@intel.com \
--cc=bhelgaas@google.com \
--cc=kevin.tian@intel.com \
--cc=kuba@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=kwankhede@nvidia.com \
--cc=leonro@nvidia.com \
--cc=linux-pci@vger.kernel.org \
--cc=maorg@nvidia.com \
--cc=mgurtovoy@nvidia.com \
--cc=netdev@vger.kernel.org \
--cc=saeedm@nvidia.com \
--cc=shameerali.kolothum.thodi@huawei.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.