RDMA/irdma: Fix support for 64k pages
authorMike Marciniszyn <mike.marciniszyn@intel.com>
Wed, 29 Nov 2023 20:21:43 +0000 (14:21 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 13 Dec 2023 17:45:16 +0000 (18:45 +0100)
[ 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().

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/hw/irdma/verbs.c

index c7cb328..2f1bedd 100644 (file)
@@ -2903,7 +2903,7 @@ static struct irdma_mr *irdma_alloc_iwmr(struct ib_umem *region,
        iwmr->type = reg_type;
 
        pgsz_bitmap = (reg_type == IRDMA_MEMREG_TYPE_MEM) ?
-               iwdev->rf->sc_dev.hw_attrs.page_size_cap : PAGE_SIZE;
+               iwdev->rf->sc_dev.hw_attrs.page_size_cap : SZ_4K;
 
        iwmr->page_size = ib_umem_find_best_pgsz(region, pgsz_bitmap, virt);
        if (unlikely(!iwmr->page_size)) {