From: Zhu Yanjun <yanjun.zhu@linux.dev>
To: "Zhijian Li (Fujitsu)" <lizhijian@fujitsu.com>,
"zyjzyj2000@gmail.com" <zyjzyj2000@gmail.com>,
"jgg@ziepe.ca" <jgg@ziepe.ca>,
"leon@kernel.org" <leon@kernel.org>,
"linux-rdma@vger.kernel.org" <linux-rdma@vger.kernel.org>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"rpearsonhpe@gmail.com" <rpearsonhpe@gmail.com>,
"Daisuke Matsuda (Fujitsu)" <matsuda-daisuke@fujitsu.com>,
"bvanassche@acm.org" <bvanassche@acm.org>
Subject: Re: [PATCH RFC 1/2] RDMA/rxe: don't allow registering !PAGE_SIZE mr
Date: Mon, 30 Oct 2023 17:43:42 +0800 [thread overview]
Message-ID: <6e7df8dc-e31b-472c-86fb-0aef8f6e712b@linux.dev> (raw)
In-Reply-To: <784a65e3-5438-4700-b3e4-1d72d144ec2a@fujitsu.com>
在 2023/10/30 16:13, Zhijian Li (Fujitsu) 写道:
>
>
> On 27/10/2023 16:17, Zhu Yanjun wrote:
>> 在 2023/10/27 13:41, Li Zhijian 写道:
>>> mr->page_list only encodes *page without page offset, when
>>> page_size != PAGE_SIZE, we cannot restore the address with a wrong
>>> page_offset.
>>>
>>> Note that this patch will break some ULPs that try to register 4K
>>> MR when PAGE_SIZE is not 4K.
>>> SRP and nvme over RXE is known to be impacted.
>>
>> When ULP uses folio or compound page, ULP can not work well with RXE after this commit is applied.
>>
>> Perhaps removing page_size set in RXE is a good solution because page_size is set twice, firstly page_size is set in infiniband/core, secondly it is set in RXE.
>
> Does The RXE one mean rxe_mr_init(), I think rxe_reg_user_mr() requires this.
Please read the discussions carefully. This problem has been discussed.
Best Regards,
Zhu Yanjun
>
> 48 static void rxe_mr_init(int access, struct rxe_mr *mr)
> 49 {
> 50 u32 key = mr->elem.index << 8 | rxe_get_next_key(-1);
> 51
> 52 /* set ibmr->l/rkey and also copy into private l/rkey
> 53 * for user MRs these will always be the same
> 54 * for cases where caller 'owns' the key portion
> 55 * they may be different until REG_MR WQE is executed.
> 56 */
> 57 mr->lkey = mr->ibmr.lkey = key;
> 58 mr->rkey = mr->ibmr.rkey = key;
> 59
> 60 mr->access = access;
> 61 mr->ibmr.page_size = PAGE_SIZE;
> 62 mr->page_mask = PAGE_MASK;
> 63 mr->page_shift = PAGE_SHIFT;
> 64 mr->state = RXE_MR_STATE_INVALID;
> 65 }
>
>
> Thanks
> Zhijian
>
>>
>> When folio or compound page is used in ULP, it is very possible that page_size in infiniband/core is different from the page_size in RXE
>>
>> Not sure what problem this difference will cause.
>>
>> Zhu Yanjun
>>
>>>
>>> Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
>>> ---
>>> drivers/infiniband/sw/rxe/rxe_mr.c | 6 ++++++
>>> 1 file changed, 6 insertions(+)
>>>
>>> diff --git a/drivers/infiniband/sw/rxe/rxe_mr.c b/drivers/infiniband/sw/rxe/rxe_mr.c
>>> index f54042e9aeb2..61a136ea1d91 100644
>>> --- a/drivers/infiniband/sw/rxe/rxe_mr.c
>>> +++ b/drivers/infiniband/sw/rxe/rxe_mr.c
>>> @@ -234,6 +234,12 @@ int rxe_map_mr_sg(struct ib_mr *ibmr, struct scatterlist *sgl,
>>> struct rxe_mr *mr = to_rmr(ibmr);
>>> unsigned int page_size = mr_page_size(mr);
>>> + if (page_size != PAGE_SIZE) {
>>> + rxe_info_mr(mr, "Unsupported MR with page_size %u, expect %lu\n",
>>> + page_size, PAGE_SIZE);
>>> + return -EOPNOTSUPP;
>>> + }
>>> +
>>> mr->nbuf = 0;
>>> mr->page_shift = ilog2(page_size);
>>> mr->page_mask = ~((u64)page_size - 1);
next prev parent reply other threads:[~2023-10-30 9:43 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-27 5:41 [PATCH RFC 1/2] RDMA/rxe: don't allow registering !PAGE_SIZE mr Li Zhijian
2023-10-27 5:41 ` [PATCH RFC 2/2] RDMA/rxe: set RXE_PAGE_SIZE_CAP to PAGE_SIZE Li Zhijian
2023-10-27 21:47 ` Bart Van Assche
2023-10-28 3:52 ` Zhu Yanjun
2023-10-27 8:17 ` [PATCH RFC 1/2] RDMA/rxe: don't allow registering !PAGE_SIZE mr Zhu Yanjun
2023-10-27 21:46 ` Bart Van Assche
2023-10-28 2:48 ` Zhu Yanjun
2023-10-28 23:07 ` Bart Van Assche
2023-10-29 3:22 ` Zhu Yanjun
2023-10-30 8:13 ` Zhijian Li (Fujitsu)
2023-10-30 9:43 ` Zhu Yanjun [this message]
2023-10-30 7:51 ` Zhijian Li (Fujitsu)
2023-10-30 12:40 ` Jason Gunthorpe
2023-10-31 8:52 ` Zhu Yanjun
2023-10-31 13:19 ` Jason Gunthorpe
2023-11-01 0:58 ` Greg Sword
2023-10-31 9:59 ` Zhijian Li (Fujitsu)
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=6e7df8dc-e31b-472c-86fb-0aef8f6e712b@linux.dev \
--to=yanjun.zhu@linux.dev \
--cc=bvanassche@acm.org \
--cc=jgg@ziepe.ca \
--cc=leon@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=lizhijian@fujitsu.com \
--cc=matsuda-daisuke@fujitsu.com \
--cc=rpearsonhpe@gmail.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.