Re: [PATCH RFC 1/2] RDMA: Add indication for in kernel API support to IB device

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

 



On 02-Jan-19 13:22, Leon Romanovsky wrote:
> On Wed, Jan 02, 2019 at 10:40:50AM +0200, Gal Pressman wrote:
>> On 01-Jan-19 21:17, Leon Romanovsky wrote:
>>> On Tue, Jan 01, 2019 at 11:30:24AM +0200, Gal Pressman wrote:
>>>> Drivers that do not provide kernel verbs support should communicate that
>>>> to the ULPs before they try to use the device and fail.
>>>> This patch allows drivers to indicate whether the device provides
>>>> support for kernel API usage with the 'kverbs_provider' flag and makes
>>>> ib clients not add unsupported devices.
>>>
>>> General comment, if we decide to proceed this path, the implementation
>>> shouldn't touch ULPs and drivers and needs to be implemented in IB/core
>>> only.
>>>
>>> Thanks
>>
>> Hi Leon,
>> How would that work?
>> Each ULP should decide whether it wants to add the device or not, shouldn't that
>> be coded in the ULP?
> 
> Something like that,
> 
> diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c
> index ac011836bb54..b2d307d3c193 100644
> --- a/drivers/infiniband/core/verbs.c
> +++ b/drivers/infiniband/core/verbs.c
> @@ -512,6 +512,13 @@ static struct ib_ah *_rdma_create_ah(struct ib_pd *pd,
>  	return ah;
>  }
> 
> +static bool is_kverbs_supported(struct ib_device *dev)
> +{
> +	if (unlikely(dev->driver_id == RDMA_DRIVER_USNIC))
> +		return false;
> +	return true;
> +}
> +
>  /**
>   * rdma_create_ah - Creates an address handle for the
>   * given address vector.
> @@ -530,6 +537,9 @@ struct ib_ah *rdma_create_ah(struct ib_pd *pd, struct rdma_ah_attr *ah_attr,
>  	struct ib_ah *ah;
>  	int ret;
> 
> +	if (!is_kverbs_supported(pd->device))
> +		return ERR_PTR(-ENOSYS);
> +
>  	ret = rdma_fill_sgid_attr(pd->device, ah_attr, &old_sgid_attr);
>  	if (ret)
>  		return ERR_PTR(ret);
> 

Thanks,
This approach falls back to the "try and fail" way, why should the client even
try to use the device if it's not supported in the first place?
In the ULP's perspective create AH fails, does it really matter if the core
returns the error or the driver?

>>
>>>
>>>>
>>>> No functional changes were introduced in this patch, all devices are
>>>> marked as kernel providers. Downstream patch will adjust relevant
>>>> drivers.
>>



[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