On Tue, Sep 12, 2023 at 9:02 PM Dragos Tatulea <dtatulea@xxxxxxxxxx> wrote: > > 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@xxxxxxxxxx/ > > Suggested-by: Eugenio Pérez <eperezma@xxxxxxxxxx> > Signed-off-by: Dragos Tatulea <dtatulea@xxxxxxxxxx> Acked-by: Jason Wang <jasowang@xxxxxxxxxx> Thanks > --- > 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 > _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization