Linux kernel -stable discussions
 help / color / mirror / Atom feed
* [PATCH 5.15.x] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned
@ 2024-01-26 20:21 Shiraz Saleem
  2024-01-26 20:21 ` [PATCH 5.15.x] RDMA/irdma: Fix support for 64k pages Shiraz Saleem
  2024-01-27  1:28 ` [PATCH 5.15.x] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned Greg KH
  0 siblings, 2 replies; 5+ messages in thread
From: Shiraz Saleem @ 2024-01-26 20:21 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 | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/infiniband/hw/irdma/verbs.c b/drivers/infiniband/hw/irdma/verbs.c
index 745712e1d7de..e02f541430ad 100644
--- a/drivers/infiniband/hw/irdma/verbs.c
+++ b/drivers/infiniband/hw/irdma/verbs.c
@@ -2783,6 +2783,11 @@ 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))
+			return -EINVAL;
+
 		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] 5+ messages in thread

* [PATCH 5.15.x] RDMA/irdma: Fix support for 64k pages
  2024-01-26 20:21 [PATCH 5.15.x] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned Shiraz Saleem
@ 2024-01-26 20:21 ` Shiraz Saleem
  2024-01-27  1:20   ` Greg KH
  2024-01-27  1:28 ` [PATCH 5.15.x] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned Greg KH
  1 sibling, 1 reply; 5+ messages in thread
From: Shiraz Saleem @ 2024-01-26 20:21 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 fa1ccd6a9400..745712e1d7de 100644
--- a/drivers/infiniband/hw/irdma/verbs.c
+++ b/drivers/infiniband/hw/irdma/verbs.c
@@ -2763,7 +2763,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] 5+ messages in thread

* Re: [PATCH 5.15.x] RDMA/irdma: Fix support for 64k pages
  2024-01-26 20:21 ` [PATCH 5.15.x] RDMA/irdma: Fix support for 64k pages Shiraz Saleem
@ 2024-01-27  1:20   ` Greg KH
  0 siblings, 0 replies; 5+ messages in thread
From: Greg KH @ 2024-01-27  1:20 UTC (permalink / raw)
  To: Shiraz Saleem; +Cc: stable, Mike Marciniszyn

On Fri, Jan 26, 2024 at 02:21:44PM -0600, Shiraz Saleem wrote:
> From: Mike Marciniszyn <mike.marciniszyn@intel.com>
> 
> [ Upstream commit 03769f72d66edab82484449ed594cb6b00ae0223 ]
> 

All now queued up, thanks

greg k-h

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

* Re: [PATCH 5.15.x] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned
  2024-01-26 20:21 [PATCH 5.15.x] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned Shiraz Saleem
  2024-01-26 20:21 ` [PATCH 5.15.x] RDMA/irdma: Fix support for 64k pages Shiraz Saleem
@ 2024-01-27  1:28 ` Greg KH
  2024-01-29 16:21   ` Saleem, Shiraz
  1 sibling, 1 reply; 5+ messages in thread
From: Greg KH @ 2024-01-27  1:28 UTC (permalink / raw)
  To: Shiraz Saleem; +Cc: stable, Mike Marciniszyn

On Fri, Jan 26, 2024 at 02:21:43PM -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")
> 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 | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/infiniband/hw/irdma/verbs.c b/drivers/infiniband/hw/irdma/verbs.c
> index 745712e1d7de..e02f541430ad 100644
> --- a/drivers/infiniband/hw/irdma/verbs.c
> +++ b/drivers/infiniband/hw/irdma/verbs.c
> @@ -2783,6 +2783,11 @@ 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))
> +			return -EINVAL;
> +
>  		total = req.sq_pages + req.rq_pages + shadow_pgcnt;
>  		if (total > iwmr->page_cnt) {
>  			err = -EINVAL;
> -- 
> 1.8.3.1
> 
> 

You obviously did not test this change, as it fails to build, so why ask
for it to be backported?  I've dropped all of these now from both 6.1.y
and 5.15.y, please be more careful in the future.

thanks,

greg k-h

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

* RE: [PATCH 5.15.x] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned
  2024-01-27  1:28 ` [PATCH 5.15.x] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned Greg KH
@ 2024-01-29 16:21   ` Saleem, Shiraz
  0 siblings, 0 replies; 5+ messages in thread
From: Saleem, Shiraz @ 2024-01-29 16:21 UTC (permalink / raw)
  To: Greg KH; +Cc: stable@vger.kernel.org, Marciniszyn, Mike

> Subject: Re: [PATCH 5.15.x] RDMA/irdma: Ensure iWarp QP queue memory is OS
> paged aligned
> 
> On Fri, Jan 26, 2024 at 02:21:43PM -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")
> > Link:
> > https://lore.kernel.org/r/20231129202143.1434-3-shiraz.saleem@intel.co
> > m
> > 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 | 5 +++++
> >  1 file changed, 5 insertions(+)
> >
> > diff --git a/drivers/infiniband/hw/irdma/verbs.c
> > b/drivers/infiniband/hw/irdma/verbs.c
> > index 745712e1d7de..e02f541430ad 100644
> > --- a/drivers/infiniband/hw/irdma/verbs.c
> > +++ b/drivers/infiniband/hw/irdma/verbs.c
> > @@ -2783,6 +2783,11 @@ 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))
> > +			return -EINVAL;
> > +
> >  		total = req.sq_pages + req.rq_pages + shadow_pgcnt;
> >  		if (total > iwmr->page_cnt) {
> >  			err = -EINVAL;
> > --
> > 1.8.3.1
> >
> >
> 
> You obviously did not test this change, as it fails to build, so why ask for it to be
> backported?  I've dropped all of these now from both 6.1.y and 5.15.y, please be
> more careful in the future.

I apologize for the oversight. we prematurely submitted.

> 
> thanks,
> 
> greg k-h

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

end of thread, other threads:[~2024-01-29 16:21 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-26 20:21 [PATCH 5.15.x] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned Shiraz Saleem
2024-01-26 20:21 ` [PATCH 5.15.x] RDMA/irdma: Fix support for 64k pages Shiraz Saleem
2024-01-27  1:20   ` Greg KH
2024-01-27  1:28 ` [PATCH 5.15.x] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned Greg KH
2024-01-29 16:21   ` Saleem, Shiraz

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