Skip to contentSkip to conversation

RDMA/mana_ib: use the correct page table index based on hardware page size

PATCH Applied [email protected] 2 participants 3 messages Aug 30, 2024 – Sep 2, 2024

Subsystems (5)
lore
Share & tools
lore
#0 lore raw

PATCH v2 1/2 RDMA/mana_ib: use the correct page table index based on hardware page size

From: Long Li <[email protected]>

MANA hardware uses 4k page size. When calculating the page table index, it should use the hardware page size, not the system page size.

Fixes 0266a177631d ("RDMA/mana_ib: Add a driver for Microsoft Azure Network Adapter")

---
change log
v2: replaced net with rdma-next tag in patch title and simplified the title

 drivers/infiniband/hw/mana/main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/infiniband/hw/mana/main.c +1 -1
index d13abc954d2a..f68f54aea820 100644
@@ -383,7 +383,7 @@ static int mana_ib_gd_create_dma_region(struct mana_ib_dev *dev, struct ib_umem
 
 	create_req->length = umem->length;
 	create_req->offset_in_page = ib_umem_dma_offset(umem, page_sz);
-	create_req->gdma_page_type = order_base_2(page_sz) - PAGE_SHIFT;
+	create_req->gdma_page_type = order_base_2(page_sz) - MANA_PAGE_SHIFT;
 	create_req->page_count = num_pages_total;
 
 	ibdev_dbg(&dev->ib_dev, "size_dma_region %lu num_pages_total %lu\n",
Signature · 1 line
2.17.1
#1 lore raw

PATCH v2 2/2 RDMA/mana_ib: use the correct page size for mapping user-mode doorbell page

From: Long Li <[email protected]>

When mapping doorbell page from user-mode, the driver should use the system page size as this memory is allocated via mmap() from user-mode.

Fixes 0266a177631d ("RDMA/mana_ib: Add a driver for Microsoft Azure Network Adapter")

---
change log
v2: used rdma-next tag in patch title. fixed printk format identifier for unsigned long.

 drivers/infiniband/hw/mana/main.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/infiniband/hw/mana/main.c +3 -3
index f68f54aea820..67c2d43135a8 100644
@@ -511,13 +511,13 @@ int mana_ib_mmap(struct ib_ucontext *ibcontext, struct vm_area_struct *vma)
 	      PAGE_SHIFT;
 	prot = pgprot_writecombine(vma->vm_page_prot);
 
-	ret = rdma_user_mmap_io(ibcontext, vma, pfn, gc->db_page_size, prot,
+	ret = rdma_user_mmap_io(ibcontext, vma, pfn, PAGE_SIZE, prot,
 				NULL);
 	if (ret)
 		ibdev_dbg(ibdev, "can't rdma_user_mmap_io ret %d\n", ret);
 	else
-		ibdev_dbg(ibdev, "mapped I/O pfn 0x%llx page_size %u, ret %d\n",
-			  pfn, gc->db_page_size, ret);
+		ibdev_dbg(ibdev, "mapped I/O pfn 0x%llx page_size %lu, ret %d\n",
+			  pfn, PAGE_SIZE, ret);
 
 	return ret;
 }
Signature · 1 line
2.17.1
#2 lore raw
In reply to [email protected]
Quoted 4 lines · On Fri, 30 Aug 2024 08:16:32 -0700, [email protected] wrote:

MANA hardware uses 4k page size. When calculating the page table index, it should use the hardware page size, not the system page size.

Applied, thanks!

[1/2] RDMA/mana_ib: use the correct page table index based on hardware page size

      https://git.kernel.org/rdma/rdma/c/9e517a8e9d9a30
[2/2] RDMA/mana_ib: use the correct page size for mapping user-mode doorbell page
      https://git.kernel.org/rdma/rdma/c/4a3b99bc04e501

Best regards,

Signature · 1 line
Leon Romanovsky <[email protected]>