lkml.org 
[lkml]   [2023]   [Oct]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH vhost v4 07/16] vdpa/mlx5: Take cvq iotlb lock during refresh
    Date
    The reslock is taken while refresh is called but iommu_lock is more
    specific to this resource. So take the iommu_lock during cvq iotlb
    refresh.

    Based on Eugenio's patch [0].

    [0] https://lore.kernel.org/lkml/20230112142218.725622-4-eperezma@redhat.com/

    Acked-by: Jason Wang <jasowang@redhat.com>
    Suggested-by: Eugenio Pérez <eperezma@redhat.com>
    Reviewed-by: Eugenio Pérez <eperezma@redhat.com>
    Signed-off-by: Dragos Tatulea <dtatulea@nvidia.com>
    ---
    drivers/vdpa/mlx5/core/mr.c | 10 +++++++++-
    1 file changed, 9 insertions(+), 1 deletion(-)

    diff --git a/drivers/vdpa/mlx5/core/mr.c b/drivers/vdpa/mlx5/core/mr.c
    index fcb6ae32e9ed..587300e7c18e 100644
    --- a/drivers/vdpa/mlx5/core/mr.c
    +++ b/drivers/vdpa/mlx5/core/mr.c
    @@ -590,11 +590,19 @@ int mlx5_vdpa_update_cvq_iotlb(struct mlx5_vdpa_dev *mvdev,
    struct vhost_iotlb *iotlb,
    unsigned int asid)
    {
    + int err;
    +
    if (mvdev->group2asid[MLX5_VDPA_CVQ_GROUP] != asid)
    return 0;

    + spin_lock(&mvdev->cvq.iommu_lock);
    +
    prune_iotlb(mvdev);
    - return dup_iotlb(mvdev, iotlb);
    + err = dup_iotlb(mvdev, iotlb);
    +
    + spin_unlock(&mvdev->cvq.iommu_lock);
    +
    + return err;
    }

    int mlx5_vdpa_create_dma_mr(struct mlx5_vdpa_dev *mvdev)
    --
    2.41.0
    \
     
     \ /
      Last update: 2023-10-18 19:17    [W:2.728 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site