Message ID | 1743777955-2316-2-git-send-email-kotaranov@linux.microsoft.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | RDMA/mana_ib: extend MR support | expand |
On Fri, Apr 04, 2025 at 07:45:53AM -0700, Konstantin Taranov wrote: > From: Konstantin Taranov <kotaranov@microsoft.com> > > Add IB_ACCESS_REMOTE_ATOMIC to the valid flags for MRs and use > the corresponding flag bit during MR creation in the HW. > > Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com> > --- > drivers/infiniband/hw/mana/mr.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/infiniband/hw/mana/mr.c b/drivers/infiniband/hw/mana/mr.c > index f99557e..e4a9f53 100644 > --- a/drivers/infiniband/hw/mana/mr.c > +++ b/drivers/infiniband/hw/mana/mr.c > @@ -5,8 +5,8 @@ > > #include "mana_ib.h" > > -#define VALID_MR_FLAGS \ > - (IB_ACCESS_LOCAL_WRITE | IB_ACCESS_REMOTE_WRITE | IB_ACCESS_REMOTE_READ) > +#define VALID_MR_FLAGS (IB_ACCESS_LOCAL_WRITE | IB_ACCESS_REMOTE_WRITE | IB_ACCESS_REMOTE_READ |\ > + IB_ACCESS_REMOTE_ATOMIC) > > #define VALID_DMA_MR_FLAGS (IB_ACCESS_LOCAL_WRITE) > > @@ -24,6 +24,9 @@ mana_ib_verbs_to_gdma_access_flags(int access_flags) > if (access_flags & IB_ACCESS_REMOTE_READ) > flags |= GDMA_ACCESS_FLAG_REMOTE_READ; > > + if (access_flags & IB_ACCESS_REMOTE_ATOMIC) > + flags |= GDMA_ACCESS_FLAG_REMOTE_ATOMIC; Can you enable this flag unconditionally without relation to running RW? Thanks > + > return flags; > } > > -- > 2.43.0 >
> > @@ -24,6 +24,9 @@ mana_ib_verbs_to_gdma_access_flags(int > access_flags) > > if (access_flags & IB_ACCESS_REMOTE_READ) > > flags |= GDMA_ACCESS_FLAG_REMOTE_READ; > > > > + if (access_flags & IB_ACCESS_REMOTE_ATOMIC) > > + flags |= GDMA_ACCESS_FLAG_REMOTE_ATOMIC; > > Can you enable this flag unconditionally without relation to running RW? Yes, ATOMIC access does not depend on Remote Read and Remote Write. I also do not see any conditions in other drivers. - Konstantin > > Thanks > > > + > > return flags; > > } > > > > -- > > 2.43.0 > >
On Thu, Apr 10, 2025 at 01:37:00PM +0000, Konstantin Taranov wrote: > > > @@ -24,6 +24,9 @@ mana_ib_verbs_to_gdma_access_flags(int > > access_flags) > > > if (access_flags & IB_ACCESS_REMOTE_READ) > > > flags |= GDMA_ACCESS_FLAG_REMOTE_READ; > > > > > > + if (access_flags & IB_ACCESS_REMOTE_ATOMIC) > > > + flags |= GDMA_ACCESS_FLAG_REMOTE_ATOMIC; > > > > Can you enable this flag unconditionally without relation to running RW? > > Yes, ATOMIC access does not depend on Remote Read and Remote Write. The question is "do you have FW which doesn't support GDMA_ACCESS_FLAG_REMOTE_ATOMIC? and what will happen if such flag used for such FW?" > I also do not see any conditions in other drivers. At least for mlx5, we are checking FW capability if it is supported. See get_unchangeable_access_flags(). > > - Konstantin > > > > > Thanks > > > > > + > > > return flags; > > > } > > > > > > -- > > > 2.43.0 > > >
> On Thu, Apr 10, 2025 at 01:37:00PM +0000, Konstantin Taranov wrote: > > > > @@ -24,6 +24,9 @@ mana_ib_verbs_to_gdma_access_flags(int > > > access_flags) > > > > if (access_flags & IB_ACCESS_REMOTE_READ) > > > > flags |= GDMA_ACCESS_FLAG_REMOTE_READ; > > > > > > > > + if (access_flags & IB_ACCESS_REMOTE_ATOMIC) > > > > + flags |= GDMA_ACCESS_FLAG_REMOTE_ATOMIC; > > > > > > Can you enable this flag unconditionally without relation to running RW? > > > > Yes, ATOMIC access does not depend on Remote Read and Remote Write. > > The question is "do you have FW which doesn't support > GDMA_ACCESS_FLAG_REMOTE_ATOMIC? and what will happen if such flag > used for such FW?" As far as I am aware, all FW support this flag. Nonetheless, if FW does not support it, the HW request to create MR will fail. > > > I also do not see any conditions in other drivers. > > At least for mlx5, we are checking FW capability if it is supported. > See get_unchangeable_access_flags(). > > > > > - Konstantin > > > > > > > > Thanks > > > > > > > + > > > > return flags; > > > > } > > > > > > > > -- > > > > 2.43.0 > > > >
diff --git a/drivers/infiniband/hw/mana/mr.c b/drivers/infiniband/hw/mana/mr.c index f99557e..e4a9f53 100644 --- a/drivers/infiniband/hw/mana/mr.c +++ b/drivers/infiniband/hw/mana/mr.c @@ -5,8 +5,8 @@ #include "mana_ib.h" -#define VALID_MR_FLAGS \ - (IB_ACCESS_LOCAL_WRITE | IB_ACCESS_REMOTE_WRITE | IB_ACCESS_REMOTE_READ) +#define VALID_MR_FLAGS (IB_ACCESS_LOCAL_WRITE | IB_ACCESS_REMOTE_WRITE | IB_ACCESS_REMOTE_READ |\ + IB_ACCESS_REMOTE_ATOMIC) #define VALID_DMA_MR_FLAGS (IB_ACCESS_LOCAL_WRITE) @@ -24,6 +24,9 @@ mana_ib_verbs_to_gdma_access_flags(int access_flags) if (access_flags & IB_ACCESS_REMOTE_READ) flags |= GDMA_ACCESS_FLAG_REMOTE_READ; + if (access_flags & IB_ACCESS_REMOTE_ATOMIC) + flags |= GDMA_ACCESS_FLAG_REMOTE_ATOMIC; + return flags; }