Re: [PATCH rdma-next v1 4/4] RDMA/mlx5: Sync device with CPU pages upon ODP MR registration

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

 



On Thu, Sep 17, 2020 at 02:21:52PM +0300, Leon Romanovsky wrote:

> diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c
> index dea65e511a3e..234a5d25a072 100644
> +++ b/drivers/infiniband/hw/mlx5/mr.c
> @@ -1431,7 +1431,7 @@ struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
>  	mr->umem = umem;
>  	set_mr_fields(dev, mr, npages, length, access_flags);
> 
> -	if (xlt_with_umr) {
> +	if (xlt_with_umr && !(access_flags & IB_ACCESS_ON_DEMAND)) {
>  		/*
>  		 * If the MR was created with reg_create then it will be
>  		 * configured properly but left disabled. It is safe to go ahead
> @@ -1439,9 +1439,6 @@ struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
>  		 */
>  		int update_xlt_flags = MLX5_IB_UPD_XLT_ENABLE;
> 
> -		if (access_flags & IB_ACCESS_ON_DEMAND)
> -			update_xlt_flags |= MLX5_IB_UPD_XLT_ZAP;
> -
>  		err = mlx5_ib_update_xlt(mr, 0, ncont, page_shift,
>  					 update_xlt_flags);
>  		if (err) {
> @@ -1467,6 +1464,12 @@ struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
>  			dereg_mr(dev, mr);
>  			return ERR_PTR(err);
>  		}
> +
> +		err = mlx5_ib_init_odp_mr(mr, start, length, xlt_with_umr);

No reason to pass start/length, that is already in the mr

Jason



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux