Linux kernel -stable discussions
 help / color / mirror / Atom feed
* [PATCH 6.1.y] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned
@ 2024-02-07 16:32 Shiraz Saleem
  2024-02-07 16:32 ` [PATCH 6.1.y] RDMA/irdma: Fix support for 64k pages Shiraz Saleem
  2024-02-11 16:26 ` [PATCH 6.1.y] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned Sasha Levin
  0 siblings, 2 replies; 7+ messages in thread
From: Shiraz Saleem @ 2024-02-07 16:32 UTC (permalink / raw)
  To: stable; +Cc: Mike Marciniszyn, Shiraz Saleem

From: Mike Marciniszyn <mike.marciniszyn@intel.com>

[ Upstream commit 0a5ec366de7e94192669ba08de6ed336607fd282 ]

The SQ is shared for between kernel and used by storing the kernel page
pointer and passing that to a kmap_atomic().

This then requires that the alignment is PAGE_SIZE aligned.

Fix by adding an iWarp specific alignment check.

The patch needed to be reworked because the separate routines
present upstream are not there in older irdma drivers.

Fixes: e965ef0e7b2c ("RDMA/irdma: Split QP handler into irdma_reg_user_mr_type_qp")
Link: https://lore.kernel.org/r/20231129202143.1434-3-shiraz.saleem@intel.com
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
---
 drivers/infiniband/hw/irdma/verbs.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/infiniband/hw/irdma/verbs.c b/drivers/infiniband/hw/irdma/verbs.c
