All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@ziepe.ca>
To: Li Zhijian <lizhijian@cn.fujitsu.com>
Cc: linux-rdma@vger.kernel.org, zyjzyj2000@gmail.com,
	aharonl@nvidia.com, leon@kernel.org,
	linux-kernel@vger.kernel.org, mbloch@nvidia.com,
	liweihang@huawei.com, liangwenpeng@huawei.com,
	yangx.jy@cn.fujitsu.com, rpearsonhpe@gmail.com,
	y-goto@fujitsu.com
Subject: Re: [RFC PATCH rdma-next 01/10] RDMA: mr: Introduce is_pmem
Date: Wed, 5 Jan 2022 20:21:30 -0400	[thread overview]
Message-ID: <20220106002130.GP6467@ziepe.ca> (raw)
In-Reply-To: <20211228080717.10666-2-lizhijian@cn.fujitsu.com>

On Tue, Dec 28, 2021 at 04:07:08PM +0800, Li Zhijian wrote:
> We can use it to indicate whether the registering mr is associated with
> a pmem/nvdimm or not.
> 
> Currently, we only assign it in rxe driver, for other device/drivers,
> they should implement it if needed.
> 
> RDMA FLUSH will support the persistence feature for a pmem/nvdimm.
> 
> Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com>
>  drivers/infiniband/sw/rxe/rxe_mr.c | 47 ++++++++++++++++++++++++++++++
>  include/rdma/ib_verbs.h            |  1 +
>  2 files changed, 48 insertions(+)
> 
> diff --git a/drivers/infiniband/sw/rxe/rxe_mr.c b/drivers/infiniband/sw/rxe/rxe_mr.c
> index 7c4cd19a9db2..bcd5e7afa475 100644
> +++ b/drivers/infiniband/sw/rxe/rxe_mr.c
> @@ -162,6 +162,50 @@ void rxe_mr_init_dma(struct rxe_pd *pd, int access, struct rxe_mr *mr)
>  	mr->type = IB_MR_TYPE_DMA;
>  }
>  
> +// XXX: the logic is similar with mm/memory-failure.c
> +static bool page_in_dev_pagemap(struct page *page)
> +{
> +	unsigned long pfn;
> +	struct page *p;
> +	struct dev_pagemap *pgmap = NULL;
> +
> +	pfn = page_to_pfn(page);
> +	if (!pfn) {
> +		pr_err("no such pfn for page %p\n", page);
> +		return false;
> +	}
> +
> +	p = pfn_to_online_page(pfn);
> +	if (!p) {
> +		if (pfn_valid(pfn)) {
> +			pgmap = get_dev_pagemap(pfn, NULL);
> +			if (pgmap)
> +				put_dev_pagemap(pgmap);
> +		}
> +	}
> +
> +	return !!pgmap;

You need to get Dan to check this out, but I'm pretty sure this should
be more like this:

if (is_zone_device_page(page) && page->pgmap->type == MEMORY_DEVICE_FS_DAX)


> +static bool iova_in_pmem(struct rxe_mr *mr, u64 iova, int length)
> +{
> +	struct page *page = NULL;
> +	char *vaddr = iova_to_vaddr(mr, iova, length);
> +
> +	if (!vaddr) {
> +		pr_err("not a valid iova %llu\n", iova);
> +		return false;
> +	}
> +
> +	page = virt_to_page(vaddr);

And obviously this isn't uniform for the entire umem, so I don't even
know what this is supposed to mean.

> diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
> index 6e9ad656ecb7..822ebb3425dc 100644
> +++ b/include/rdma/ib_verbs.h
> @@ -1807,6 +1807,7 @@ struct ib_mr {
>  	unsigned int	   page_size;
>  	enum ib_mr_type	   type;
>  	bool		   need_inval;
> +	bool		   is_pmem;

Or why it is being stored in the global struct?

Jason

  reply	other threads:[~2022-01-06  0:21 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-28  8:07 [RFC PATCH rdma-next 00/10] RDMA/rxe: Add RDMA FLUSH operation Li Zhijian
2021-12-28  8:07 ` [RFC PATCH rdma-next 01/10] RDMA: mr: Introduce is_pmem Li Zhijian
2022-01-06  0:21   ` Jason Gunthorpe [this message]
2022-01-06  6:12     ` lizhijian
2022-01-14  8:10       ` Li, Zhijian
2022-01-27 22:30         ` Jeff Moyer
2022-01-16 18:11       ` Dan Williams
2022-01-18  8:55         ` lizhijian
2022-01-18 15:28           ` Dan Williams
2022-01-19  2:01             ` lizhijian
2021-12-28  8:07 ` [RFC PATCH rdma-next 02/10] RDMA: Allow registering MR with flush access flags Li Zhijian
2021-12-28  8:07 ` [RFC PATCH rdma-next 03/10] RDMA/rxe: Allow registering FLUSH flags for supported device only Li Zhijian
2022-01-06  0:22   ` Jason Gunthorpe
2022-01-06  6:20     ` lizhijian
2022-01-13  6:43   ` lizhijian
2021-12-28  8:07 ` [RFC PATCH rdma-next 04/10] RDMA/rxe: Enable IB_DEVICE_RDMA_FLUSH for rxe device Li Zhijian
2022-01-06  0:22   ` Jason Gunthorpe
2022-01-06  6:26     ` lizhijian
2021-12-28  8:07 ` [RFC PATCH rdma-next 05/10] RDMA/rxe: Allow registering persistent flag for pmem MR only Li Zhijian
2021-12-30 22:25   ` Tom Talpey
2021-12-31  3:34     ` lizhijian
2021-12-31 14:40       ` Tom Talpey
2022-01-04  1:32         ` lizhijian
2021-12-28  8:07 ` [RFC PATCH rdma-next 06/10] RDMA/rxe: Implement RC RDMA FLUSH service in requester side Li Zhijian
2021-12-28  8:07 ` [RFC PATCH rdma-next 07/10] RDMA/rxe: Set BTH's SE to zero for FLUSH packet Li Zhijian
2021-12-28  8:07 ` [RFC PATCH rdma-next 08/10] RDMA/rxe: Implement flush execution in responder side Li Zhijian
2021-12-30 22:18   ` Tom Talpey
2021-12-31  1:37     ` lizhijian
2021-12-31  2:32       ` Tom Talpey
2022-01-04  8:51         ` lizhijian
2022-01-04 16:02           ` Tom Talpey
2022-01-06  0:35         ` Jason Gunthorpe
2022-01-04 16:40   ` Tom Talpey
2022-01-05  1:43     ` lizhijian
2022-01-06  0:28   ` Jason Gunthorpe
2022-01-06  6:42     ` lizhijian
2022-01-06 17:33       ` Jason Gunthorpe
2022-01-10  5:45         ` lizhijian
2022-01-10 14:34           ` Jason Gunthorpe
2022-01-11  5:34             ` lizhijian
2022-01-11 20:48               ` Jason Gunthorpe
2022-01-12  9:50                 ` lizhijian
2022-01-12 13:12                   ` Jason Gunthorpe
2022-01-13  6:29                     ` lizhijian
2021-12-28  8:07 ` [RFC PATCH rdma-next 09/10] RDMA/rxe: Implement flush completion Li Zhijian
2021-12-28  8:07 ` [RFC PATCH rdma-next 10/10] RDMA/rxe: Add RD FLUSH service support Li Zhijian
2021-12-29  8:49 ` [RFC PATCH rdma-next 00/10] RDMA/rxe: Add RDMA FLUSH operation Gromadzki, Tomasz
2021-12-29 14:35   ` Tom Talpey
2021-12-31  1:10     ` lizhijian

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=20220106002130.GP6467@ziepe.ca \
    --to=jgg@ziepe.ca \
    --cc=aharonl@nvidia.com \
    --cc=leon@kernel.org \
    --cc=liangwenpeng@huawei.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=liweihang@huawei.com \
    --cc=lizhijian@cn.fujitsu.com \
    --cc=mbloch@nvidia.com \
    --cc=rpearsonhpe@gmail.com \
    --cc=y-goto@fujitsu.com \
    --cc=yangx.jy@cn.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.