virtualization.lists.linux-foundation.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH v2] vdpa/mlx5: Setup driver only if VIRTIO_CONFIG_S_DRIVER_OK
       [not found] <20200908123346.GA169007@mtl-vdi-166.wap.labs.mlnx>
@ 2020-09-09  2:08 ` Jason Wang
       [not found]   ` <20200909053045.GB200399@mtl-vdi-166.wap.labs.mlnx>
  0 siblings, 1 reply; 2+ messages in thread
From: Jason Wang @ 2020-09-09  2:08 UTC (permalink / raw)
  To: Eli Cohen; +Cc: netdev, virtualization, Cindy Lu, Michael S. Tsirkin



----- Original Message -----
> set_map() is used by mlx5 vdpa to create a memory region based on the
> address map passed by the iotlb argument. If we get successive calls, we
> will destroy the current memory region and build another one based on
> the new address mapping. We also need to setup the hardware resources
> since they depend on the memory region.
> 
> If these calls happen before DRIVER_OK, It means that driver VQs may
> also not been setup and we may not create them yet. In this case we want
> to avoid setting up the other resources and defer this till we get
> DRIVER OK.
> 
> Fixes: 1a86b377aa21 ("vdpa/mlx5: Add VDPA driver for supported mlx5 devices")
> Signed-off-by: Eli Cohen <elic@nvidia.com>
> ---
> V1->V2: Improve changelog description
> 
>  drivers/vdpa/mlx5/net/mlx5_vnet.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/vdpa/mlx5/net/mlx5_vnet.c
> b/drivers/vdpa/mlx5/net/mlx5_vnet.c
> index 9df69d5efe8c..c89cd48a0aab 100644
> --- a/drivers/vdpa/mlx5/net/mlx5_vnet.c
> +++ b/drivers/vdpa/mlx5/net/mlx5_vnet.c
> @@ -1645,6 +1645,9 @@ static int mlx5_vdpa_change_map(struct mlx5_vdpa_net
> *ndev, struct vhost_iotlb *
>  	if (err)
>  		goto err_mr;
>  
> +	if (!(ndev->mvdev.status & VIRTIO_CONFIG_S_DRIVER_OK))
> +		return 0;
> +

Is there any reason that we still need to do vq suspending and saving before?

Thanks

>  	restore_channels_info(ndev);
>  	err = setup_driver(ndev);
>  	if (err)
> --
> 2.26.0
> 
> 

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH v2] vdpa/mlx5: Setup driver only if VIRTIO_CONFIG_S_DRIVER_OK
       [not found]   ` <20200909053045.GB200399@mtl-vdi-166.wap.labs.mlnx>
@ 2020-10-13  5:37     ` Jason Wang
  0 siblings, 0 replies; 2+ messages in thread
From: Jason Wang @ 2020-10-13  5:37 UTC (permalink / raw)
  To: Eli Cohen; +Cc: netdev, virtualization, Cindy Lu, Michael S. Tsirkin


On 2020/9/9 下午1:30, Eli Cohen wrote:
> On Tue, Sep 08, 2020 at 10:08:39PM -0400, Jason Wang wrote:
>>
>> ----- Original Message -----
>>> set_map() is used by mlx5 vdpa to create a memory region based on the
>>> address map passed by the iotlb argument. If we get successive calls, we
>>> will destroy the current memory region and build another one based on
>>> the new address mapping. We also need to setup the hardware resources
>>> since they depend on the memory region.
>>>
>>> If these calls happen before DRIVER_OK, It means that driver VQs may
>>> also not been setup and we may not create them yet. In this case we want
>>> to avoid setting up the other resources and defer this till we get
>>> DRIVER OK.
>>>
>>> Fixes: 1a86b377aa21 ("vdpa/mlx5: Add VDPA driver for supported mlx5 devices")
>>> Signed-off-by: Eli Cohen <elic@nvidia.com>
>>> ---
>>> V1->V2: Improve changelog description
>>>
>>>   drivers/vdpa/mlx5/net/mlx5_vnet.c | 3 +++
>>>   1 file changed, 3 insertions(+)
>>>
>>> diff --git a/drivers/vdpa/mlx5/net/mlx5_vnet.c
>>> b/drivers/vdpa/mlx5/net/mlx5_vnet.c
>>> index 9df69d5efe8c..c89cd48a0aab 100644
>>> --- a/drivers/vdpa/mlx5/net/mlx5_vnet.c
>>> +++ b/drivers/vdpa/mlx5/net/mlx5_vnet.c
>>> @@ -1645,6 +1645,9 @@ static int mlx5_vdpa_change_map(struct mlx5_vdpa_net
>>> *ndev, struct vhost_iotlb *
>>>   	if (err)
>>>   		goto err_mr;
>>>   
>>> +	if (!(ndev->mvdev.status & VIRTIO_CONFIG_S_DRIVER_OK))
>>> +		return 0;
>>> +
>> Is there any reason that we still need to do vq suspending and saving before?
>>
> Though suspend_vqs() and save_channels_info() will be called, they will
> not actually do any work because the mvq->initialized is false.
>
> Since we don't expect so many false map updates I think it makes sense
> to avoid logic around the calls suspend_vqs() and save_channels_info().


I see.

Acked-by: Jason Wang <jasowang@redhat.com>

Thanks


>
>> Thanks
>>
>>>   	restore_channels_info(ndev);
>>>   	err = setup_driver(ndev);
>>>   	if (err)
>>> --
>>> 2.26.0
>>>
>>>

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-10-13  5:38 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20200908123346.GA169007@mtl-vdi-166.wap.labs.mlnx>
2020-09-09  2:08 ` [PATCH v2] vdpa/mlx5: Setup driver only if VIRTIO_CONFIG_S_DRIVER_OK Jason Wang
     [not found]   ` <20200909053045.GB200399@mtl-vdi-166.wap.labs.mlnx>
2020-10-13  5:37     ` Jason Wang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).