index 447e1bcc82a3..3c437c8070b6 100644
--- a/drivers/infiniband/hw/irdma/verbs.c
+++ b/drivers/infiniband/hw/irdma/verbs.c
@@ -2845,6 +2845,13 @@ static struct ib_mr *irdma_reg_user_mr(struct ib_pd *pd, u64 start, u64 len,
 
 	switch (req.reg_type) {
 	case IRDMA_MEMREG_TYPE_QP:
+		/* iWarp: Catch page not starting on OS page boundary */
+		if (!rdma_protocol_roce(&iwdev->ibdev, 1) &&
+		    ib_umem_offset(iwmr->region)) {
+			err = -EINVAL;
+			goto error;
+		}
+
 		total = req.sq_pages + req.rq_pages + shadow_pgcnt;
 		if (total > iwmr->page_cnt) {
 			err = -EINVAL;
-- 
1.8.3.1


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

* [PATCH 6.1.y] RDMA/irdma: Fix support for 64k pages
  2024-02-07 16:32 [PATCH 6.1.y] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned Shiraz Saleem
@ 2024-02-07 16:32 ` Shiraz Saleem
  2024-02-11 16:26 ` [PATCH 6.1.y] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned Sasha Levin
  1 sibling, 0 replies; 7+ messages in thread
From: Shiraz Saleem @ 2024-02-07 16:32 UTC (permalink / raw)
  To: stable; +Cc: Mike Marciniszyn, Shiraz Saleem

From: Mike Marciniszyn <mike.marciniszyn@intel.com>

[ Upstream commit 03769f72d66edab82484449ed594cb6b00ae0223 ]

Virtual QP and CQ require a 4K HW page size but the driver passes
PAGE_SIZE to ib_umem_find_best_pgsz() instead.

Fix this by using the appropriate 4k value in the bitmap passed to
ib_umem_find_best_pgsz().

Patch reworked to handle the different pre-split context.

Fixes: 693a5386eff0 ("RDMA/irdma: Split mr alloc and free into new functions")
Link: https://lore.kernel.org/r/20231129202143.1434-4-shiraz.saleem@intel.com
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
---
 drivers/infiniband/hw/irdma/verbs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/infiniband/hw/irdma/verbs.c b/drivers/infiniband/hw/irdma/verbs.c
index 3c437c8070b6..01faec6ea528 100644
--- a/drivers/infiniband/hw/irdma/verbs.c
+++ b/drivers/infiniband/hw/irdma/verbs.c
@@ -2825,7 +2825,7 @@ static struct ib_mr *irdma_reg_user_mr(struct ib_pd *pd, u64 start, u64 len,
 	iwmr->ibmr.pd = pd;
 	iwmr->ibmr.device = pd->device;
 	iwmr->ibmr.iova = virt;
-	iwmr->page_size = PAGE_SIZE;
+	iwmr->page_size = SZ_4K;
 
 	if (req.reg_type == IRDMA_MEMREG_TYPE_MEM) {
 		iwmr->page_size = ib_umem_find_best_pgsz(region,
-- 
1.8.3.1


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

* Re: [PATCH 6.1.y] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned
  2024-02-07 16:32 [PATCH 6.1.y] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned Shiraz Saleem
  2024-02-07 16:32 ` [PATCH 6.1.y] RDMA/irdma: Fix support for 64k pages Shiraz Saleem
@ 2024-02-11 16:26 ` Sasha Levin
  2024-02-12 13:02   ` Marciniszyn, Mike
  1 sibling, 1 reply; 7+ messages in thread
From: Sasha Levin @ 2024-02-11 16:26 UTC (permalink / raw)
  To: Shiraz Saleem; +Cc: stable, Mike Marciniszyn

On Wed, Feb 07, 2024 at 10:32:39AM -0600, Shiraz Saleem wrote:
>From: Mike Marciniszyn <mike.marciniszyn@intel.com>
>
>[ Upstream commit 0a5ec366de7e94192669ba08de6ed336607fd282 ]
>
>The SQ is shared for between kernel and used by storing the kernel page
>pointer and passing that to a kmap_atomic().
>
>This then requires that the alignment is PAGE_SIZE aligned.
>
>Fix by adding an iWarp specific alignment check.
>
>The patch needed to be reworked because the separate routines
>present upstream are not there in older irdma drivers.
>
>Fixes: e965ef0e7b2c ("RDMA/irdma: Split QP handler into irdma_reg_user_mr_type_qp")

Is this fixes tag incorrect? there's no e965ef0e7b2c in 6.1.

-- 
Thanks,
Sasha

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

* RE: [PATCH 6.1.y] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned
  2024-02-11 16:26 ` [PATCH 6.1.y] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned Sasha Levin
@ 2024-02-12 13:02   ` Marciniszyn, Mike
  2024-02-13 14:55     ` Greg KH
  0 siblings, 1 reply; 7+ messages in thread
From: Marciniszyn, Mike @ 2024-02-12 13:02 UTC (permalink / raw)
  To: Sasha Levin, Saleem, Shiraz; +Cc: stable@vger.kernel.org

> >Fixes: e965ef0e7b2c ("RDMA/irdma: Split QP handler into
> >irdma_reg_user_mr_type_qp")
> 
> Is this fixes tag incorrect? there's no e965ef0e7b2c in 6.1.
> 

The fixes was correct for upstream.   The context change forced the re-port of patch and the Fixes is not appropriate for the older context.

You can drop if you want.

Mike

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

* Re: [PATCH 6.1.y] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned
  2024-02-12 13:02   ` Marciniszyn, Mike
@ 2024-02-13 14:55     ` Greg KH
  2024-02-13 16:20       ` Marciniszyn, Mike
  0 siblings, 1 reply; 7+ messages in thread
From: Greg KH @ 2024-02-13 14:55 UTC (permalink / raw)
  To: Marciniszyn, Mike; +Cc: Sasha Levin, Saleem, Shiraz, stable@vger.kernel.org

On Mon, Feb 12, 2024 at 01:02:52PM +0000, Marciniszyn, Mike wrote:
> > >Fixes: e965ef0e7b2c ("RDMA/irdma: Split QP handler into
> > >irdma_reg_user_mr_type_qp")
> > 
> > Is this fixes tag incorrect? there's no e965ef0e7b2c in 6.1.
> > 
> 
> The fixes was correct for upstream.   The context change forced the re-port of patch and the Fixes is not appropriate for the older context.

I do not understand, what context change?

> You can drop if you want.

Is it needed for 6.1.y or not?

confused,

greg k-h

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

* RE: [PATCH 6.1.y] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned
  2024-02-13 14:55     ` Greg KH
@ 2024-02-13 16:20       ` Marciniszyn, Mike
  2024-02-20 15:33         ` Greg KH
  0 siblings, 1 reply; 7+ messages in thread
From: Marciniszyn, Mike @ 2024-02-13 16:20 UTC (permalink / raw)
  To: Greg KH; +Cc: Sasha Levin, Saleem, Shiraz, stable@vger.kernel.org

> 
> Is it needed for 6.1.y or not?
> 
> confused,
> 
It is needed.

Its just the Fixes: tag is incorrect because 6.1.y branch lacks the commit indicated in the Fixes: tag.

The upstream version split a large routine up for clarity.   The 6.1.y branch contains the pre-split code so the patch needed to be ported into the old larger routine.

Mike





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

* Re: [PATCH 6.1.y] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned
  2024-02-13 16:20       ` Marciniszyn, Mike
@ 2024-02-20 15:33         ` Greg KH
  0 siblings, 0 replies; 7+ messages in thread
From: Greg KH @ 2024-02-20 15:33 UTC (permalink / raw)
  To: Marciniszyn, Mike; +Cc: Sasha Levin, Saleem, Shiraz, stable@vger.kernel.org

On Tue, Feb 13, 2024 at 04:20:21PM +0000, Marciniszyn, Mike wrote:
> > 
> > Is it needed for 6.1.y or not?
> > 
> > confused,
> > 
> It is needed.
> 
> Its just the Fixes: tag is incorrect because 6.1.y branch lacks the commit indicated in the Fixes: tag.
> 
> The upstream version split a large routine up for clarity.   The 6.1.y branch contains the pre-split code so the patch needed to be ported into the old larger routine.

Now queued up, thanks.

greg k-h

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

end of thread, other threads:[~2024-02-20 15:33 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-07 16:32 [PATCH 6.1.y] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned Shiraz Saleem
2024-02-07 16:32 ` [PATCH 6.1.y] RDMA/irdma: Fix support for 64k pages Shiraz Saleem
2024-02-11 16:26 ` [PATCH 6.1.y] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned Sasha Levin
2024-02-12 13:02   ` Marciniszyn, Mike
2024-02-13 14:55     ` Greg KH
2024-02-13 16:20       ` Marciniszyn, Mike
2024-02-20 15:33         ` Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox