~dannf/ubuntu/+source/linux/+git/linux:peer-direct-hirsute

Last commit made on 2020-11-24
Get this branch:
git clone -b peer-direct-hirsute https://git.launchpad.net/~dannf/ubuntu/+source/linux/+git/linux
Only dann frazier can upload to this branch. If you are dann frazier please log in for upload directions.

Branch merges

Branch information

Name:
peer-direct-hirsute
Repository:
lp:~dannf/ubuntu/+source/linux/+git/linux

Recent commits

1cef09f... by Feras Daoud <email address hidden>

UBUNTU: SAUCE: RDMA/core: Increment num_free_callbacks for each peer invalidate

Issue: 2323446
Change-Id: I0aca0040b53e9ed14868b524ba2a24ed5b7f9881
Signed-off-by: Feras Daoud <email address hidden>

2389769... by Yishai Hadas <email address hidden>

UBUNTU: SAUCE: IB/umem: Fix the Peer flow to handle pinned pages properly

The pinned pages counter wasn't incremented upon ib_peer_umem_get() but
was decremented as part of ib_peer_umem_release().

This leads to a negative value in 'owning_mm->pinned_vm' and by that
time to a failure in any try to register memory as of the lock limit.

Fix the Peer flow to count the pinned pages as done for the host memory.

issue: 2298308
Change-Id: I3e4755fb47fed3a48f7491240c96d3b13bc0e9c3
Signed-off-by: Yishai Hadas <email address hidden>
[ dannf: forward-ported to v5.10-rc5 ]

8ed7359... by Yishai Hadas <email address hidden>

UBUNTU: SAUCE: IB/mlx5: Use peer client page_shift

Use peer client page_shift as part of mlx5_ib_cont_pages(), this was
part of OFED 5.0 and solved the break that was introduced when working
with nv_peer_mem with 5.1.

Issue: 2264799
Change-Id: I01ad40ccbf29a2bb4b31313215f3a142608e0acb
Signed-off-by: Yishai Hadas <email address hidden>

0c0bb8d... by Leon Romanovsky

UBUNTU: SAUCE: fixup! RDMA/core: Introduce peer memory interface

Signed-off-by: Leon Romanovsky <email address hidden>

dd550f2... by dann frazier

UBUNTU: SAUCE: RDMA/core: Introduce peer memory interface

The peer_memory_client scheme allows a driver to register with the ib_umem
system that it has the ability to understand user virtual address ranges
that are not compatible with get_user_pages(). For instance VMAs created
with io_remap_pfn_range(), or other driver special VMA.

For ranges the interface understands it can provide a DMA mapped sg_table
for use by the ib_umem, allowing user virtual ranges that cannot be
supported by get_user_pages() to be used as umems for RDMA.

This is designed to preserve the kABI, no functions or structures are
changed, only new symbols are added:

 ib_register_peer_memory_client
 ib_unregister_peer_memory_client
 ib_umem_activate_invalidation_notifier
 ib_umem_get_peer

And a bitfield in struct ib_umem uses more bits.

This interface is compatible with the two out of tree GPU drivers:
 https://github.com/RadeonOpenCompute/ROCK-Kernel-Driver/blob/master/drivers/gpu/drm/amd/amdkfd/kfd_peerdirect.c
 https://github.com/Mellanox/nv_peer_memory/blob/master/nv_peer_mem.c

NOTES (remote before sending):
 - The exact locking semantics from the GPU side during invalidation
   are confusing. I've made it sane but perhaps this will hit locking
   problems. Test with lockdep and test invalidation.

   The main difference here is that get_pages and dma_map are called
   from a context that will block progress of invalidation.

   The old design blocked progress of invalidation using a completion for
   unmap and unpin, so those should be proven safe now.

   Since the old design used a completion it doesn't work with lockdep,
   even though it has basically the same blocking semantics.

 - The API exported to the GPU side is crufty and makes very little
   sense. Functionally it should be the same still, but many useless
   things were dropped off

 - I rewrote all the comments please check spelling/grammar

 - Compile tested only

Change-Id: I1d77f52d56aec2c79e6b9d9ec1096e83a95155cd
Signed-off-by: Yishai Hadas <email address hidden>
Signed-off-by: Feras Daoud <email address hidden>
Signed-off-by: Jason Gunthorpe <email address hidden>
[dannf: Forwarded ported to v5.8 by adjusting ib_umem_get() API and
 replacing mr.c:unreg_umr() call w/ mlx5_mr_cache_invalidate()]

fb21845... by Andrea Righi

UBUNTU: Ubuntu-5.10-5.10.0-5.6

Signed-off-by: Andrea Righi <email address hidden>

703747b... by Andrea Righi

UBUNTU: [Config] add CONFIG_INFINIBAND_VIRT_DMA

Add CONFIG_INFINIBAND_VIRT_DMA, introduced after rebasing to 5.10-rc5.

NOTE: this config option can only be enabled if CONFIG_HIGHMEM is not
set and that is false in armhf, so it needs to be disabled in this
specific architecture.

As a consequence the following dependent config options are also
disabled (on armhf only):

 - CONFIG_RDMA_RXE
 - CONFIG_RDMA_SIW

This shouldn't be a problem, since these options are used by infiniband,
that is unlikely to be used with armhf.

Signed-off-by: Andrea Righi <email address hidden>

d95cc70... by Andrea Righi

UBUNTU: Rebase to v5.10-rc5

Ignore: yes
Signed-off-by: Andrea Righi <email address hidden>

1893f3f... by Andrea Righi

UBUNTU: Start new release

Ignore: yes
Signed-off-by: Andrea Righi <email address hidden>

2b7c622... by Andrea Righi

UBUNTU: Ubuntu-5.10-5.10.0-4.5

Signed-off-by: Andrea Righi <email address hidden>