linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] RDMA/mlx5: return the EFAULT per ibv_advise_mr(3)
@ 2021-08-01  9:20 Li Zhijian
  2021-08-01 11:27 ` Leon Romanovsky
  2021-08-03 16:25 ` Jason Gunthorpe
  0 siblings, 2 replies; 13+ messages in thread
From: Li Zhijian @ 2021-08-01  9:20 UTC (permalink / raw)
  To: leon, dledford, jgg, linux-rdma, linux-kernel; +Cc: Li Zhijian

ibv_advise_mr(3) says:
EFAULT In one of the following: o When the range requested is out of the  MR  bounds,
       or  when  parts of it are not part of the process address space. o One of the
       lkeys provided in the scatter gather list is invalid or with wrong write access

Actually get_prefetchable_mr() will return NULL if it see above conditions

Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com>
---
 drivers/infiniband/hw/mlx5/odp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/infiniband/hw/mlx5/odp.c b/drivers/infiniband/hw/mlx5/odp.c
index d0d98e584ebc..8d2a626c87cf 100644
--- a/drivers/infiniband/hw/mlx5/odp.c
+++ b/drivers/infiniband/hw/mlx5/odp.c
@@ -1791,7 +1791,7 @@ static int mlx5_ib_prefetch_sg_list(struct ib_pd *pd,
 
 		mr = get_prefetchable_mr(pd, advice, sg_list[i].lkey);
 		if (!mr)
-			return -ENOENT;
+			return -EFAULT;
 		ret = pagefault_mr(mr, sg_list[i].addr, sg_list[i].length,
 				   &bytes_mapped, pf_flags);
 		if (ret < 0) {
-- 
2.30.2




^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH] RDMA/mlx5: return the EFAULT per ibv_advise_mr(3)
  2021-08-01  9:20 [PATCH] RDMA/mlx5: return the EFAULT per ibv_advise_mr(3) Li Zhijian
@ 2021-08-01 11:27 ` Leon Romanovsky
  2021-08-03 16:25 ` Jason Gunthorpe
  1 sibling, 0 replies; 13+ messages in thread
From: Leon Romanovsky @ 2021-08-01 11:27 UTC (permalink / raw)
  To: Li Zhijian; +Cc: dledford, jgg, linux-rdma, linux-kernel

On Sun, Aug 01, 2021 at 05:20:50PM +0800, Li Zhijian wrote:
> ibv_advise_mr(3) says:
> EFAULT In one of the following: o When the range requested is out of the  MR  bounds,
>        or  when  parts of it are not part of the process address space. o One of the
>        lkeys provided in the scatter gather list is invalid or with wrong write access
> 
> Actually get_prefetchable_mr() will return NULL if it see above conditions
> 
> Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com>
> ---
>  drivers/infiniband/hw/mlx5/odp.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 

Thanks,
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] RDMA/mlx5: return the EFAULT per ibv_advise_mr(3)
  2021-08-01  9:20 [PATCH] RDMA/mlx5: return the EFAULT per ibv_advise_mr(3) Li Zhijian
  2021-08-01 11:27 ` Leon Romanovsky
@ 2021-08-03 16:25 ` Jason Gunthorpe
  2021-08-03 17:56   ` Leon Romanovsky
  1 sibling, 1 reply; 13+ messages in thread
From: Jason Gunthorpe @ 2021-08-03 16:25 UTC (permalink / raw)
  To: Li Zhijian; +Cc: leon, dledford, linux-rdma, linux-kernel

On Sun, Aug 01, 2021 at 05:20:50PM +0800, Li Zhijian wrote:
> ibv_advise_mr(3) says:
> EFAULT In one of the following: o When the range requested is out of the  MR  bounds,
>        or  when  parts of it are not part of the process address space. o One of the
>        lkeys provided in the scatter gather list is invalid or with wrong write access
> 
> Actually get_prefetchable_mr() will return NULL if it see above conditions

No, get_prefetchable_mr() returns NULL if the mkey is invalid

The above is talking about the address, which is checked inside
pagefault_mr() and does return EFAULT for all the cases I can see?

Jason

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] RDMA/mlx5: return the EFAULT per ibv_advise_mr(3)
  2021-08-03 16:25 ` Jason Gunthorpe
