162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_cimenuconfig INFINIBAND
362306a36Sopenharmony_ci	tristate "InfiniBand support"
462306a36Sopenharmony_ci	depends on HAS_IOMEM && HAS_DMA
562306a36Sopenharmony_ci	depends on NET
662306a36Sopenharmony_ci	depends on INET
762306a36Sopenharmony_ci	depends on m || IPV6 != m
862306a36Sopenharmony_ci	depends on !ALPHA
962306a36Sopenharmony_ci	select IRQ_POLL
1062306a36Sopenharmony_ci	select DIMLIB
1162306a36Sopenharmony_ci	help
1262306a36Sopenharmony_ci	  Core support for InfiniBand (IB).  Make sure to also select
1362306a36Sopenharmony_ci	  any protocols you wish to use as well as drivers for your
1462306a36Sopenharmony_ci	  InfiniBand hardware.
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciif INFINIBAND
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ciconfig INFINIBAND_USER_MAD
1962306a36Sopenharmony_ci	tristate "InfiniBand userspace MAD support"
2062306a36Sopenharmony_ci	depends on INFINIBAND
2162306a36Sopenharmony_ci	help
2262306a36Sopenharmony_ci	  Userspace InfiniBand Management Datagram (MAD) support.  This
2362306a36Sopenharmony_ci	  is the kernel side of the userspace MAD support, which allows
2462306a36Sopenharmony_ci	  userspace processes to send and receive MADs. You will also
2562306a36Sopenharmony_ci	  need libibumad from rdma-core
2662306a36Sopenharmony_ci	  <https://github.com/linux-rdma/rdma-core>.
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ciconfig INFINIBAND_USER_ACCESS
2962306a36Sopenharmony_ci	tristate "InfiniBand userspace access (verbs and CM)"
3062306a36Sopenharmony_ci	depends on MMU
3162306a36Sopenharmony_ci	help
3262306a36Sopenharmony_ci	  Userspace InfiniBand access support.  This enables the
3362306a36Sopenharmony_ci	  kernel side of userspace verbs and the userspace
3462306a36Sopenharmony_ci	  communication manager (CM).  This allows userspace processes
3562306a36Sopenharmony_ci	  to set up connections and directly access InfiniBand
3662306a36Sopenharmony_ci	  hardware for fast-path operations.  You will also need
3762306a36Sopenharmony_ci	  libibverbs, libibcm and a hardware driver library from
3862306a36Sopenharmony_ci	  rdma-core <https://github.com/linux-rdma/rdma-core>.
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ciconfig INFINIBAND_USER_MEM
4162306a36Sopenharmony_ci	bool
4262306a36Sopenharmony_ci	depends on INFINIBAND_USER_ACCESS != n
4362306a36Sopenharmony_ci	depends on MMU
4462306a36Sopenharmony_ci	select DMA_SHARED_BUFFER
4562306a36Sopenharmony_ci	default y
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ciconfig INFINIBAND_ON_DEMAND_PAGING
4862306a36Sopenharmony_ci	bool "InfiniBand on-demand paging support"
4962306a36Sopenharmony_ci	depends on INFINIBAND_USER_MEM
5062306a36Sopenharmony_ci	select MMU_NOTIFIER
5162306a36Sopenharmony_ci	select INTERVAL_TREE
5262306a36Sopenharmony_ci	select HMM_MIRROR
5362306a36Sopenharmony_ci	default y
5462306a36Sopenharmony_ci	help
5562306a36Sopenharmony_ci	  On demand paging support for the InfiniBand subsystem.
5662306a36Sopenharmony_ci	  Together with driver support this allows registration of
5762306a36Sopenharmony_ci	  memory regions without pinning their pages, fetching the
5862306a36Sopenharmony_ci	  pages on demand instead.
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ciconfig INFINIBAND_ADDR_TRANS
6162306a36Sopenharmony_ci	bool "RDMA/CM"
6262306a36Sopenharmony_ci	depends on INFINIBAND
6362306a36Sopenharmony_ci	default y
6462306a36Sopenharmony_ci	help
6562306a36Sopenharmony_ci	  Support for RDMA communication manager (CM).
6662306a36Sopenharmony_ci	  This allows for a generic connection abstraction over RDMA.
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ciconfig INFINIBAND_ADDR_TRANS_CONFIGFS
6962306a36Sopenharmony_ci	bool
7062306a36Sopenharmony_ci	depends on INFINIBAND_ADDR_TRANS && CONFIGFS_FS && !(INFINIBAND=y && CONFIGFS_FS=m)
7162306a36Sopenharmony_ci	default y
7262306a36Sopenharmony_ci	help
7362306a36Sopenharmony_ci	  ConfigFS support for RDMA communication manager (CM).
7462306a36Sopenharmony_ci	  This allows the user to config the default GID type that the CM
7562306a36Sopenharmony_ci	  uses for each device, when initiaing new connections.
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ciconfig INFINIBAND_VIRT_DMA
7862306a36Sopenharmony_ci	def_bool !HIGHMEM
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ciif INFINIBAND_USER_ACCESS || !INFINIBAND_USER_ACCESS
8162306a36Sopenharmony_ciif !UML
8262306a36Sopenharmony_cisource "drivers/infiniband/hw/bnxt_re/Kconfig"
8362306a36Sopenharmony_cisource "drivers/infiniband/hw/cxgb4/Kconfig"
8462306a36Sopenharmony_cisource "drivers/infiniband/hw/efa/Kconfig"
8562306a36Sopenharmony_cisource "drivers/infiniband/hw/erdma/Kconfig"
8662306a36Sopenharmony_cisource "drivers/infiniband/hw/hfi1/Kconfig"
8762306a36Sopenharmony_cisource "drivers/infiniband/hw/hns/Kconfig"
8862306a36Sopenharmony_cisource "drivers/infiniband/hw/irdma/Kconfig"
8962306a36Sopenharmony_cisource "drivers/infiniband/hw/mana/Kconfig"
9062306a36Sopenharmony_cisource "drivers/infiniband/hw/mlx4/Kconfig"
9162306a36Sopenharmony_cisource "drivers/infiniband/hw/mlx5/Kconfig"
9262306a36Sopenharmony_cisource "drivers/infiniband/hw/mthca/Kconfig"
9362306a36Sopenharmony_cisource "drivers/infiniband/hw/ocrdma/Kconfig"
9462306a36Sopenharmony_cisource "drivers/infiniband/hw/qedr/Kconfig"
9562306a36Sopenharmony_cisource "drivers/infiniband/hw/qib/Kconfig"
9662306a36Sopenharmony_cisource "drivers/infiniband/hw/usnic/Kconfig"
9762306a36Sopenharmony_cisource "drivers/infiniband/hw/vmw_pvrdma/Kconfig"
9862306a36Sopenharmony_cisource "drivers/infiniband/sw/rdmavt/Kconfig"
9962306a36Sopenharmony_ciendif # !UML
10062306a36Sopenharmony_cisource "drivers/infiniband/sw/rxe/Kconfig"
10162306a36Sopenharmony_cisource "drivers/infiniband/sw/siw/Kconfig"
10262306a36Sopenharmony_ciendif
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_cisource "drivers/infiniband/ulp/ipoib/Kconfig"
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_cisource "drivers/infiniband/ulp/srp/Kconfig"
10762306a36Sopenharmony_cisource "drivers/infiniband/ulp/srpt/Kconfig"
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_cisource "drivers/infiniband/ulp/iser/Kconfig"
11062306a36Sopenharmony_cisource "drivers/infiniband/ulp/isert/Kconfig"
11162306a36Sopenharmony_cisource "drivers/infiniband/ulp/rtrs/Kconfig"
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_cisource "drivers/infiniband/ulp/opa_vnic/Kconfig"
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ciendif # INFINIBAND
116