All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@nvidia.com>
To: Bob Pearson <rpearsonhpe@gmail.com>
Cc: zyjzyj2000@gmail.com, leonro@nvidia.com, yangx.jy@fujitsu.com,
	lizhijian@fujitsu.com, linux-rdma@vger.kernel.org
Subject: Re: [PATCH for-next v7 0/6] RDMA/rxe: Replace mr page map with an xarray
Date: Fri, 27 Jan 2023 12:23:08 -0400	[thread overview]
Message-ID: <Y9P6bGbtTNYIdoWN@nvidia.com> (raw)
In-Reply-To: <20230119235936.19728-1-rpearsonhpe@gmail.com>

On Thu, Jan 19, 2023 at 05:59:31PM -0600, Bob Pearson wrote:
> This patch series replaces the page map carried in each memory region
> with a struct xarray. It is based on a sketch developed by Jason
> Gunthorpe. The first five patches are preparation that tries to
> cleanly isolate all the mr specific code into rxe_mr.c. The sixth
> patch is the actual change.
> 
> v7:
>   Link: https://lore.kernel.org/linux-rdma/Y8f53jdDAN0B9qy7@nvidia.com/
>   Made changes requested by Jason to return RESPST_ERR_XXX from rxe_mr.c
>   to rxe_resp.c.

I took it to for-next, but I made these changes, please check:

diff --git a/drivers/infiniband/sw/rxe/rxe_mr.c b/drivers/infiniband/sw/rxe/rxe_mr.c
index fe4049330c9f19..c80458634962c6 100644
--- a/drivers/infiniband/sw/rxe/rxe_mr.c
+++ b/drivers/infiniband/sw/rxe/rxe_mr.c
@@ -114,7 +114,8 @@ static int rxe_mr_fill_pages_from_sgt(struct rxe_mr *mr, struct sg_table *sgt)
 
 			if (persistent && !is_pmem_page(page)) {
 				rxe_dbg_mr(mr, "Page can't be persistent\n");
-				return -EINVAL;
+				xas_set_err(&xas, -EINVAL);
+				break;
 			}
 
 			xas_store(&xas, page);
@@ -213,7 +214,6 @@ static int rxe_set_page(struct ib_mr *ibmr, u64 iova)
 {
 	struct rxe_mr *mr = to_rmr(ibmr);
 	struct page *page = virt_to_page(iova & mr->page_mask);
-	XA_STATE(xas, &mr->page_list, mr->nbuf);
 	bool persistent = !!(mr->access & IB_ACCESS_FLUSH_PERSISTENT);
 	int err;
 
@@ -225,13 +225,7 @@ static int rxe_set_page(struct ib_mr *ibmr, u64 iova)
 	if (unlikely(mr->nbuf == mr->num_buf))
 		return -ENOMEM;
 
-	do {
-		xas_lock(&xas);
-		xas_store(&xas, page);
-		xas_unlock(&xas);
-	} while (xas_nomem(&xas, GFP_KERNEL));
-
-	err = xas_error(&xas);
+	err = xa_err(xa_store(&mr->page_list, mr->nbuf, page, GFP_KERNEL));
 	if (err)
 		return err;
 
@@ -458,10 +452,8 @@ int rxe_flush_pmem_iova(struct rxe_mr *mr, u64 iova, unsigned int length)
 				mr_page_size(mr) - page_offset);
 
 		va = kmap_local_page(page);
-		if (!va)
-			return -EFAULT;
-
 		arch_wb_cache_pmem(va + page_offset, bytes);
+		kunmap_local(va);
 
 		length -= bytes;
 		iova += bytes;

  parent reply	other threads:[~2023-01-27 16:23 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-19 23:59 [PATCH for-next v7 0/6] RDMA/rxe: Replace mr page map with an xarray Bob Pearson
2023-01-19 23:59 ` [PATCH for-next v7 1/6] RDMA/rxe: Cleanup mr_check_range Bob Pearson
2023-01-19 23:59 ` [PATCH for-next v7 2/6] RDMA/rxe: Move rxe_map_mr_sg to rxe_mr.c Bob Pearson
2023-01-19 23:59 ` [PATCH for-next v7 3/6] RDMA-rxe: Isolate mr code from atomic_reply() Bob Pearson
2023-01-19 23:59 ` [PATCH for-next v7 4/6] RDMA-rxe: Isolate mr code from atomic_write_reply() Bob Pearson
2023-01-19 23:59 ` [PATCH for-next v7 5/6] RDMA/rxe: Cleanup page variables in rxe_mr.c Bob Pearson
2023-01-19 23:59 ` [PATCH for-next v7 6/6] RDMA/rxe: Replace rxe_map and rxe_phys_buf by xarray Bob Pearson
2023-01-27 16:23 ` Jason Gunthorpe [this message]
2023-01-27 17:05   ` [PATCH for-next v7 0/6] RDMA/rxe: Replace mr page map with an xarray Bob Pearson
2023-01-27 19:26   ` Bob Pearson
  -- strict thread matches above, loose matches on Subject: below --
2023-02-07  7:53 [PATCH for-next v7 6/6] RDMA/rxe: Replace rxe_map and rxe_phys_buf by xarray kernel test robot
2023-02-07  8:03 ` Dan Carpenter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y9P6bGbtTNYIdoWN@nvidia.com \
    --to=jgg@nvidia.com \
    --cc=leonro@nvidia.com \
    --cc=linux-rdma@vger.kernel.org \
    --cc=lizhijian@fujitsu.com \
    --cc=rpearsonhpe@gmail.com \
    --cc=yangx.jy@fujitsu.com \
    --cc=zyjzyj2000@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.