@ 2021-08-03 17:56   ` Leon Romanovsky
  2021-08-03 18:13     ` Jason Gunthorpe
  0 siblings, 1 reply; 13+ messages in thread
From: Leon Romanovsky @ 2021-08-03 17:56 UTC (permalink / raw)
  To: Jason Gunthorpe; +Cc: Li Zhijian, dledford, linux-rdma, linux-kernel

On Tue, Aug 03, 2021 at 01:25:07PM -0300, Jason Gunthorpe wrote:
> On Sun, Aug 01, 2021 at 05:20:50PM +0800, Li Zhijian wrote:
> > ibv_advise_mr(3) says:
> > EFAULT In one of the following: o When the range requested is out of the  MR  bounds,
> >        or  when  parts of it are not part of the process address space. o One of the
> >        lkeys provided in the scatter gather list is invalid or with wrong write access
> > 
> > Actually get_prefetchable_mr() will return NULL if it see above conditions
> 
> No, get_prefetchable_mr() returns NULL if the mkey is invalid

And what is this?
  1701 static struct mlx5_ib_mr *                         
  1702 get_prefetchable_mr(struct ib_pd *pd, enum ib_uverbs_advise_mr_advice advice,
  1703                     u32 lkey)

...

  1721         /* prefetch with write-access must be supported by the MR */
  1722         if (advice == IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_WRITE &&
  1723             !mr->umem->writable) {
  1724                 mr = NULL;
  1725                 goto end;
  1726         }


> 
> The above is talking about the address, which is checked inside
> pagefault_mr() and does return EFAULT for all the cases I can see?
> 
> Jason

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] RDMA/mlx5: return the EFAULT per ibv_advise_mr(3)
  2021-08-03 17:56   ` Leon Romanovsky
@ 2021-08-03 18:13     ` Jason Gunthorpe
  2021-08-04  5:35       ` Leon Romanovsky
  0 siblings, 1 reply; 13+ messages in thread
From: Jason Gunthorpe @ 2021-08-03 18:13 UTC (permalink / raw)
  To: Leon Romanovsky; +Cc: Li Zhijian, dledford, linux-rdma, linux-kernel

On Tue, Aug 03, 2021 at 08:56:54PM +0300, Leon Romanovsky wrote:
> On Tue, Aug 03, 2021 at 01:25:07PM -0300, Jason Gunthorpe wrote:
> > On Sun, Aug 01, 2021 at 05:20:50PM +0800, Li Zhijian wrote:
> > > ibv_advise_mr(3) says:
> > > EFAULT In one of the following: o When the range requested is out of the  MR  bounds,
> > >        or  when  parts of it are not part of the process address space. o One of the
> > >        lkeys provided in the scatter gather list is invalid or with wrong write access
> > > 
> > > Actually get_prefetchable_mr() will return NULL if it see above conditions
> > 
> > No, get_prefetchable_mr() returns NULL if the mkey is invalid
> 
> And what is this?
>   1701 static struct mlx5_ib_mr *                         
>   1702 get_prefetchable_mr(struct ib_pd *pd, enum ib_uverbs_advise_mr_advice advice,
>   1703                     u32 lkey)
> 
> ...
> 
>   1721         /* prefetch with write-access must be supported by the MR */
>   1722         if (advice == IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_WRITE &&
>   1723             !mr->umem->writable) {
>   1724                 mr = NULL;
>   1725                 goto end;
>   1726         }

I would say that is an invalid mkey

Jason

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] RDMA/mlx5: return the EFAULT per ibv_advise_mr(3)
  2021-08-03 18:13     ` Jason Gunthorpe
@ 2021-08-04  5:35       ` Leon Romanovsky
  2021-08-04 18:50         ` Jason Gunthorpe
  0 siblings, 1 reply; 13+ messages in thread
From: Leon Romanovsky @ 2021-08-04  5:35 UTC (permalink / raw)
  To: Jason Gunthorpe; +Cc: Li Zhijian, dledford, linux-rdma, linux-kernel

On Tue, Aug 03, 2021 at 03:13:41PM -0300, Jason Gunthorpe wrote:
> On Tue, Aug 03, 2021 at 08:56:54PM +0300, Leon Romanovsky wrote:
> > On Tue, Aug 03, 2021 at 01:25:07PM -0300, Jason Gunthorpe wrote:
> > > On Sun, Aug 01, 2021 at 05:20:50PM +0800, Li Zhijian wrote:
> > > > ibv_advise_mr(3) says:
> > > > EFAULT In one of the following: o When the range requested is out of the  MR  bounds,
> > > >        or  when  parts of it are not part of the process address space. o One of the
> > > >        lkeys provided in the scatter gather list is invalid or with wrong write access
> > > > 
> > > > Actually get_prefetchable_mr() will return NULL if it see above conditions
> > > 
> > > No, get_prefetchable_mr() returns NULL if the mkey is invalid
> > 
> > And what is this?
> >   1701 static struct mlx5_ib_mr *                         
> >   1702 get_prefetchable_mr(struct ib_pd *pd, enum ib_uverbs_advise_mr_advice advice,
> >   1703                     u32 lkey)
> > 
> > ...
> > 
> >   1721         /* prefetch with write-access must be supported by the MR */
> >   1722         if (advice == IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_WRITE &&
> >   1723             !mr->umem->writable) {
> >   1724                 mr = NULL;
> >   1725                 goto end;
> >   1726         }
> 
> I would say that is an invalid mkey

I see it is as wrong write access.

Thanks

> 
> Jason

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] RDMA/mlx5: return the EFAULT per ibv_advise_mr(3)
  2021-08-04  5:35       ` Leon Romanovsky
@ 2021-08-04 18:50         ` Jason Gunthorpe
  2021-08-05  6:43           ` Leon Romanovsky
  0 siblings, 1 reply; 13+ messages in thread
From: Jason Gunthorpe @ 2021-08-04 18:50 UTC (permalink / raw)
  To: Leon Romanovsky; +Cc: Li Zhijian, dledford, linux-rdma, linux-kernel

On Wed, Aug 04, 2021 at 08:35:30AM +0300, Leon Romanovsky wrote:
> On Tue, Aug 03, 2021 at 03:13:41PM -0300, Jason Gunthorpe wrote:
> > On Tue, Aug 03, 2021 at 08:56:54PM +0300, Leon Romanovsky wrote:
> > > On Tue, Aug 03, 2021 at 01:25:07PM -0300, Jason Gunthorpe wrote:
> > > > On Sun, Aug 01, 2021 at 05:20:50PM +0800, Li Zhijian wrote:
> > > > > ibv_advise_mr(3) says:
> > > > > EFAULT In one of the following: o When the range requested is out of the  MR  bounds,
> > > > >        or  when  parts of it are not part of the process address space. o One of the
> > > > >        lkeys provided in the scatter gather list is invalid or with wrong write access
> > > > > 
> > > > > Actually get_prefetchable_mr() will return NULL if it see above conditions
> > > > 
> > > > No, get_prefetchable_mr() returns NULL if the mkey is invalid
> > > 
> > > And what is this?
> > >   1701 static struct mlx5_ib_mr *                         
> > >   1702 get_prefetchable_mr(struct ib_pd *pd, enum ib_uverbs_advise_mr_advice advice,
> > >   1703                     u32 lkey)
> > > 
> > > ...
> > > 
> > >   1721         /* prefetch with write-access must be supported by the MR */
> > >   1722         if (advice == IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_WRITE &&
> > >   1723             !mr->umem->writable) {
> > >   1724                 mr = NULL;
> > >   1725                 goto end;
> > >   1726         }
> > 
> > I would say that is an invalid mkey
> 
> I see it is as wrong write access.

It just means the man page is wrong

Jason

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] RDMA/mlx5: return the EFAULT per ibv_advise_mr(3)
  2021-08-04 18:50         ` Jason Gunthorpe
@ 2021-08-05  6:43           ` Leon Romanovsky
  2021-08-16  2:59             ` lizhijian
  0 siblings, 1 reply; 13+ messages in thread
From: Leon Romanovsky @ 2021-08-05  6:43 UTC (permalink / raw)
  To: Jason Gunthorpe; +Cc: Li Zhijian, dledford, linux-rdma, linux-kernel

On Wed, Aug 04, 2021 at 03:50:22PM -0300, Jason Gunthorpe wrote:
> On Wed, Aug 04, 2021 at 08:35:30AM +0300, Leon Romanovsky wrote:
> > On Tue, Aug 03, 2021 at 03:13:41PM -0300, Jason Gunthorpe wrote:
> > > On Tue, Aug 03, 2021 at 08:56:54PM +0300, Leon Romanovsky wrote:
> > > > On Tue, Aug 03, 2021 at 01:25:07PM -0300, Jason Gunthorpe wrote:
> > > > > On Sun, Aug 01, 2021 at 05:20:50PM +0800, Li Zhijian wrote:
> > > > > > ibv_advise_mr(3) says:
> > > > > > EFAULT In one of the following: o When the range requested is out of the  MR  bounds,
> > > > > >        or  when  parts of it are not part of the process address space. o One of the
> > > > > >        lkeys provided in the scatter gather list is invalid or with wrong write access
> > > > > > 
> > > > > > Actually get_prefetchable_mr() will return NULL if it see above conditions
> > > > > 
> > > > > No, get_prefetchable_mr() returns NULL if the mkey is invalid
> > > > 
> > > > And what is this?
> > > >   1701 static struct mlx5_ib_mr *                         
> > > >   1702 get_prefetchable_mr(struct ib_pd *pd, enum ib_uverbs_advise_mr_advice advice,
> > > >   1703                     u32 lkey)
> > > > 
> > > > ...
> > > > 
> > > >   1721         /* prefetch with write-access must be supported by the MR */
> > > >   1722         if (advice == IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_WRITE &&
> > > >   1723             !mr->umem->writable) {
> > > >   1724                 mr = NULL;
> > > >   1725                 goto end;
> > > >   1726         }
> > > 
> > > I would say that is an invalid mkey
> > 
> > I see it is as wrong write access.
> 
> It just means the man page is wrong

ok, it can be a solution too.

Thanks

