]> git.baikalelectronics.ru Git - kernel.git/commit
RDMA/mlx5: Allow larger pages in DevX umem
authorJason Gunthorpe <jgg@nvidia.com>
Thu, 4 Mar 2021 13:05:01 +0000 (15:05 +0200)
committerJason Gunthorpe <jgg@nvidia.com>
Fri, 12 Mar 2021 00:20:37 +0000 (20:20 -0400)
commit6a30b2c872b125aea938384052937ae4d0c0bdce
treee86407345a00ef5e2bb2a7ee81c2e42b50cf3e89
parentfdbe9233705135984a747d5fa7220e9715c53669
RDMA/mlx5: Allow larger pages in DevX umem

The umem DMA list calculation was locked at 4k pages due to confusion
around how this API works and is used when larger pages are present.

The conclusion is:

 - umem's cannot extend past what is mapped into the process, so creating
   a lage page size and referring to a sub-range is not allowed

 - umem's must always have a page offset of zero, except for sub PAGE_SIZE
   umems

 - The feature of umem_offset to create multiple objects inside a umem
   is buggy and isn't used anyplace. Thus we can assume all users of the
   current API have umem_offset == 0 as well

Provide a new page size calculator that limits the DMA list to the VA
range and enforces umem_offset == 0.

Allow user space to specify the page sizes which it can accept, this
bitmap must be derived from the intended use of the umem, based on
per-usage HW limitations.

Link: https://lore.kernel.org/r/20210304130501.1102577-4-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>
drivers/infiniband/hw/mlx5/devx.c
include/uapi/rdma/mlx5_user_ioctl_cmds.h