> On Nov 25, 2019, at 12:56 PM, Jason Gunthorpe <jgg@xxxxxxxx> 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@xxxxxxxxxxx> >> 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