Thread (22 messages) flat view 22 messages, 4 authors, 2020-01-18

Re: [PATCH mlx5-next 09/10] net/rds: Handle ODP mr registration/unregistration

From: <hidden>
Date: 2020-01-15 21:53:36
Also in: linux-rdma

On 1/15/20 4:43 AM, Leon Romanovsky wrote:
From: Hans Westgaard Ry <redacted>

On-Demand-Paging MRs are registered using ib_reg_user_mr and
unregistered with ib_dereg_mr.

Signed-off-by: Hans Westgaard Ry <redacted>
Signed-off-by: Leon Romanovsky <redacted>
---
Have already reviewed this patchset on internal list. Couple of
minor nits below o.w patch looks good to me.

Acked-by: Santosh Shilimkar <redacted>

[...]
quoted hunk ↗ jump to hunk
diff --git a/net/rds/ib_rdma.c b/net/rds/ib_rdma.c
index c8c1e3ae8d84..5a02b313ec50 100644
--- a/net/rds/ib_rdma.c
+++ b/net/rds/ib_rdma.c
@@ -37,8 +37,15 @@

  #include "rds_single_path.h"
  #include "ib_mr.h"
+#include "rds.h"

  struct workqueue_struct *rds_ib_mr_wq;
+struct rds_ib_dereg_odp_mr {
+	struct work_struct work;
+	struct ib_mr *mr;
+};
+
+static void rds_ib_odp_mr_worker(struct work_struct *work);

  static struct rds_ib_device *rds_ib_get_device(__be32 ipaddr)
  {
@@ -213,6 +220,8 @@ void rds_ib_sync_mr(void *trans_private, int direction)
  	struct rds_ib_mr *ibmr = trans_private;
  	struct rds_ib_device *rds_ibdev = ibmr->device;

+	if (ibmr->odp)
+		return;
Add a new line here.
  	switch (direction) {
  	case DMA_FROM_DEVICE:
  		ib_dma_sync_sg_for_cpu(rds_ibdev->dev, ibmr->sg,
[...]
quoted hunk ↗ jump to hunk
diff --git a/net/rds/rdma.c b/net/rds/rdma.c
index eb23c38ce2b3..3c6afdda709b 100644
--- a/net/rds/rdma.c
+++ b/net/rds/rdma.c
@@ -177,13 +177,14 @@ static int __rds_rdma_map(struct rds_sock *rs, struct rds_get_mr_args *args,
  			  struct rds_conn_path *cp)
  {
  	struct rds_mr *mr = NULL, *found;
+	struct scatterlist *sg = NULL;
  	unsigned int nr_pages;
  	struct page **pages = NULL;
-	struct scatterlist *sg;
  	void *trans_private;
  	unsigned long flags;
  	rds_rdma_cookie_t cookie;
-	unsigned int nents;
+	unsigned int nents = 0;
+	int need_odp = 0;
  	long i;
  	int ret;
@@ -196,6 +197,20 @@ static int __rds_rdma_map(struct rds_sock *rs, struct rds_get_mr_args *args,
  		ret = -EOPNOTSUPP;
  		goto out;
  	}
New line pls
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help