Re: [PATCH v4 2/2] vdpa/snet: support the suspend vDPA callback

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

 



On Thu, Apr 13, 2023 at 3:33 PM Alvaro Karsz <alvaro.karsz@xxxxxxxxxxxxx> wrote:
>
> When suspend is called, the driver sends a suspend command to the DPU
> through the control mechanism.
>
> Signed-off-by: Alvaro Karsz <alvaro.karsz@xxxxxxxxxxxxx>

Acked-by: Jason Wang <jasowang@xxxxxxxxxx>

Thanks

> ---
>  drivers/vdpa/solidrun/snet_ctrl.c |  6 ++++++
>  drivers/vdpa/solidrun/snet_main.c | 15 +++++++++++++++
>  drivers/vdpa/solidrun/snet_vdpa.h |  1 +
>  3 files changed, 22 insertions(+)
>
> diff --git a/drivers/vdpa/solidrun/snet_ctrl.c b/drivers/vdpa/solidrun/snet_ctrl.c
> index 10cde502f1a..3858738643b 100644
> --- a/drivers/vdpa/solidrun/snet_ctrl.c
> +++ b/drivers/vdpa/solidrun/snet_ctrl.c
> @@ -15,6 +15,7 @@
>  enum snet_ctrl_opcodes {
>         SNET_CTRL_OP_DESTROY = 1,
>         SNET_CTRL_OP_READ_VQ_STATE,
> +       SNET_CTRL_OP_SUSPEND,
>  };
>
>  #define SNET_CTRL_TIMEOUT              2000000
> @@ -322,3 +323,8 @@ int snet_read_vq_state(struct snet *snet, u16 idx, struct vdpa_vq_state *state)
>         return snet_ctrl_read_from_dpu(snet, SNET_CTRL_OP_READ_VQ_STATE, idx, state,
>                                        sizeof(*state));
>  }
> +
> +int snet_suspend_dev(struct snet *snet)
> +{
> +       return snet_send_ctrl_msg(snet, SNET_CTRL_OP_SUSPEND, 0);
> +}
> diff --git a/drivers/vdpa/solidrun/snet_main.c b/drivers/vdpa/solidrun/snet_main.c
> index 86769f436b4..7359599e09e 100644
> --- a/drivers/vdpa/solidrun/snet_main.c
> +++ b/drivers/vdpa/solidrun/snet_main.c
> @@ -483,6 +483,20 @@ static void snet_set_config(struct vdpa_device *vdev, unsigned int offset,
>                 iowrite8(*buf_ptr++, cfg_ptr + i);
>  }
>
> +static int snet_suspend(struct vdpa_device *vdev)
> +{
> +       struct snet *snet = vdpa_to_snet(vdev);
> +       int ret;
> +
> +       ret = snet_suspend_dev(snet);
> +       if (ret)
> +               SNET_ERR(snet->pdev, "SNET[%u] suspend failed, err: %d\n", snet->sid, ret);
> +       else
> +               SNET_DBG(snet->pdev, "Suspend SNET[%u] device\n", snet->sid);
> +
> +       return ret;
> +}
> +
>  static const struct vdpa_config_ops snet_config_ops = {
>         .set_vq_address         = snet_set_vq_address,
>         .set_vq_num             = snet_set_vq_num,
> @@ -508,6 +522,7 @@ static const struct vdpa_config_ops snet_config_ops = {
>         .set_status             = snet_set_status,
>         .get_config             = snet_get_config,
>         .set_config             = snet_set_config,
> +       .suspend                = snet_suspend,
>  };
>
>  static int psnet_open_pf_bar(struct pci_dev *pdev, struct psnet *psnet)
> diff --git a/drivers/vdpa/solidrun/snet_vdpa.h b/drivers/vdpa/solidrun/snet_vdpa.h
> index 09ff676e7a2..3c78d4e7d48 100644
> --- a/drivers/vdpa/solidrun/snet_vdpa.h
> +++ b/drivers/vdpa/solidrun/snet_vdpa.h
> @@ -203,5 +203,6 @@ void psnet_create_hwmon(struct pci_dev *pdev);
>  void snet_ctrl_clear(struct snet *snet);
>  int snet_destroy_dev(struct snet *snet);
>  int snet_read_vq_state(struct snet *snet, u16 idx, struct vdpa_vq_state *state);
> +int snet_suspend_dev(struct snet *snet);
>
>  #endif //_SNET_VDPA_H_
> --
> 2.34.1
>

_______________________________________________
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