xref: /linux/drivers/infiniband/Kconfig (revision 33d1117eb506dbea0fc0995711686179aed22ff2)
1# SPDX-License-Identifier: GPL-2.0-only
2menuconfig INFINIBAND
3	tristate "InfiniBand support"
4	depends on HAS_IOMEM && HAS_DMA
5	depends on NET
6	depends on INET
7	depends on !ALPHA
8	select DMA_SHARED_BUFFER
9	select IRQ_POLL
10	select DIMLIB
11	help
12	  Core support for InfiniBand (IB).  Make sure to also select
13	  any protocols you wish to use as well as drivers for your
14	  InfiniBand hardware.
15
16if INFINIBAND
17
18config INFINIBAND_USER_MAD
19	tristate "InfiniBand userspace MAD support"
20	depends on INFINIBAND
21	help
22	  Userspace InfiniBand Management Datagram (MAD) support.  This
23	  is the kernel side of the userspace MAD support, which allows
24	  userspace processes to send and receive MADs. You will also
25	  need libibumad from rdma-core
26	  <https://github.com/linux-rdma/rdma-core>.
27
28config INFINIBAND_USER_ACCESS
29	tristate "InfiniBand userspace access (verbs and CM)"
30	depends on MMU
31	help
32	  Userspace InfiniBand access support.  This enables the
33	  kernel side of userspace verbs and the userspace
34	  communication manager (CM).  This allows userspace processes
35	  to set up connections and directly access InfiniBand
36	  hardware for fast-path operations.  You will also need
37	  libibverbs, libibcm and a hardware driver library from
38	  rdma-core <https://github.com/linux-rdma/rdma-core>.
39
40config INFINIBAND_USER_ACCESS_CORE
41	bool
42	default y if INFINIBAND_USER_ACCESS != n
43
44config INFINIBAND_USER_MEM
45	bool
46	depends on INFINIBAND_USER_ACCESS != n
47	depends on MMU
48	select DMA_SHARED_BUFFER
49	default y
50
51config INFINIBAND_ON_DEMAND_PAGING
52	bool "InfiniBand on-demand paging support"
53	depends on INFINIBAND_USER_MEM
54	select MMU_NOTIFIER
55	select INTERVAL_TREE
56	select HMM_MIRROR
57	default y
58	help
59	  On demand paging support for the InfiniBand subsystem.
60	  Together with driver support this allows registration of
61	  memory regions without pinning their pages, fetching the
62	  pages on demand instead.
63
64config INFINIBAND_ADDR_TRANS
65	bool "RDMA/CM"
66	depends on INFINIBAND
67	default y
68	help
69	  Support for RDMA communication manager (CM).
70	  This allows for a generic connection abstraction over RDMA.
71
72config INFINIBAND_ADDR_TRANS_CONFIGFS
73	bool
74	depends on INFINIBAND_ADDR_TRANS && CONFIGFS_FS && !(INFINIBAND=y && CONFIGFS_FS=m)
75	default y
76	help
77	  ConfigFS support for RDMA communication manager (CM).
78	  This allows the user to config the default GID type that the CM
79	  uses for each device, when initiaing new connections.
80
81config INFINIBAND_VIRT_DMA
82	def_bool !HIGHMEM
83
84if INFINIBAND_USER_ACCESS || !INFINIBAND_USER_ACCESS
85if !UML
86source "drivers/infiniband/hw/bnxt_re/Kconfig"
87source "drivers/infiniband/hw/bng_re/Kconfig"
88source "drivers/infiniband/hw/cxgb4/Kconfig"
89source "drivers/infiniband/hw/efa/Kconfig"
90source "drivers/infiniband/hw/erdma/Kconfig"
91source "drivers/infiniband/hw/hfi1/Kconfig"
92source "drivers/infiniband/hw/hns/Kconfig"
93source "drivers/infiniband/hw/ionic/Kconfig"
94source "drivers/infiniband/hw/irdma/Kconfig"
95source "drivers/infiniband/hw/mana/Kconfig"
96source "drivers/infiniband/hw/mlx4/Kconfig"
97source "drivers/infiniband/hw/mlx5/Kconfig"
98source "drivers/infiniband/hw/mthca/Kconfig"
99source "drivers/infiniband/hw/ocrdma/Kconfig"
100source "drivers/infiniband/hw/qedr/Kconfig"
101source "drivers/infiniband/hw/usnic/Kconfig"
102source "drivers/infiniband/hw/vmw_pvrdma/Kconfig"
103source "drivers/infiniband/sw/rdmavt/Kconfig"
104endif # !UML
105source "drivers/infiniband/sw/rxe/Kconfig"
106source "drivers/infiniband/sw/siw/Kconfig"
107endif
108
109source "drivers/infiniband/ulp/ipoib/Kconfig"
110
111source "drivers/infiniband/ulp/srp/Kconfig"
112source "drivers/infiniband/ulp/srpt/Kconfig"
113
114source "drivers/infiniband/ulp/iser/Kconfig"
115source "drivers/infiniband/ulp/isert/Kconfig"
116source "drivers/infiniband/ulp/rtrs/Kconfig"
117
118endif # INFINIBAND
119