Thomas Bogendoerfer 89169f
From: Lijun Ou <oulijun@huawei.com>
Thomas Bogendoerfer 89169f
Date: Thu, 24 Oct 2019 17:21:56 +0800
Thomas Bogendoerfer 89169f
Subject: RDMA/hns: Fix to support 64K page for srq
Thomas Bogendoerfer 89169f
Patch-mainline: v5.5-rc1
Thomas Bogendoerfer 89169f
Git-commit: 5c7e76fb7cb5071be800c938ebf2c475e140d3f0
Thomas Bogendoerfer 89169f
References: bsc#1104427 FATE#326416
Thomas Bogendoerfer 89169f
Thomas Bogendoerfer 89169f
SRQ's page size configuration of BA and buffer should depend on current
Thomas Bogendoerfer 89169f
PAGE_SHIFT, or it can't work in scenario of 64K page.
Thomas Bogendoerfer 89169f
Thomas Bogendoerfer 89169f
Fixes: c7bcb13442e1 ("RDMA/hns: Add SRQ support for hip08 kernel mode")
Thomas Bogendoerfer 89169f
Link: https://lore.kernel.org/r/1571908917-16220-2-git-send-email-liweihang@hisilicon.com
Thomas Bogendoerfer 89169f
Signed-off-by: Lijun Ou <oulijun@huawei.com>
Thomas Bogendoerfer 89169f
Signed-off-by: Weihang Li <liweihang@hisilicon.com>
Thomas Bogendoerfer 89169f
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Thomas Bogendoerfer 89169f
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Thomas Bogendoerfer 89169f
---
Thomas Bogendoerfer 89169f
 drivers/infiniband/hw/hns/hns_roce_hw_v2.c |    4 ++--
Thomas Bogendoerfer 89169f
 1 file changed, 2 insertions(+), 2 deletions(-)
Thomas Bogendoerfer 89169f
Thomas Bogendoerfer 89169f
--- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
Thomas Bogendoerfer 89169f
+++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
Thomas Bogendoerfer 89169f
@@ -5995,11 +5995,11 @@ static void hns_roce_v2_write_srqc(struc
Thomas Bogendoerfer 89169f
 	roce_set_field(srq_context->byte_44_idxbufpgsz_addr,
Thomas Bogendoerfer 89169f
 		       SRQC_BYTE_44_SRQ_IDX_BA_PG_SZ_M,
Thomas Bogendoerfer 89169f
 		       SRQC_BYTE_44_SRQ_IDX_BA_PG_SZ_S,
Thomas Bogendoerfer 89169f
-		       hr_dev->caps.idx_ba_pg_sz);
Thomas Bogendoerfer 89169f
+		       hr_dev->caps.idx_ba_pg_sz + PG_SHIFT_OFFSET);
Thomas Bogendoerfer 89169f
 	roce_set_field(srq_context->byte_44_idxbufpgsz_addr,
Thomas Bogendoerfer 89169f
 		       SRQC_BYTE_44_SRQ_IDX_BUF_PG_SZ_M,
Thomas Bogendoerfer 89169f
 		       SRQC_BYTE_44_SRQ_IDX_BUF_PG_SZ_S,
Thomas Bogendoerfer 89169f
-		       hr_dev->caps.idx_buf_pg_sz);
Thomas Bogendoerfer 89169f
+		       hr_dev->caps.idx_buf_pg_sz + PG_SHIFT_OFFSET);
Thomas Bogendoerfer 89169f
 
Thomas Bogendoerfer 89169f
 	srq_context->idx_nxt_blk_addr = (u32)(mtts_idx[1] >> PAGE_ADDR_SHIFT);
Thomas Bogendoerfer 89169f
 	srq_context->idx_nxt_blk_addr =