> 
> Jason

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] RDMA/mlx5: return the EFAULT per ibv_advise_mr(3)
  2021-08-05  6:43           ` Leon Romanovsky
@ 2021-08-16  2:59             ` lizhijian
  2021-08-21  9:44               ` Li, Zhijian
  0 siblings, 1 reply; 13+ messages in thread
From: lizhijian @ 2021-08-16  2:59 UTC (permalink / raw)
  To: Leon Romanovsky, Jason Gunthorpe
  Cc: lizhijian, dledford, linux-rdma, linux-kernel



On 05/08/2021 14:43, Leon Romanovsky wrote:
> On Wed, Aug 04, 2021 at 03:50:22PM -0300, Jason Gunthorpe wrote:
>> On Wed, Aug 04, 2021 at 08:35:30AM +0300, Leon Romanovsky wrote:
>>> On Tue, Aug 03, 2021 at 03:13:41PM -0300, Jason Gunthorpe wrote:
>>>> On Tue, Aug 03, 2021 at 08:56:54PM +0300, Leon Romanovsky wrote:
>>>>> On Tue, Aug 03, 2021 at 01:25:07PM -0300, Jason Gunthorpe wrote:
>>>>>> On Sun, Aug 01, 2021 at 05:20:50PM +0800, Li Zhijian wrote:
>>>>>>> ibv_advise_mr(3) says:
>>>>>>> EFAULT In one of the following: o When the range requested is out of the  MR  bounds,
>>>>>>>         or  when  parts of it are not part of the process address space. o One of the
>>>>>>>         lkeys provided in the scatter gather list is invalid or with wrong write access
>>>>>>>
>>>>>>> Actually get_prefetchable_mr() will return NULL if it see above conditions
>>>>>> No, get_prefetchable_mr() returns NULL if the mkey is invalid
>>>>> And what is this?
>>>>>    1701 static struct mlx5_ib_mr *
>>>>>    1702 get_prefetchable_mr(struct ib_pd *pd, enum ib_uverbs_advise_mr_advice advice,
>>>>>    1703                     u32 lkey)
>>>>>
>>>>> ...
>>>>>
>>>>>    1721         /* prefetch with write-access must be supported by the MR */
>>>>>    1722         if (advice == IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_WRITE &&
>>>>>    1723             !mr->umem->writable) {
>>>>>    1724                 mr = NULL;
>>>>>    1725                 goto end;
>>>>>    1726         }
>>>> I would say that is an invalid mkey
>>> I see it is as wrong write access.
>> It just means the man page is wrong
> ok, it can be a solution too.

It sounds good.  I will try to update the manpage ibv_advise_mr(3) instead.


Thanks
Zhijian

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] RDMA/mlx5: return the EFAULT per ibv_advise_mr(3)
  2021-08-16  2:59             ` lizhijian
@ 2021-08-21  9:44               ` Li, Zhijian
  2021-08-25 17:28                 ` Jason Gunthorpe
  0 siblings, 1 reply; 13+ messages in thread
From: Li, Zhijian @ 2021-08-21  9:44 UTC (permalink / raw)
  To: Leon Romanovsky, Jason Gunthorpe, Li Zhijian
  Cc: dledford, linux-rdma, linux-kernel

convert to text and send again


Hi Jason & Leon

It reminds me that ibv_advise_mr doesn't mention ENOENT any more which value the API actually returns now.
the ENOENT cases/situations returned by kernel mlx5 implementation is most likely same with EINVALL as its manpage[1].

So shall we return EINVAL instead of ENOENT in kernel side when get_prefetchable_mr returns NULL?

