<div dir="ltr">Hi Dann-<div><br></div><div>We discussed this in the Kernel Team meeting today -- we've got some significant concerns about applying this to Focal.</div><div><br></div><div>It's awfully huge, and appears to change lots of API-level stuff which could be a problem for other users of the subsystem (as you noted -- "Of course, we can't rule out other users").  We are also very reluctant to apply such a massive change to our Focal kernel source for fear that it will be highly likely to result in merge collisions with future upstream v5.4-stable updates.</div><div><br></div><div>The team would also like to know: How large and invasive is the Hirsute/Impish SAUCE delta for this, compared to this Focal backport?</div><div><br></div><div> -Kamal</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Oct 14, 2021 at 4:04 PM dann frazier <<a href="mailto:dann.frazier@canonical.com">dann.frazier@canonical.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">BugLink: <a href="https://launchpad.net/bugs/1923104" rel="noreferrer" target="_blank">https://launchpad.net/bugs/1923104</a><br>
BugLink: <a href="https://launchpad.net/bugs/1947206" rel="noreferrer" target="_blank">https://launchpad.net/bugs/1947206</a><br>
<br>
This patchset was last discussed here as an RFC:<br>
  <a href="https://lists.ubuntu.com/archives/kernel-team/2021-August/123747.html" rel="noreferrer" target="_blank">https://lists.ubuntu.com/archives/kernel-team/2021-August/123747.html</a><br>
This is the first formal submission for focal.<br>
<br>
= What is this? =<br>
Nvidia's GPUDirect RDMA feature requires the nvidia_peermem module, which<br>
is bundled along with the nvidia driver in the >= 460-server branches.<br>
nvidia_peermem itself depends on a non-upstream infiniband interface called<br>
"IB peer memory". We ship a SAUCE patch for IB peer memory in hirsute<br>
and impish, but not in the focal LTS kernel. This means that the<br>
nvidia_peermem module we ship in l-r-m will not load in the focal LTS<br>
kernel.<br>
<br>
This is a backport of the SAUCE patch for IB peer memory that we're<br>
carrying in hirsute/impish to focal.<br>
<br>
= Upstream status =<br>
This feature is not expected to ever land upstream in this form. There<br>
is work going on upstream (dma-buf/p2pdma I believe) that is expected<br>
to provide equivalent functionality in the future, but it's not clear<br>
when all the pieces will be in place for it. And even when they are,<br>
I suspect it will be far too invasive to integrate into our 5.4.<br>
<br>
= Porting Assistance =<br>
We have a commitment to assist with porting this patch set forward to new<br>
kernel versions, including security/bug fixes we pull in from upstream stable.<br>
<br>
= Testing =<br>
Nvidia have tested this internally, both prior to sending us the patch,<br>
and once again with a PPA kernel we provided. We have an automated<br>
functional smoke test that we plan to integrate into SRU regression<br>
testing.<br>
<br>
= New patch dependency =<br>
Going back to 5.4 requires backporting an additional upstream patch,<br>
which changes the API of an exported symbol (ib_umem_get). The only out<br>
of tree modules of which I'm aware that use this symbol are the Mellanox<br>
OFED drivers, but they also bundle their own ib_core module that overrides<br>
the ib_umem_get interface we provide, so they aren't directly impacted.<br>
Of course, we can't rule out other users.<br>
<br>
History:<br>
<br>
v1:<br>
 - Added additional patch from Nvidia that provides a few updates. The<br>
   equivalent changes are also currently pending review for both hirsute<br>
   and impish:<br>
     <a href="https://lists.ubuntu.com/archives/kernel-team/2021-October/124937.html" rel="noreferrer" target="_blank">https://lists.ubuntu.com/archives/kernel-team/2021-October/124937.html</a><br>
RFC v2:<br>
 - Add some paragraphs of context into this cover letter<br>
 - Describe backport process for upstream patch<br>
 - Tag non-upstream patch as SAUCE and clarify provenance and testing<br>
<br>
Feras Daoud (1):<br>
  [SRU Focal] UBUNTU: SAUCE: RDMA/core: Introduce peer memory interface<br>
<br>
Jack Morgenstein (1):<br>
  [SRU Focal] UBUNTU: SAUCE: RDMA/core: Updated ib_peer_memory<br>
<br>
Moni Shoua (1):<br>
  [SRU Focal] IB: Allow calls to ib_umem_get from kernel ULPs<br>
