diff mbox series

rdma-core: Recognize IBV_DEVICE_LOCAL_DMA_LKEY in ibv_devinfo

Message ID 20191125152237.19084-1-aboyer@pensando.io (mailing list archive)
State Changes Requested
Delegated to: Jason Gunthorpe
Headers show
Series rdma-core: Recognize IBV_DEVICE_LOCAL_DMA_LKEY in ibv_devinfo | expand

Commit Message

Andrew Boyer Nov. 25, 2019, 3:22 p.m. UTC
This bit is defined in the kernel but not displayed by ibv_devinfo.

Signed-off-by: Andrew Boyer <aboyer@pensando.io>
---
 libibverbs/examples/devinfo.c | 3 +++
 libibverbs/verbs.h            | 1 +
 2 files changed, 4 insertions(+)

Comments

Jason Gunthorpe Nov. 25, 2019, 5:56 p.m. UTC | #1
On Mon, Nov 25, 2019 at 07:22:37AM -0800, Andrew Boyer wrote:
> This bit is defined in the kernel but not displayed by ibv_devinfo.
> 
> Signed-off-by: Andrew Boyer <aboyer@pensando.io>
>  libibverbs/examples/devinfo.c | 3 +++
>  libibverbs/verbs.h            | 1 +
>  2 files changed, 4 insertions(+)
> 
> diff --git a/libibverbs/examples/devinfo.c b/libibverbs/examples/devinfo.c
> index bf53eac2..e3210f6e 100644
> +++ b/libibverbs/examples/devinfo.c
> @@ -220,6 +220,7 @@ static void print_device_cap_flags(uint32_t dev_cap_flags)
>  				   IBV_DEVICE_RC_RNR_NAK_GEN |
>  				   IBV_DEVICE_SRQ_RESIZE |
>  				   IBV_DEVICE_N_NOTIFY_CQ |
> +				   IBV_DEVICE_LOCAL_DMA_LKEY |
>  				   IBV_DEVICE_MEM_WINDOW |
>  				   IBV_DEVICE_UD_IP_CSUM |
>  				   IBV_DEVICE_XRC |
> @@ -260,6 +261,8 @@ static void print_device_cap_flags(uint32_t dev_cap_flags)
>  		printf("\t\t\t\t\tSRQ_RESIZE\n");
>  	if (dev_cap_flags & IBV_DEVICE_N_NOTIFY_CQ)
>  		printf("\t\t\t\t\tN_NOTIFY_CQ\n");
> +	if (dev_cap_flags & IBV_DEVICE_LOCAL_DMA_LKEY)
> +		printf("\t\t\t\t\tLOCAL_DMA_LKEY\n");
>  	if (dev_cap_flags & IBV_DEVICE_MEM_WINDOW)
>  		printf("\t\t\t\t\tMEM_WINDOW\n");
>  	if (dev_cap_flags & IBV_DEVICE_UD_IP_CSUM)
> diff --git a/libibverbs/verbs.h b/libibverbs/verbs.h
> index 7b8d4310..81e5812c 100644
> +++ b/libibverbs/verbs.h
> @@ -112,6 +112,7 @@ enum ibv_device_cap_flags {
>  	IBV_DEVICE_RC_RNR_NAK_GEN	= 1 << 12,
>  	IBV_DEVICE_SRQ_RESIZE		= 1 << 13,
>  	IBV_DEVICE_N_NOTIFY_CQ		= 1 << 14,
> +	IBV_DEVICE_LOCAL_DMA_LKEY	= 1 << 15,
>  	IBV_DEVICE_MEM_WINDOW           = 1 << 17,
>  	IBV_DEVICE_UD_IP_CSUM		= 1 << 18,
>  	IBV_DEVICE_XRC			= 1 << 20,

This flag really only has meaning for the kernel, it should come out
of the uapi at all.

It is a mistake that kernel internal bits have been mixed in with
userspace bits.

Jason
Andrew Boyer Nov. 25, 2019, 7:32 p.m. UTC | #2
> On Nov 25, 2019, at 12:56 PM, Jason Gunthorpe <jgg@ziepe.ca> wrote:
> 
> On Mon, Nov 25, 2019 at 07:22:37AM -0800, Andrew Boyer wrote:
>> This bit is defined in the kernel but not displayed by ibv_devinfo.
>> 
>> Signed-off-by: Andrew Boyer <aboyer@pensando.io>
>> libibverbs/examples/devinfo.c | 3 +++
>> libibverbs/verbs.h            | 1 +
>> 2 files changed, 4 insertions(+)
>> 
>> diff --git a/libibverbs/examples/devinfo.c b/libibverbs/examples/devinfo.c
>> index bf53eac2..e3210f6e 100644
>> +++ b/libibverbs/examples/devinfo.c
>> @@ -220,6 +220,7 @@ static void print_device_cap_flags(uint32_t dev_cap_flags)
>> 				   IBV_DEVICE_RC_RNR_NAK_GEN |
>> 				   IBV_DEVICE_SRQ_RESIZE |
>> 				   IBV_DEVICE_N_NOTIFY_CQ |
>> +				   IBV_DEVICE_LOCAL_DMA_LKEY |
>> 				   IBV_DEVICE_MEM_WINDOW |
>> 				   IBV_DEVICE_UD_IP_CSUM |
>> 				   IBV_DEVICE_XRC |
>> @@ -260,6 +261,8 @@ static void print_device_cap_flags(uint32_t dev_cap_flags)
>> 		printf("\t\t\t\t\tSRQ_RESIZE\n");
>> 	if (dev_cap_flags & IBV_DEVICE_N_NOTIFY_CQ)
>> 		printf("\t\t\t\t\tN_NOTIFY_CQ\n");
>> +	if (dev_cap_flags & IBV_DEVICE_LOCAL_DMA_LKEY)
>> +		printf("\t\t\t\t\tLOCAL_DMA_LKEY\n");
>> 	if (dev_cap_flags & IBV_DEVICE_MEM_WINDOW)
>> 		printf("\t\t\t\t\tMEM_WINDOW\n");
>> 	if (dev_cap_flags & IBV_DEVICE_UD_IP_CSUM)
>> diff --git a/libibverbs/verbs.h b/libibverbs/verbs.h
>> index 7b8d4310..81e5812c 100644
>> +++ b/libibverbs/verbs.h
>> @@ -112,6 +112,7 @@ enum ibv_device_cap_flags {
>> 	IBV_DEVICE_RC_RNR_NAK_GEN	= 1 << 12,
>> 	IBV_DEVICE_SRQ_RESIZE		= 1 << 13,
>> 	IBV_DEVICE_N_NOTIFY_CQ		= 1 << 14,
>> +	IBV_DEVICE_LOCAL_DMA_LKEY	= 1 << 15,
>> 	IBV_DEVICE_MEM_WINDOW           = 1 << 17,
>> 	IBV_DEVICE_UD_IP_CSUM		= 1 << 18,
>> 	IBV_DEVICE_XRC			= 1 << 20,
> 
> This flag really only has meaning for the kernel, it should come out
> of the uapi at all.
> 
> It is a mistake that kernel internal bits have been mixed in with
> userspace bits.
> 
> Jason

Isn’t there value in having the userspace tools tell the user about a device’s in-kernel capabilities?

-Andrew
Jason Gunthorpe Nov. 25, 2019, 8:08 p.m. UTC | #3
On Mon, Nov 25, 2019 at 02:32:31PM -0500, Andrew Boyer wrote:
> 
> > On Nov 25, 2019, at 12:56 PM, Jason Gunthorpe <jgg@ziepe.ca> wrote:
> > 
> > On Mon, Nov 25, 2019 at 07:22:37AM -0800, Andrew Boyer wrote:
> >> This bit is defined in the kernel but not displayed by ibv_devinfo.
> >> 
> >> Signed-off-by: Andrew Boyer <aboyer@pensando.io>
> >> libibverbs/examples/devinfo.c | 3 +++
> >> libibverbs/verbs.h            | 1 +
> >> 2 files changed, 4 insertions(+)
> >> 
> >> diff --git a/libibverbs/examples/devinfo.c b/libibverbs/examples/devinfo.c
> >> index bf53eac2..e3210f6e 100644
> >> +++ b/libibverbs/examples/devinfo.c
> >> @@ -220,6 +220,7 @@ static void print_device_cap_flags(uint32_t dev_cap_flags)
> >> 				   IBV_DEVICE_RC_RNR_NAK_GEN |
> >> 				   IBV_DEVICE_SRQ_RESIZE |
> >> 				   IBV_DEVICE_N_NOTIFY_CQ |
> >> +				   IBV_DEVICE_LOCAL_DMA_LKEY |
> >> 				   IBV_DEVICE_MEM_WINDOW |
> >> 				   IBV_DEVICE_UD_IP_CSUM |
> >> 				   IBV_DEVICE_XRC |
> >> @@ -260,6 +261,8 @@ static void print_device_cap_flags(uint32_t dev_cap_flags)
> >> 		printf("\t\t\t\t\tSRQ_RESIZE\n");
> >> 	if (dev_cap_flags & IBV_DEVICE_N_NOTIFY_CQ)
> >> 		printf("\t\t\t\t\tN_NOTIFY_CQ\n");
> >> +	if (dev_cap_flags & IBV_DEVICE_LOCAL_DMA_LKEY)
> >> +		printf("\t\t\t\t\tLOCAL_DMA_LKEY\n");
> >> 	if (dev_cap_flags & IBV_DEVICE_MEM_WINDOW)
> >> 		printf("\t\t\t\t\tMEM_WINDOW\n");
> >> 	if (dev_cap_flags & IBV_DEVICE_UD_IP_CSUM)
> >> diff --git a/libibverbs/verbs.h b/libibverbs/verbs.h
> >> index 7b8d4310..81e5812c 100644
> >> +++ b/libibverbs/verbs.h
> >> @@ -112,6 +112,7 @@ enum ibv_device_cap_flags {
> >> 	IBV_DEVICE_RC_RNR_NAK_GEN	= 1 << 12,
> >> 	IBV_DEVICE_SRQ_RESIZE		= 1 << 13,
> >> 	IBV_DEVICE_N_NOTIFY_CQ		= 1 << 14,
> >> +	IBV_DEVICE_LOCAL_DMA_LKEY	= 1 << 15,
> >> 	IBV_DEVICE_MEM_WINDOW           = 1 << 17,
> >> 	IBV_DEVICE_UD_IP_CSUM		= 1 << 18,
> >> 	IBV_DEVICE_XRC			= 1 << 20,
> > 
> > This flag really only has meaning for the kernel, it should come out
> > of the uapi at all.
> > 
> > It is a mistake that kernel internal bits have been mixed in with
> > userspace bits.
> > 
> > Jason
> 
> Isn’t there value in having the userspace tools tell the user about
> a device’s in-kernel capabilities?

Sure, but that is more a rdmatool thing, not uverbs

Jason
diff mbox series

Patch

diff --git a/libibverbs/examples/devinfo.c b/libibverbs/examples/devinfo.c
index bf53eac2..e3210f6e 100644
--- a/libibverbs/examples/devinfo.c
+++ b/libibverbs/examples/devinfo.c
@@ -220,6 +220,7 @@  static void print_device_cap_flags(uint32_t dev_cap_flags)
 				   IBV_DEVICE_RC_RNR_NAK_GEN |
 				   IBV_DEVICE_SRQ_RESIZE |
 				   IBV_DEVICE_N_NOTIFY_CQ |
+				   IBV_DEVICE_LOCAL_DMA_LKEY |
 				   IBV_DEVICE_MEM_WINDOW |
 				   IBV_DEVICE_UD_IP_CSUM |
 				   IBV_DEVICE_XRC |
@@ -260,6 +261,8 @@  static void print_device_cap_flags(uint32_t dev_cap_flags)
 		printf("\t\t\t\t\tSRQ_RESIZE\n");
 	if (dev_cap_flags & IBV_DEVICE_N_NOTIFY_CQ)
 		printf("\t\t\t\t\tN_NOTIFY_CQ\n");
+	if (dev_cap_flags & IBV_DEVICE_LOCAL_DMA_LKEY)
+		printf("\t\t\t\t\tLOCAL_DMA_LKEY\n");
 	if (dev_cap_flags & IBV_DEVICE_MEM_WINDOW)
 		printf("\t\t\t\t\tMEM_WINDOW\n");
 	if (dev_cap_flags & IBV_DEVICE_UD_IP_CSUM)
diff --git a/libibverbs/verbs.h b/libibverbs/verbs.h
index 7b8d4310..81e5812c 100644
--- a/libibverbs/verbs.h
+++ b/libibverbs/verbs.h
@@ -112,6 +112,7 @@  enum ibv_device_cap_flags {
 	IBV_DEVICE_RC_RNR_NAK_GEN	= 1 << 12,
 	IBV_DEVICE_SRQ_RESIZE		= 1 << 13,
 	IBV_DEVICE_N_NOTIFY_CQ		= 1 << 14,
+	IBV_DEVICE_LOCAL_DMA_LKEY	= 1 << 15,
 	IBV_DEVICE_MEM_WINDOW           = 1 << 17,
 	IBV_DEVICE_UD_IP_CSUM		= 1 << 18,
 	IBV_DEVICE_XRC			= 1 << 20,