forked from Minki/linux
36f30e486d
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>
108 lines
3.4 KiB
Plaintext
108 lines
3.4 KiB
Plaintext
# 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
|