<br>
dann frazier (1):<br>
  UBUNTU: Ubuntu-5.4.0-89.100+peerdirect.1<br>
<br>
 debian.master/changelog                       |  15 +-<br>
 drivers/infiniband/core/Makefile              |   2 +-<br>
 drivers/infiniband/core/ib_peer_mem.h         |  58 ++<br>
 drivers/infiniband/core/peer_mem.c            | 559 ++++++++++++++++++<br>
 drivers/infiniband/core/umem.c                |  69 ++-<br>
 drivers/infiniband/core/umem_odp.c            |  33 +-<br>
 drivers/infiniband/hw/bnxt_re/ib_verbs.c      |  12 +-<br>
 drivers/infiniband/hw/cxgb3/iwch_provider.c   |   2 +-<br>
 drivers/infiniband/hw/cxgb4/mem.c             |   2 +-<br>
 drivers/infiniband/hw/efa/efa_verbs.c         |   2 +-<br>
 drivers/infiniband/hw/hns/hns_roce_cq.c       |   2 +-<br>
 drivers/infiniband/hw/hns/hns_roce_db.c       |   3 +-<br>
 drivers/infiniband/hw/hns/hns_roce_mr.c       |   4 +-<br>
 drivers/infiniband/hw/hns/hns_roce_qp.c       |   2 +-<br>
 drivers/infiniband/hw/hns/hns_roce_srq.c      |   5 +-<br>
 drivers/infiniband/hw/i40iw/i40iw_verbs.c     |   2 +-<br>
 drivers/infiniband/hw/mlx4/cq.c               |   2 +-<br>
 drivers/infiniband/hw/mlx4/doorbell.c         |   3 +-<br>
 drivers/infiniband/hw/mlx4/mr.c               |   8 +-<br>
 drivers/infiniband/hw/mlx4/qp.c               |   5 +-<br>
 drivers/infiniband/hw/mlx4/srq.c              |   3 +-<br>
 drivers/infiniband/hw/mlx5/cq.c               |  11 +-<br>
 drivers/infiniband/hw/mlx5/devx.c             |   4 +-<br>
 drivers/infiniband/hw/mlx5/doorbell.c         |   3 +-<br>
 drivers/infiniband/hw/mlx5/mem.c              |  11 +-<br>
 drivers/infiniband/hw/mlx5/mr.c               |  80 ++-<br>
 drivers/infiniband/hw/mlx5/odp.c              |   2 +-<br>
 drivers/infiniband/hw/mlx5/qp.c               |   4 +-<br>
 drivers/infiniband/hw/mlx5/srq.c              |   2 +-<br>
 drivers/infiniband/hw/mthca/mthca_provider.c  |   2 +-<br>
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c   |   2 +-<br>
 drivers/infiniband/hw/qedr/verbs.c            |   9 +-<br>
 drivers/infiniband/hw/vmw_pvrdma/pvrdma_cq.c  |   2 +-<br>
 drivers/infiniband/hw/vmw_pvrdma/pvrdma_mr.c  |   2 +-<br>
 drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c  |   7 +-<br>
 drivers/infiniband/hw/vmw_pvrdma/pvrdma_srq.c |   2 +-<br>
 drivers/infiniband/sw/rdmavt/mr.c             |   2 +-<br>
 drivers/infiniband/sw/rxe/rxe_mr.c            |   2 +-<br>
 include/linux/mlx5/mlx5_ifc.h                 |  11 +-<br>
 include/rdma/ib_umem.h                        |  38 +-<br>
 include/rdma/ib_umem_odp.h                    |   9 +-<br>
 include/rdma/peer_mem.h                       | 175 ++++++<br>
 42 files changed, 1043 insertions(+), 130 deletions(-)<br>
 create mode 100644 drivers/infiniband/core/ib_peer_mem.h<br>
 create mode 100644 drivers/infiniband/core/peer_mem.c<br>
 create mode 100644 include/rdma/peer_mem.h<br>
<br>
-- <br>
2.33.0<br>
<br>
<br>
-- <br>
kernel-team mailing list<br>
<a href="mailto:kernel-team@lists.ubuntu.com" target="_blank">kernel-team@lists.ubuntu.com</a><br>
<a href="https://lists.ubuntu.com/mailman/listinfo/kernel-team" rel="noreferrer" target="_blank">https://lists.ubuntu.com/mailman/listinfo/kernel-team</a><br>
</blockquote></div>