mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-18 03:23:53 -04:00
Expose DMABUF functionality to userspace through the uverbs interface, enabling InfiniBand/RDMA devices to export PCI based memory regions (e.g. device memory) as DMABUF file descriptors. This allows zero-copy sharing of RDMA memory with other subsystems that support the dma-buf framework. A new UVERBS_OBJECT_DMABUF object type and allocation method were introduced. During allocation, uverbs invokes the driver to supply the rdma_user_mmap_entry associated with the given page offset (pgoff). Based on the returned rdma_user_mmap_entry, uverbs requests the driver to provide the corresponding physical-memory details as well as the driver’s PCI provider information. Using this information, dma_buf_export() is called; if it succeeds, uobj->object is set to the underlying file pointer returned by the dma-buf framework. The file descriptor number follows the standard uverbs allocation flow, but the file pointer comes from the dma-buf subsystem, including its own fops and private data. When an mmap entry is removed, uverbs iterates over its associated DMABUFs, marks them as revoked, and calls dma_buf_move_notify() so that their importers are notified. The same procedure applies during the disassociate flow; final cleanup occurs when the application closes the file. Signed-off-by: Yishai Hadas <yishaih@nvidia.com> Signed-off-by: Edward Srouji <edwards@nvidia.com> Link: https://patch.msgid.link/20260201-dmabuf-export-v3-2-da238b614fe3@nvidia.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
48 lines
1.6 KiB
Makefile
48 lines
1.6 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
infiniband-$(CONFIG_INFINIBAND_ADDR_TRANS) := rdma_cm.o
|
|
user_access-$(CONFIG_INFINIBAND_ADDR_TRANS) := rdma_ucm.o
|
|
|
|
obj-$(CONFIG_INFINIBAND) += ib_core.o ib_cm.o iw_cm.o \
|
|
$(infiniband-y)
|
|
obj-$(CONFIG_INFINIBAND_USER_MAD) += ib_umad.o
|
|
obj-$(CONFIG_INFINIBAND_USER_ACCESS) += ib_uverbs.o $(user_access-y)
|
|
|
|
ib_core-y := packer.o ud_header.o verbs.o cq.o rw.o sysfs.o \
|
|
device.o cache.o netlink.o \
|
|
roce_gid_mgmt.o mr_pool.o addr.o sa_query.o \
|
|
multicast.o mad.o smi.o agent.o mad_rmpp.o \
|
|
nldev.o restrack.o counters.o ib_core_uverbs.o \
|
|
trace.o lag.o
|
|
|
|
ib_core-$(CONFIG_SECURITY_INFINIBAND) += security.o
|
|
ib_core-$(CONFIG_CGROUP_RDMA) += cgroup.o
|
|
|
|
ib_cm-y := cm.o cm_trace.o
|
|
|
|
iw_cm-y := iwcm.o iwpm_util.o iwpm_msg.o
|
|
|
|
CFLAGS_cma_trace.o += -I$(src)
|
|
rdma_cm-y := cma.o cma_trace.o
|
|
|
|
rdma_cm-$(CONFIG_INFINIBAND_ADDR_TRANS_CONFIGFS) += cma_configfs.o
|
|
|
|
rdma_ucm-y := ucma.o
|
|
|
|
ib_umad-y := user_mad.o
|
|
|
|
ib_uverbs-y := uverbs_main.o uverbs_cmd.o uverbs_marshall.o \
|
|
rdma_core.o uverbs_std_types.o uverbs_ioctl.o \
|
|
uverbs_std_types_cq.o \
|
|
uverbs_std_types_dmabuf.o \
|
|
uverbs_std_types_dmah.o \
|
|
uverbs_std_types_flow_action.o uverbs_std_types_dm.o \
|
|
uverbs_std_types_mr.o uverbs_std_types_counters.o \
|
|
uverbs_uapi.o uverbs_std_types_device.o \
|
|
uverbs_std_types_async_fd.o \
|
|
uverbs_std_types_srq.o \
|
|
uverbs_std_types_wq.o \
|
|
uverbs_std_types_qp.o \
|
|
ucaps.o
|
|
ib_uverbs-$(CONFIG_INFINIBAND_USER_MEM) += umem.o umem_dmabuf.o
|
|
ib_uverbs-$(CONFIG_INFINIBAND_ON_DEMAND_PAGING) += umem_odp.o
|