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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/15/20 4:43 AM, Leon Romanovsky wrote:
From: Hans Westgaard Ry <hans.westgaard.ry@xxxxxxxxxx>

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

Signed-off-by: Hans Westgaard Ry <hans.westgaard.ry@xxxxxxxxxx>
Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx>
---

Have already reviewed this patchset on internal list. Couple of
minor nits below o.w patch looks good to me.

Acked-by: Santosh Shilimkar <santosh.shilimkar@xxxxxxxxxx>

[...]

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,

[...]

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




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux