linux-imx/drivers/infiniband/Kconfig
Yishai Hadas 36f30e486d IB/core: Improve ODP to use hmm_range_fault()
Move to use hmm_range_fault() instead of get_user_pags_remote() to improve
performance in a few aspects:

This includes:
- Dropping the need to allocate and free memory to hold its output

- No need any more to use put_page() to unpin the pages

- The logic to detect contiguous pages is done based on the returned
  order, no need to run per page and evaluate.

In addition, moving to use hmm_range_fault() enables to reduce page faults
in the system with it's snapshot mode, this will be introduced in next
patches from this series.

As part of this, cleanup some flows and use the required data structures
to work with hmm_range_fault().

Link: https://lore.kernel.org/r/20200930163828.1336747-2-leon@kernel.org
Signed-off-by: Yishai Hadas <yishaih@nvidia.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
2020-10-01 16:39:54 -03:00

3.4 KiB

SPDX-License-Identifier: GPL-2.0-only

menuconfig INFINIBAND tristate "InfiniBand support" depends on HAS_IOMEM && HAS_DMA depends on NET depends on INET depends on m || IPV6 != m depends on !ALPHA select IRQ_POLL select DIMLIB help Core support for InfiniBand (IB). Make sure to also select any protocols you wish to use as well as drivers for your InfiniBand hardware.

if INFINIBAND

config INFINIBAND_USER_MAD tristate "InfiniBand userspace MAD support" depends on INFINIBAND help Userspace InfiniBand Management Datagram (MAD) support. This is the kernel side of the userspace MAD support, which allows userspace processes to send and receive MADs. You will also need libibumad from rdma-core https://github.com/linux-rdma/rdma-core.

config INFINIBAND_USER_ACCESS tristate "InfiniBand userspace access (verbs and CM)" depends on MMU help Userspace InfiniBand access support. This enables the kernel side of userspace verbs and the userspace communication manager (CM). This allows userspace processes to set up connections and directly access InfiniBand hardware for fast-path operations. You will also need libibverbs, libibcm and a hardware driver library from rdma-core https://github.com/linux-rdma/rdma-core.

config INFINIBAND_USER_MEM bool depends on INFINIBAND_USER_ACCESS != n depends on MMU default y

config INFINIBAND_ON_DEMAND_PAGING bool "InfiniBand on-demand paging support" depends on INFINIBAND_USER_MEM select MMU_NOTIFIER select INTERVAL_TREE select HMM_MIRROR default y help On demand paging support for the InfiniBand subsystem. Together with driver support this allows registration of memory regions without pinning their pages, fetching the pages on demand instead.

config INFINIBAND_ADDR_TRANS bool "RDMA/CM" depends on INFINIBAND default y help Support for RDMA communication manager (CM). This allows for a generic connection abstraction over RDMA.

config INFINIBAND_ADDR_TRANS_CONFIGFS bool depends on INFINIBAND_ADDR_TRANS && CONFIGFS_FS && !(INFINIBAND=y && CONFIGFS_FS=m) default y help ConfigFS support for RDMA communication manager (CM). This allows the user to config the default GID type that the CM uses for each device, when initiaing new connections.

if INFINIBAND_USER_ACCESS || !INFINIBAND_USER_ACCESS source "drivers/infiniband/hw/mthca/Kconfig" source "drivers/infiniband/hw/qib/Kconfig" source "drivers/infiniband/hw/cxgb4/Kconfig" source "drivers/infiniband/hw/efa/Kconfig" source "drivers/infiniband/hw/i40iw/Kconfig" source "drivers/infiniband/hw/mlx4/Kconfig" source "drivers/infiniband/hw/mlx5/Kconfig" source "drivers/infiniband/hw/ocrdma/Kconfig" source "drivers/infiniband/hw/vmw_pvrdma/Kconfig" source "drivers/infiniband/hw/usnic/Kconfig" source "drivers/infiniband/hw/hns/Kconfig" source "drivers/infiniband/hw/bnxt_re/Kconfig" source "drivers/infiniband/hw/hfi1/Kconfig" source "drivers/infiniband/hw/qedr/Kconfig" source "drivers/infiniband/sw/rdmavt/Kconfig" source "drivers/infiniband/sw/rxe/Kconfig" source "drivers/infiniband/sw/siw/Kconfig" endif

source "drivers/infiniband/ulp/ipoib/Kconfig"

source "drivers/infiniband/ulp/srp/Kconfig" source "drivers/infiniband/ulp/srpt/Kconfig"

source "drivers/infiniband/ulp/iser/Kconfig" source "drivers/infiniband/ulp/isert/Kconfig" source "drivers/infiniband/ulp/rtrs/Kconfig"

source "drivers/infiniband/ulp/opa_vnic/Kconfig"

endif # INFINIBAND