Re: [PATCH v2 3/4] vhost-vdpa: uAPI to resume the device

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Oct 14, 2022 at 7:15 PM <sebastien.boeuf@xxxxxxxxx> wrote:
>
> From: Sebastien Boeuf <sebastien.boeuf@xxxxxxxxx>
>
> This new ioctl adds support for resuming the device from userspace.
>
> This is required when trying to restore the device in a functioning
> state after it's been suspended. It is already possible to reset a
> suspended device,

Nit: And should we allow resume a non suspended device? Do we need to
document this requirement somewhere?

> but that means the device must be reconfigured and
> all the IOMMU/IOTLB mappings must be recreated. This new operation
> allows the device to be resumed without going through a full reset.
>
> This is particularly useful when trying to perform offline migration of
> a virtual machine (also known as snapshot/restore) as it allows the VMM
> to resume the virtual machine back to a running state after the snapshot
> is performed.
>
> Signed-off-by: Sebastien Boeuf <sebastien.boeuf@xxxxxxxxx>

Acked-by: Jason Wang <jasowang@xxxxxxxxxx>

> ---
>  drivers/vhost/vdpa.c       | 18 ++++++++++++++++++
>  include/uapi/linux/vhost.h |  8 ++++++++
>  2 files changed, 26 insertions(+)
>
> diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c
> index 833617d00ef6..1db7bd39fb63 100644
> --- a/drivers/vhost/vdpa.c
> +++ b/drivers/vhost/vdpa.c
> @@ -502,6 +502,21 @@ static long vhost_vdpa_suspend(struct vhost_vdpa *v)
>         return ops->suspend(vdpa);
>  }
>
> +/* After a successful return of this ioctl the device resumes processing
> + * virtqueue descriptors. The device becomes fully operational the same way it
> + * was before it was suspended.
> + */
> +static long vhost_vdpa_resume(struct vhost_vdpa *v)
> +{
> +       struct vdpa_device *vdpa = v->vdpa;
> +       const struct vdpa_config_ops *ops = vdpa->config;
> +
> +       if (!ops->resume)
> +               return -EOPNOTSUPP;
> +
> +       return ops->resume(vdpa);
> +}
> +
>  static long vhost_vdpa_vring_ioctl(struct vhost_vdpa *v, unsigned int cmd,
>                                    void __user *argp)
>  {
> @@ -687,6 +702,9 @@ static long vhost_vdpa_unlocked_ioctl(struct file *filep,
>         case VHOST_VDPA_SUSPEND:
>                 r = vhost_vdpa_suspend(v);
>                 break;
> +       case VHOST_VDPA_RESUME:
> +               r = vhost_vdpa_resume(v);
> +               break;
>         default:
>                 r = vhost_dev_ioctl(&v->vdev, cmd, argp);
>                 if (r == -ENOIOCTLCMD)
> diff --git a/include/uapi/linux/vhost.h b/include/uapi/linux/vhost.h
> index f9f115a7c75b..92e1b700b51c 100644
> --- a/include/uapi/linux/vhost.h
> +++ b/include/uapi/linux/vhost.h
> @@ -180,4 +180,12 @@
>   */
>  #define VHOST_VDPA_SUSPEND             _IO(VHOST_VIRTIO, 0x7D)
>
> +/* Resume a device so it can resume processing virtqueue requests
> + *
> + * After the return of this ioctl the device will have restored all the
> + * necessary states and it is fully operational to continue processing the
> + * virtqueue descriptors.
> + */
> +#define VHOST_VDPA_RESUME              _IO(VHOST_VIRTIO, 0x7E)
> +
>  #endif
> --
> 2.34.1
>
> ---------------------------------------------------------------------
> Intel Corporation SAS (French simplified joint stock company)
> Registered headquarters: "Les Montalets"- 2, rue de Paris,
> 92196 Meudon Cedex, France
> Registration Number:  302 456 199 R.C.S. NANTERRE
> Capital: 5 208 026.16 Euros
>
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
>

_______________________________________________
Virtualization mailing list
Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linuxfoundation.org/mailman/listinfo/virtualization



[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux