0001 # SPDX-License-Identifier: GPL-2.0-only
0002 menuconfig INFINIBAND
0003 tristate "InfiniBand support"
0004 depends on HAS_IOMEM && HAS_DMA
0005 depends on NET
0006 depends on INET
0007 depends on m || IPV6 != m
0008 depends on !ALPHA
0009 select IRQ_POLL
0010 select DIMLIB
0011 help
0012 Core support for InfiniBand (IB). Make sure to also select
0013 any protocols you wish to use as well as drivers for your
0014 InfiniBand hardware.
0015
0016 if INFINIBAND
0017
0018 config INFINIBAND_USER_MAD
0019 tristate "InfiniBand userspace MAD support"
0020 depends on INFINIBAND
0021 help
0022 Userspace InfiniBand Management Datagram (MAD) support. This
0023 is the kernel side of the userspace MAD support, which allows
0024 userspace processes to send and receive MADs. You will also
0025 need libibumad from rdma-core
0026 <https://github.com/linux-rdma/rdma-core>.
0027
0028 config INFINIBAND_USER_ACCESS
0029 tristate "InfiniBand userspace access (verbs and CM)"
0030 depends on MMU
0031 help
0032 Userspace InfiniBand access support. This enables the
0033 kernel side of userspace verbs and the userspace
0034 communication manager (CM). This allows userspace processes
0035 to set up connections and directly access InfiniBand
0036 hardware for fast-path operations. You will also need
0037 libibverbs, libibcm and a hardware driver library from
0038 rdma-core <https://github.com/linux-rdma/rdma-core>.
0039
0040 config INFINIBAND_USER_MEM
0041 bool
0042 depends on INFINIBAND_USER_ACCESS != n
0043 depends on MMU
0044 select DMA_SHARED_BUFFER
0045 default y
0046
0047 config INFINIBAND_ON_DEMAND_PAGING
0048 bool "InfiniBand on-demand paging support"
0049 depends on INFINIBAND_USER_MEM
0050 select MMU_NOTIFIER
0051 select INTERVAL_TREE
0052 select HMM_MIRROR
0053 default y
0054 help
0055 On demand paging support for the InfiniBand subsystem.
0056 Together with driver support this allows registration of
0057 memory regions without pinning their pages, fetching the
0058 pages on demand instead.
0059
0060 config INFINIBAND_ADDR_TRANS
0061 bool "RDMA/CM"
0062 depends on INFINIBAND
0063 default y
0064 help
0065 Support for RDMA communication manager (CM).
0066 This allows for a generic connection abstraction over RDMA.
0067
0068 config INFINIBAND_ADDR_TRANS_CONFIGFS
0069 bool
0070 depends on INFINIBAND_ADDR_TRANS && CONFIGFS_FS && !(INFINIBAND=y && CONFIGFS_FS=m)
0071 default y
0072 help
0073 ConfigFS support for RDMA communication manager (CM).
0074 This allows the user to config the default GID type that the CM
0075 uses for each device, when initiaing new connections.
0076
0077 config INFINIBAND_VIRT_DMA
0078 def_bool !HIGHMEM
0079
0080 if INFINIBAND_USER_ACCESS || !INFINIBAND_USER_ACCESS
0081 source "drivers/infiniband/hw/bnxt_re/Kconfig"
0082 source "drivers/infiniband/hw/cxgb4/Kconfig"
0083 source "drivers/infiniband/hw/efa/Kconfig"
0084 source "drivers/infiniband/hw/erdma/Kconfig"
0085 source "drivers/infiniband/hw/hfi1/Kconfig"
0086 source "drivers/infiniband/hw/hns/Kconfig"
0087 source "drivers/infiniband/hw/irdma/Kconfig"
0088 source "drivers/infiniband/hw/mlx4/Kconfig"
0089 source "drivers/infiniband/hw/mlx5/Kconfig"
0090 source "drivers/infiniband/hw/mthca/Kconfig"
0091 source "drivers/infiniband/hw/ocrdma/Kconfig"
0092 source "drivers/infiniband/hw/qedr/Kconfig"
0093 source "drivers/infiniband/hw/qib/Kconfig"
0094 source "drivers/infiniband/hw/usnic/Kconfig"
0095 source "drivers/infiniband/hw/vmw_pvrdma/Kconfig"
0096 source "drivers/infiniband/sw/rdmavt/Kconfig"
0097 source "drivers/infiniband/sw/rxe/Kconfig"
0098 source "drivers/infiniband/sw/siw/Kconfig"
0099 endif
0100
0101 source "drivers/infiniband/ulp/ipoib/Kconfig"
0102
0103 source "drivers/infiniband/ulp/srp/Kconfig"
0104 source "drivers/infiniband/ulp/srpt/Kconfig"
0105
0106 source "drivers/infiniband/ulp/iser/Kconfig"
0107 source "drivers/infiniband/ulp/isert/Kconfig"
0108 source "drivers/infiniband/ulp/rtrs/Kconfig"
0109
0110 source "drivers/infiniband/ulp/opa_vnic/Kconfig"
0111
0112 endif # INFINIBAND