1781 static int mlx5_ib_prefetch_sg_list(struct ib_pd *pd,
1782                     enum ib_uverbs_advise_mr_advice advice,
1783                     u32 pf_flags, struct ib_sge *sg_list,
1784                     u32 num_sge)
1785 {
1786     u32 bytes_mapped = 0;
1787     int ret = 0;
1788     u32 i;
1789
1790     for (i = 0; i < num_sge; ++i) {
1791         struct mlx5_ib_mr *mr;
1792
1793         mr = get_prefetchable_mr(pd, advice, sg_list[i].lkey);
1794         if (!mr)
1795             return -ENOENT;
1796         ret = pagefault_mr(mr, sg_list[i].addr, sg_list[i].length,
1797                    &bytes_mapped, pf_flags);



=============
RETURN VALUE
        ibv_advise_mr() returns 0 when the call was successful, or the value of errno on failure (which indicates the failure reason).

        EOPNOTSUPP
               libibverbs or provider driver doesn’t support the ibv_advise_mr() verb (ENOSYS may sometimes be returned by old versions of libibverbs).

        ENOTSUP
               The advise operation isn’t supported.

        EFAULT In  one of the following: o When the range requested is out of the MR bounds, or when parts of it are not part of the process address space.  o One of the lkeys provided in the scatter gather
               list is invalid or with wrong write access.

        EINVAL In one of the following: o The PD is invalid.  o The flags are invalid.

[1]:https://github.com/linux-rdma/rdma-core/blob/master/libibverbs/man/ibv_advise_mr.3.md

Thanks

on 2021/8/16 10:59, Li, Zhijian wrote:
> On 05/08/2021 14:43, Leon Romanovsky wrote:
>> On Wed, Aug 04, 2021 at 03:50:22PM -0300, Jason Gunthorpe wrote:
>>> On Wed, Aug 04, 2021 at 08:35:30AM +0300, Leon Romanovsky wrote:
>>>> On Tue, Aug 03, 2021 at 03:13:41PM -0300, Jason Gunthorpe wrote:
>>>>> On Tue, Aug 03, 2021 at 08:56:54PM +0300, Leon Romanovsky wrote:
>>>>>> On Tue, Aug 03, 2021 at 01:25:07PM -0300, Jason Gunthorpe wrote:
>>>>>>> On Sun, Aug 01, 2021 at 05:20:50PM +0800, Li Zhijian wrote:
>>>>>>>> ibv_advise_mr(3) says:
>>>>>>>> EFAULT In one of the following: o When the range requested is out of the  MR  bounds,
>>>>>>>>          or  when  parts of it are not part of the process address space. o One of the
>>>>>>>>          lkeys provided in the scatter gather list is invalid or with wrong write access
>>>>>>>>
>>>>>>>> Actually get_prefetchable_mr() will return NULL if it see above conditions
>>>>>>> No, get_prefetchable_mr() returns NULL if the mkey is invalid
>>>>>> And what is this?
>>>>>>     1701 static struct mlx5_ib_mr *
>>>>>>     1702 get_prefetchable_mr(struct ib_pd *pd, enum ib_uverbs_advise_mr_advice advice,
>>>>>>     1703                     u32 lkey)
>>>>>>
>>>>>> ...
>>>>>>
>>>>>>     1721         /* prefetch with write-access must be supported by the MR */
>>>>>>     1722         if (advice == IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_WRITE &&
>>>>>>     1723             !mr->umem->writable) {
>>>>>>     1724                 mr = NULL;
>>>>>>     1725                 goto end;
>>>>>>     1726         }
>>>>> I would say that is an invalid mkey
>>>> I see it is as wrong write access.
>>> It just means the man page is wrong
>> ok, it can be a solution too.
> It sounds good.  I will try to update the manpage ibv_advise_mr(3) instead.
>
>
> Thanks
> Zhijian



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] RDMA/mlx5: return the EFAULT per ibv_advise_mr(3)
  2021-08-21  9:44               ` Li, Zhijian
@ 2021-08-25 17:28                 ` Jason Gunthorpe
  2021-08-26  1:18                   ` lizhijian
  0 siblings, 1 reply; 13+ messages in thread
From: Jason Gunthorpe @ 2021-08-25 17:28 UTC (permalink / raw)
  To: Li, Zhijian; +Cc: Leon Romanovsky, dledford, linux-rdma, linux-kernel

On Sat, Aug 21, 2021 at 05:44:43PM +0800, Li, Zhijian wrote:
> convert to text and send again
> 
> 
> Hi Jason & Leon
> 
> It reminds me that ibv_advise_mr doesn't mention ENOENT any more which value the API actually returns now.
> the ENOENT cases/situations returned by kernel mlx5 implementation is most likely same with EINVALL as its manpage[1].
> 
> So shall we return EINVAL instead of ENOENT in kernel side when get_prefetchable_mr returns NULL?

No, the man page should be fixed

Jason

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] RDMA/mlx5: return the EFAULT per ibv_advise_mr(3)
  2021-08-25 17:28                 ` Jason Gunthorpe
@ 2021-08-26  1:18                   ` lizhijian
  2021-08-28  8:42                     ` Li, Zhijian
  0 siblings, 1 reply; 13+ messages in thread
From: lizhijian @ 2021-08-26  1:18 UTC (permalink / raw)
  To: Jason Gunthorpe, lizhijian
  Cc: Leon Romanovsky, dledford, linux-rdma, linux-kernel



On 26/08/2021 01:28, Jason Gunthorpe wrote:
> On Sat, Aug 21, 2021 at 05:44:43PM +0800, Li, Zhijian wrote:
>> convert to text and send again
>>
>>
>> Hi Jason & Leon
>>
>> It reminds me that ibv_advise_mr doesn't mention ENOENT any more which value the API actually returns now.
>> the ENOENT cases/situations returned by kernel mlx5 implementation is most likely same with EINVALL as its manpage[1].
>>
>> So shall we return EINVAL instead of ENOENT in kernel side when get_prefetchable_mr returns NULL?
> No, the man page should be fixed
thanks a lot, i have submitted a RP to rdma-core https://github.com/linux-rdma/rdma-core/pull/1048

Thanks
Zhijian

>
> Jason
>
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] RDMA/mlx5: return the EFAULT per ibv_advise_mr(3)
  2021-08-26  1:18                   ` lizhijian
@ 2021-08-28  8:42                     ` Li, Zhijian
  0 siblings, 0 replies; 13+ messages in thread
