Re: [PATCH RFC v2 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 06-Jan-19 23:39, Jason Gunthorpe wrote:
> On Sun, Jan 06, 2019 at 11:23:02AM +0200, Gal Pressman wrote:
>> Drivers that do not provide kernel verbs support should not be used by
>> ib kernel clients and fail.
>> In case a device does not implement all mandatory verbs for kverbs usage
>> mark it as a non kverbs provider and prevent its usage for all clients
>> except for uverbs.
>>
>> The device is marked as a non kverbs provider using the
>> 'kverbs_provider' flag which should only be set by the core code.
>> The clients can choose whether kverbs are requested for it usage using
>> the 'no_kverbs_req' flag which is currently set for uverbs only.
>>
>> This patch allows drivers to remove mandatory verbs stubs and simply set
>> the callback to NULL. The IB device will be registered as a non-kverbs
>> provider.
>>
>> Signed-off-by: Gal Pressman <galpress@xxxxxxxxxx>
>>  drivers/infiniband/core/device.c      | 12 ++++++++----
>>  drivers/infiniband/core/uverbs_main.c |  1 +
>>  include/rdma/ib_verbs.h               |  5 +++++
>>  3 files changed, 14 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
>> index 47ab34ee1a9d..6c1f71007ec4 100644
>> +++ b/drivers/infiniband/core/device.c
>> @@ -121,13 +121,15 @@ static int ib_device_check_mandatory(struct ib_device *device)
>>  	};
>>  	int i;
>>  
>> +	device->kverbs_provider = true;
>>  	for (i = 0; i < ARRAY_SIZE(mandatory_table); ++i) {
>>  		if (!*(void **) ((void *) &device->ops +
>>  				 mandatory_table[i].offset)) {
>>  			dev_warn(&device->dev,
>> -				 "Device is missing mandatory function %s\n",
>> +				 "Device is missing mandatory function %s, disabling kverbs support\n",
>>  				 mandatory_table[i].name);
> 
> Why not get rid of the message?

Will do.

> 
>> diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
>> index a3ceed3a040a..6ac5b7c3dddc 100644
>> +++ b/include/rdma/ib_verbs.h
>> @@ -2561,6 +2561,8 @@ struct ib_device {
>>  	__be64			     node_guid;
>>  	u32			     local_dma_lkey;
>>  	u16                          is_switch:1;
>> +	/* Indicates kernel verbs support, should not be used in drivers */
>> +	u8                           kverbs_provider:1;
>>  	u8                           node_type;
>>  	u8                           phys_port_cnt;
>>  	struct ib_device_attr        attrs;
>> @@ -2615,6 +2617,9 @@ struct ib_client {
>>  			const struct sockaddr *addr,
>>  			void *client_data);
>>  	struct list_head list;
>> +
>> +	/* kverbs are not required by the device */
> 
> 'by the client'

ACK.



[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