• Yishai Hadas's avatar
    RDMA/mlx5: Add support for DMABUF MR registrations with Data-direct · de8f847a
    Yishai Hadas authored
    Add support for DMABUF MR registrations with Data-direct device.
    
    Upon userspace calling to register a DMABUF MR with the data direct bit
    set, the below algorithm will be followed.
    
    1) Obtain a pinned DMABUF umem from the IB core using the user input
    parameters (FD, offset, length) and the DMA PF device.  The DMA PF
    device is needed to allow the IOMMU to enable the DMA PF to access the
    user buffer over PCI.
    
    2) Create a KSM MKEY by setting its entries according to the user buffer
    VA to IOVA mapping, with the MKEY being the data direct device-crossed
    MKEY. This KSM MKEY is umrable and will be used as part of the MR cache.
    The PD for creating it is the internal device 'data direct' kernel one.
    
    3) Create a crossing MKEY that points to the KSM MKEY using the crossing
    access mode.
    
    4) Manage the KSM MKEY by adding it to a list of 'data direct' MKEYs
    managed on the mlx5_ib device.
    
    5) Return the crossing MKEY to the user, created with its supplied PD.
    
    Upon DMA PF unbind flow, the driver will revoke the KSM entries.
    The final deregistration will occur under the hood once the application
    deregisters its MKEY.
    
    Notes:
    - This version supports only the PINNED UMEM mode, so there is no
      dependency on ODP.
    - The IOVA supplied by the application must be system page aligned due to
      HW translations of KSM.
    - The crossing MKEY will not be umrable or part of the MR cache, as we
      cannot change its crossed (i.e. KSM) MKEY over UMR.
    Signed-off-by: default avatarYishai Hadas <yishaih@nvidia.com>
    Link: https://patch.msgid.link/1f99d8020ed540d9702b9e2252a145a439609ba6.1722512548.git.leon@kernel.orgSigned-off-by: default avatarLeon Romanovsky <leon@kernel.org>
    de8f847a
mlx5_ib.h 47.6 KB