From: Li, Zhijian @ 2021-08-28  8:42 UTC (permalink / raw)
  To: Jason Gunthorpe; +Cc: Leon Romanovsky, dledford, linux-rdma, linux-kernel

Just noticed that there is another code path i was missing will return EINVAL
when get_prefetchable_mr returns NULL

ENOENT:
mlx5_ib_advise_mr_prefetch()
   -> mlx5_ib_prefetch_sg_list()
       -> get_prefetchable_mr()
    return -ENOENT;


EINVAL:
mlx5_ib_advise_mr_prefetch
   ->init_prefetch_work()
      -> get_prefetchable_mr()
     return -EINVAL;

where get_prefetchable_mr will check pd and write access & key
So which value we should return ?

Thanks
  

on 2021/8/26 9:18, Li, Zhijian wrote:
>
> On 26/08/2021 01:28, Jason Gunthorpe wrote:
>> On Sat, Aug 21, 2021 at 05:44:43PM +0800, Li, Zhijian wrote:
>>> convert to text and send again
>>>
>>>
>>> Hi Jason & Leon
>>>
>>> It reminds me that ibv_advise_mr doesn't mention ENOENT any more which value the API actually returns now.
>>> the ENOENT cases/situations returned by kernel mlx5 implementation is most likely same with EINVALL as its manpage[1].
>>>
>>> So shall we return EINVAL instead of ENOENT in kernel side when get_prefetchable_mr returns NULL?
>> No, the man page should be fixed
> thanks a lot, i have submitted a RP to rdma-core https://github.com/linux-rdma/rdma-core/pull/1048
>
> Thanks
> Zhijian
>
>> Jason
>>
>>



^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2021-08-28  8:43 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-01  9:20 [PATCH] RDMA/mlx5: return the EFAULT per ibv_advise_mr(3) Li Zhijian
2021-08-01 11:27 ` Leon Romanovsky
2021-08-03 16:25 ` Jason Gunthorpe
2021-08-03 17:56   ` Leon Romanovsky
2021-08-03 18:13     ` Jason Gunthorpe
2021-08-04  5:35       ` Leon Romanovsky
2021-08-04 18:50         ` Jason Gunthorpe
2021-08-05  6:43           ` Leon Romanovsky
2021-08-16  2:59             ` lizhijian
2021-08-21  9:44               ` Li, Zhijian
2021-08-25 17:28                 ` Jason Gunthorpe
2021-08-26  1:18                   ` lizhijian
2021-08-28  8:42                     ` Li, Zhijian

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).