Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 185899ee authored by Matan Barak's avatar Matan Barak Committed by Jason Gunthorpe
Browse files

IB/uverbs: Enable ioctl() uAPI by default for new verbs



Enable the ioctl() uAPI for IB by default if the standard write()
uAPI (INFINIBAND_USER_ACCESS) is enabled. Verbs that are
also available under the old write() uAPI are put inside a new
INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI Kconfig.

Reviewed-by: default avatarYishai Hadas <yishaih@mellanox.com>
Signed-off-by: default avatarMatan Barak <matanb@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent 3d64addd
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -35,14 +35,13 @@ config INFINIBAND_USER_ACCESS
	  libibverbs, libibcm and a hardware driver library from
	  rdma-core <https://github.com/linux-rdma/rdma-core>.

config INFINIBAND_EXP_USER_ACCESS
	bool "Enable the full uverbs ioctl interface (EXPERIMENTAL)"
config INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI
	bool "Allow experimental legacy verbs in new ioctl uAPI  (EXPERIMENTAL)"
	depends on INFINIBAND_USER_ACCESS
	---help---
	  IOCTL based ABI support for Infiniband. This allows userspace
	  to invoke the experimental IOCTL based ABI.
	  These commands are parsed via per-device parsing tree and
	  enables per-device features.
	  IOCTL based uAPI support for Infiniband is enabled by default for
	  new verbs only. This allows userspace to invoke the IOCTL based uAPI
	  for current legacy verbs too.

config INFINIBAND_USER_MEM
	bool
+0 −4
Original line number Diff line number Diff line
@@ -933,10 +933,8 @@ static const struct file_operations uverbs_fops = {
	.open	 = ib_uverbs_open,
	.release = ib_uverbs_close,
	.llseek	 = no_llseek,
#if IS_ENABLED(CONFIG_INFINIBAND_EXP_USER_ACCESS)
	.unlocked_ioctl = ib_uverbs_ioctl,
	.compat_ioctl = ib_uverbs_ioctl,
#endif
};

static const struct file_operations uverbs_mmap_fops = {
@@ -946,10 +944,8 @@ static const struct file_operations uverbs_mmap_fops = {
	.open	 = ib_uverbs_open,
	.release = ib_uverbs_close,
	.llseek	 = no_llseek,
#if IS_ENABLED(CONFIG_INFINIBAND_EXP_USER_ACCESS)
	.unlocked_ioctl = ib_uverbs_ioctl,
	.compat_ioctl = ib_uverbs_ioctl,
#endif
};

static struct ib_client uverbs_client = {
+2 −0
Original line number Diff line number Diff line
@@ -202,7 +202,9 @@ static DECLARE_UVERBS_NAMED_METHOD(UVERBS_METHOD_CQ_DESTROY,
DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_CQ,
			    &UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_ucq_object), 0,
						      uverbs_free_cq),
#if IS_ENABLED(CONFIG_INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI)
			    &UVERBS_METHOD(UVERBS_METHOD_CQ_CREATE),
			    &UVERBS_METHOD(UVERBS_METHOD_CQ_DESTROY)
#endif
			   );