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 |
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
> 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
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 --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,
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(+)