* [PATCH for-rc 0/7] RDMA/hns: Cleanup and Bugfixes
@ 2025-03-11 8:48 Junxian Huang
2025-03-11 8:48 ` [PATCH for-rc 1/7] RDMA/hns: Inappropriate format characters cleanup Junxian Huang
` (8 more replies)
0 siblings, 9 replies; 10+ messages in thread
From: Junxian Huang @ 2025-03-11 8:48 UTC (permalink / raw)
To: jgg, leon; +Cc: linux-rdma, linuxarm, huangjunxian6, tangchengchang
This series contains some recent cleanup and bugfixes for hns.
Guofeng Yue (1):
RDMA/hns: Inappropriate format characters cleanup
Junxian Huang (6):
RDMA/hns: Fix soft lockup during bt pages loop
RDMA/hns: Fix unmatched condition in error path of alloc_user_qp_db()
RDMA/hns: Fix invalid sq params not being blocked
RDMA/hns: Fix a missing rollback in error path of
hns_roce_create_qp_common()
RDMA/hns: Fix missing xa_destroy()
RDMA/hns: Fix wrong value of max_sge_rd
drivers/infiniband/hw/hns/hns_roce_alloc.c | 4 +++-
drivers/infiniband/hw/hns/hns_roce_cq.c | 1 +
drivers/infiniband/hw/hns/hns_roce_hem.c | 16 +++++++++++++++-
drivers/infiniband/hw/hns/hns_roce_main.c | 2 +-
drivers/infiniband/hw/hns/hns_roce_mr.c | 2 +-
drivers/infiniband/hw/hns/hns_roce_qp.c | 22 ++++++++++++----------
drivers/infiniband/hw/hns/hns_roce_srq.c | 2 +-
7 files changed, 34 insertions(+), 15 deletions(-)
--
2.33.0
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH for-rc 1/7] RDMA/hns: Inappropriate format characters cleanup
2025-03-11 8:48 [PATCH for-rc 0/7] RDMA/hns: Cleanup and Bugfixes Junxian Huang
@ 2025-03-11 8:48 ` Junxian Huang
2025-03-11 8:48 ` [PATCH for-rc 2/7] RDMA/hns: Fix soft lockup during bt pages loop Junxian Huang
` (7 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Junxian Huang @ 2025-03-11 8:48 UTC (permalink / raw)
To: jgg, leon; +Cc: linux-rdma, linuxarm, huangjunxian6, tangchengchang
From: Guofeng Yue <yueguofeng@h-partners.com>
Use %u for unsigned type and %d for enum.
Signed-off-by: Guofeng Yue <yueguofeng@h-partners.com>
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
---
drivers/infiniband/hw/hns/hns_roce_mr.c | 2 +-
drivers/infiniband/hw/hns/hns_roce_qp.c | 2 +-
drivers/infiniband/hw/hns/hns_roce_srq.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/infiniband/hw/hns/hns_roce_mr.c b/drivers/infiniband/hw/hns/hns_roce_mr.c
index 55b9283bfc6f..09da3496843b 100644
--- a/drivers/infiniband/hw/hns/hns_roce_mr.c
+++ b/drivers/infiniband/hw/hns/hns_roce_mr.c
@@ -998,7 +998,7 @@ static bool is_buf_attr_valid(struct hns_roce_dev *hr_dev,
if (attr->region_count > ARRAY_SIZE(attr->region) ||
attr->region_count < 1 || attr->page_shift < HNS_HW_PAGE_SHIFT) {
ibdev_err(ibdev,
- "invalid buf attr, region count %d, page shift %u.\n",
+ "invalid buf attr, region count %u, page shift %u.\n",
attr->region_count, attr->page_shift);
return false;
}
diff --git a/drivers/infiniband/hw/hns/hns_roce_qp.c b/drivers/infiniband/hw/hns/hns_roce_qp.c
index 9e2e76c59406..ccfef673a976 100644
--- a/drivers/infiniband/hw/hns/hns_roce_qp.c
+++ b/drivers/infiniband/hw/hns/hns_roce_qp.c
@@ -1319,7 +1319,7 @@ int hns_roce_create_qp(struct ib_qp *qp, struct ib_qp_init_attr *init_attr,
ret = hns_roce_create_qp_common(hr_dev, init_attr, udata, hr_qp);
if (ret)
- ibdev_err(ibdev, "create QP type 0x%x failed(%d)\n",
+ ibdev_err(ibdev, "create QP type %d failed(%d)\n",
init_attr->qp_type, ret);
err_out:
diff --git a/drivers/infiniband/hw/hns/hns_roce_srq.c b/drivers/infiniband/hw/hns/hns_roce_srq.c
index 70c06ef65603..1090051f493b 100644
--- a/drivers/infiniband/hw/hns/hns_roce_srq.c
+++ b/drivers/infiniband/hw/hns/hns_roce_srq.c
@@ -51,7 +51,7 @@ static void hns_roce_ib_srq_event(struct hns_roce_srq *srq,
break;
default:
dev_err(hr_dev->dev,
- "hns_roce:Unexpected event type 0x%x on SRQ %06lx\n",
+ "hns_roce:Unexpected event type %d on SRQ %06lx\n",
event_type, srq->srqn);
return;
}
--
2.33.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH for-rc 2/7] RDMA/hns: Fix soft lockup during bt pages loop
2025-03-11 8:48 [PATCH for-rc 0/7] RDMA/hns: Cleanup and Bugfixes Junxian Huang
2025-03-11 8:48 ` [PATCH for-rc 1/7] RDMA/hns: Inappropriate format characters cleanup Junxian Huang
@ 2025-03-11 8:48 ` Junxian Huang
2025-03-11 8:48 ` [PATCH for-rc 3/7] RDMA/hns: Fix unmatched condition in error path of alloc_user_qp_db() Junxian Huang
` (6 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Junxian Huang @ 2025-03-11 8:48 UTC (permalink / raw)
To: jgg, leon; +Cc: linux-rdma, linuxarm, huangjunxian6, tangchengchang
Driver runs a for-loop when allocating bt pages and mapping them with
buffer pages. When a large buffer (e.g. MR over 100GB) is being allocated,
it may require a considerable loop count. This will lead to soft lockup:
watchdog: BUG: soft lockup - CPU#27 stuck for 22s!
...
Call trace:
hem_list_alloc_mid_bt+0x124/0x394 [hns_roce_hw_v2]
hns_roce_hem_list_request+0xf8/0x160 [hns_roce_hw_v2]
hns_roce_mtr_create+0x2e4/0x360 [hns_roce_hw_v2]
alloc_mr_pbl+0xd4/0x17c [hns_roce_hw_v2]
hns_roce_reg_user_mr+0xf8/0x190 [hns_roce_hw_v2]
ib_uverbs_reg_mr+0x118/0x290
watchdog: BUG: soft lockup - CPU#35 stuck for 23s!
...
Call trace:
hns_roce_hem_list_find_mtt+0x7c/0xb0 [hns_roce_hw_v2]
mtr_map_bufs+0xc4/0x204 [hns_roce_hw_v2]
hns_roce_mtr_create+0x31c/0x3c4 [hns_roce_hw_v2]
alloc_mr_pbl+0xb0/0x160 [hns_roce_hw_v2]
hns_roce_reg_user_mr+0x108/0x1c0 [hns_roce_hw_v2]
ib_uverbs_reg_mr+0x120/0x2bc
Add a cond_resched() to fix soft lockup during these loops. In order not
to affect the allocation performance of normal-size buffer, set the loop
count of a 100GB MR as the threshold to call cond_resched().
Fixes: 38389eaa4db1 ("RDMA/hns: Add mtr support for mixed multihop addressing")
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
---
drivers/infiniband/hw/hns/hns_roce_hem.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/drivers/infiniband/hw/hns/hns_roce_hem.c b/drivers/infiniband/hw/hns/hns_roce_hem.c
index 605562122ecc..ca0798224e56 100644
--- a/drivers/infiniband/hw/hns/hns_roce_hem.c
+++ b/drivers/infiniband/hw/hns/hns_roce_hem.c
@@ -1361,6 +1361,11 @@ static int hem_list_alloc_root_bt(struct hns_roce_dev *hr_dev,
return ret;
}
+/* This is the bottom bt pages number of a 100G MR on 4K OS, assuming
+ * the bt page size is not expanded by cal_best_bt_pg_sz()
+ */
+#define RESCHED_LOOP_CNT_THRESHOLD_ON_4K 12800
+
/* construct the base address table and link them by address hop config */
int hns_roce_hem_list_request(struct hns_roce_dev *hr_dev,
struct hns_roce_hem_list *hem_list,
@@ -1369,6 +1374,7 @@ int hns_roce_hem_list_request(struct hns_roce_dev *hr_dev,
{
const struct hns_roce_buf_region *r;
int ofs, end;
+ int loop;
int unit;
int ret;
int i;
@@ -1386,7 +1392,10 @@ int hns_roce_hem_list_request(struct hns_roce_dev *hr_dev,
continue;
end = r->offset + r->count;
- for (ofs = r->offset; ofs < end; ofs += unit) {
+ for (ofs = r->offset, loop = 1; ofs < end; ofs += unit, loop++) {
+ if (!(loop % RESCHED_LOOP_CNT_THRESHOLD_ON_4K))
+ cond_resched();
+
ret = hem_list_alloc_mid_bt(hr_dev, r, unit, ofs,
hem_list->mid_bt[i],
&hem_list->btm_bt);
@@ -1443,9 +1452,14 @@ void *hns_roce_hem_list_find_mtt(struct hns_roce_dev *hr_dev,
struct list_head *head = &hem_list->btm_bt;
struct hns_roce_hem_item *hem, *temp_hem;
void *cpu_base = NULL;
+ int loop = 1;
int nr = 0;
list_for_each_entry_safe(hem, temp_hem, head, sibling) {
+ if (!(loop % RESCHED_LOOP_CNT_THRESHOLD_ON_4K))
+ cond_resched();
+ loop++;
+
if (hem_list_page_is_in_range(hem, offset)) {
nr = offset - hem->start;
cpu_base = hem->addr + nr * BA_BYTE_LEN;
--
2.33.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH for-rc 3/7] RDMA/hns: Fix unmatched condition in error path of alloc_user_qp_db()
2025-03-11 8:48 [PATCH for-rc 0/7] RDMA/hns: Cleanup and Bugfixes Junxian Huang
2025-03-11 8:48 ` [PATCH for-rc 1/7] RDMA/hns: Inappropriate format characters cleanup Junxian Huang
2025-03-11 8:48 ` [PATCH for-rc 2/7] RDMA/hns: Fix soft lockup during bt pages loop Junxian Huang
@ 2025-03-11 8:48 ` Junxian Huang
2025-03-11 8:48 ` [PATCH for-rc 4/7] RDMA/hns: Fix invalid sq params not being blocked Junxian Huang
` (5 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Junxian Huang @ 2025-03-11 8:48 UTC (permalink / raw)
To: jgg, leon; +Cc: linux-rdma, linuxarm, huangjunxian6, tangchengchang
Currently the condition of unmapping sdb in error path is not exactly
the same as the condition of mapping in alloc_user_qp_db(). This may
cause a problem of unmapping an unmapped db in some case, such as
when the QP is XRC TGT. Unified the two conditions.
Fixes: 90ae0b57e4a5 ("RDMA/hns: Combine enable flags of qp")
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
---
drivers/infiniband/hw/hns/hns_roce_qp.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/infiniband/hw/hns/hns_roce_qp.c b/drivers/infiniband/hw/hns/hns_roce_qp.c
index ccfef673a976..70a38bf2bd86 100644
--- a/drivers/infiniband/hw/hns/hns_roce_qp.c
+++ b/drivers/infiniband/hw/hns/hns_roce_qp.c
@@ -868,12 +868,14 @@ static int alloc_user_qp_db(struct hns_roce_dev *hr_dev,
struct hns_roce_ib_create_qp *ucmd,
struct hns_roce_ib_create_qp_resp *resp)
{
+ bool has_sdb = user_qp_has_sdb(hr_dev, init_attr, udata, resp, ucmd);
struct hns_roce_ucontext *uctx = rdma_udata_to_drv_context(udata,
struct hns_roce_ucontext, ibucontext);
+ bool has_rdb = user_qp_has_rdb(hr_dev, init_attr, udata, resp);
struct ib_device *ibdev = &hr_dev->ib_dev;
int ret;
- if (user_qp_has_sdb(hr_dev, init_attr, udata, resp, ucmd)) {
+ if (has_sdb) {
ret = hns_roce_db_map_user(uctx, ucmd->sdb_addr, &hr_qp->sdb);
if (ret) {
ibdev_err(ibdev,
@@ -884,7 +886,7 @@ static int alloc_user_qp_db(struct hns_roce_dev *hr_dev,
hr_qp->en_flags |= HNS_ROCE_QP_CAP_SQ_RECORD_DB;
}
- if (user_qp_has_rdb(hr_dev, init_attr, udata, resp)) {
+ if (has_rdb) {
ret = hns_roce_db_map_user(uctx, ucmd->db_addr, &hr_qp->rdb);
if (ret) {
ibdev_err(ibdev,
@@ -898,7 +900,7 @@ static int alloc_user_qp_db(struct hns_roce_dev *hr_dev,
return 0;
err_sdb:
- if (hr_qp->en_flags & HNS_ROCE_QP_CAP_SQ_RECORD_DB)
+ if (has_sdb)
hns_roce_db_unmap_user(uctx, &hr_qp->sdb);
err_out:
return ret;
--
2.33.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH for-rc 4/7] RDMA/hns: Fix invalid sq params not being blocked
2025-03-11 8:48 [PATCH for-rc 0/7] RDMA/hns: Cleanup and Bugfixes Junxian Huang
` (2 preceding siblings ...)
2025-03-11 8:48 ` [PATCH for-rc 3/7] RDMA/hns: Fix unmatched condition in error path of alloc_user_qp_db() Junxian Huang
@ 2025-03-11 8:48 ` Junxian Huang
2025-03-11 8:48 ` [PATCH for-rc 5/7] RDMA/hns: Fix a missing rollback in error path of hns_roce_create_qp_common() Junxian Huang
` (4 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Junxian Huang @ 2025-03-11 8:48 UTC (permalink / raw)
To: jgg, leon; +Cc: linux-rdma, linuxarm, huangjunxian6, tangchengchang
SQ params from userspace are checked in by set_user_sq_size(). But
when the check fails, the function doesn't return but instead keep
running and overwrite 'ret'. As a result, the invalid params will
not get blocked actually.
Add a return right after the failed check. Besides, although the
check result of kernel sq params will not be overwritten, to keep
coding style unified, move default_congest_type() before
set_kernel_sq_size().
Fixes: 6ec429d5887a ("RDMA/hns: Support userspace configuring congestion control algorithm with QP granularity")
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
---
drivers/infiniband/hw/hns/hns_roce_qp.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/infiniband/hw/hns/hns_roce_qp.c b/drivers/infiniband/hw/hns/hns_roce_qp.c
index 70a38bf2bd86..18bf3761a64e 100644
--- a/drivers/infiniband/hw/hns/hns_roce_qp.c
+++ b/drivers/infiniband/hw/hns/hns_roce_qp.c
@@ -1121,24 +1121,23 @@ static int set_qp_param(struct hns_roce_dev *hr_dev, struct hns_roce_qp *hr_qp,
ibucontext);
hr_qp->config = uctx->config;
ret = set_user_sq_size(hr_dev, &init_attr->cap, hr_qp, ucmd);
- if (ret)
+ if (ret) {
ibdev_err(ibdev,
"failed to set user SQ size, ret = %d.\n",
ret);
+ return ret;
+ }
ret = set_congest_param(hr_dev, hr_qp, ucmd);
- if (ret)
- return ret;
} else {
if (hr_dev->pci_dev->revision >= PCI_REVISION_ID_HIP09)
hr_qp->config = HNS_ROCE_EXSGE_FLAGS;
+ default_congest_type(hr_dev, hr_qp);
ret = set_kernel_sq_size(hr_dev, &init_attr->cap, hr_qp);
if (ret)
ibdev_err(ibdev,
"failed to set kernel SQ size, ret = %d.\n",
ret);
-
- default_congest_type(hr_dev, hr_qp);
}
return ret;
--
2.33.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH for-rc 5/7] RDMA/hns: Fix a missing rollback in error path of hns_roce_create_qp_common()
2025-03-11 8:48 [PATCH for-rc 0/7] RDMA/hns: Cleanup and Bugfixes Junxian Huang
` (3 preceding siblings ...)
2025-03-11 8:48 ` [PATCH for-rc 4/7] RDMA/hns: Fix invalid sq params not being blocked Junxian Huang
@ 2025-03-11 8:48 ` Junxian Huang
2025-03-11 8:48 ` [PATCH for-rc 6/7] RDMA/hns: Fix missing xa_destroy() Junxian Huang
` (3 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Junxian Huang @ 2025-03-11 8:48 UTC (permalink / raw)
To: jgg, leon; +Cc: linux-rdma, linuxarm, huangjunxian6, tangchengchang
When ib_copy_to_udata() fails in hns_roce_create_qp_common(),
hns_roce_qp_remove() should be called in the error path to
clean up resources in hns_roce_qp_store().
Fixes: 0f00571f9433 ("RDMA/hns: Use new SQ doorbell register for HIP09")
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
---
drivers/infiniband/hw/hns/hns_roce_qp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/infiniband/hw/hns/hns_roce_qp.c b/drivers/infiniband/hw/hns/hns_roce_qp.c
index 18bf3761a64e..2c1c08f37334 100644
--- a/drivers/infiniband/hw/hns/hns_roce_qp.c
+++ b/drivers/infiniband/hw/hns/hns_roce_qp.c
@@ -1220,7 +1220,7 @@ static int hns_roce_create_qp_common(struct hns_roce_dev *hr_dev,
min(udata->outlen, sizeof(resp)));
if (ret) {
ibdev_err(ibdev, "copy qp resp failed!\n");
- goto err_store;
+ goto err_flow_ctrl;
}
}
--
2.33.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH for-rc 6/7] RDMA/hns: Fix missing xa_destroy()
2025-03-11 8:48 [PATCH for-rc 0/7] RDMA/hns: Cleanup and Bugfixes Junxian Huang
` (4 preceding siblings ...)
2025-03-11 8:48 ` [PATCH for-rc 5/7] RDMA/hns: Fix a missing rollback in error path of hns_roce_create_qp_common() Junxian Huang
@ 2025-03-11 8:48 ` Junxian Huang
2025-03-11 8:48 ` [PATCH for-rc 7/7] RDMA/hns: Fix wrong value of max_sge_rd Junxian Huang
` (2 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Junxian Huang @ 2025-03-11 8:48 UTC (permalink / raw)
To: jgg, leon; +Cc: linux-rdma, linuxarm, huangjunxian6, tangchengchang
Add xa_destroy() for xarray in driver.
Fixes: 5c1f167af112 ("RDMA/hns: Init SRQ table for hip08")
Fixes: 27e19f451089 ("RDMA/hns: Convert cq_table to XArray")
Fixes: 736b5a70db98 ("RDMA/hns: Convert qp_table_tree to XArray")
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
---
drivers/infiniband/hw/hns/hns_roce_alloc.c | 4 +++-
drivers/infiniband/hw/hns/hns_roce_cq.c | 1 +
drivers/infiniband/hw/hns/hns_roce_qp.c | 1 +
3 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/infiniband/hw/hns/hns_roce_alloc.c b/drivers/infiniband/hw/hns/hns_roce_alloc.c
index 950c133d4220..6ee911f6885b 100644
--- a/drivers/infiniband/hw/hns/hns_roce_alloc.c
+++ b/drivers/infiniband/hw/hns/hns_roce_alloc.c
@@ -175,8 +175,10 @@ void hns_roce_cleanup_bitmap(struct hns_roce_dev *hr_dev)
if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_XRC)
ida_destroy(&hr_dev->xrcd_ida.ida);
- if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_SRQ)
+ if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_SRQ) {
ida_destroy(&hr_dev->srq_table.srq_ida.ida);
+ xa_destroy(&hr_dev->srq_table.xa);
+ }
hns_roce_cleanup_qp_table(hr_dev);
hns_roce_cleanup_cq_table(hr_dev);
ida_destroy(&hr_dev->mr_table.mtpt_ida.ida);
diff --git a/drivers/infiniband/hw/hns/hns_roce_cq.c b/drivers/infiniband/hw/hns/hns_roce_cq.c
index 4106423a1b39..3a5c93c9fb3e 100644
--- a/drivers/infiniband/hw/hns/hns_roce_cq.c
+++ b/drivers/infiniband/hw/hns/hns_roce_cq.c
@@ -537,5 +537,6 @@ void hns_roce_cleanup_cq_table(struct hns_roce_dev *hr_dev)
for (i = 0; i < HNS_ROCE_CQ_BANK_NUM; i++)
ida_destroy(&hr_dev->cq_table.bank[i].ida);
+ xa_destroy(&hr_dev->cq_table.array);
mutex_destroy(&hr_dev->cq_table.bank_mutex);
}
diff --git a/drivers/infiniband/hw/hns/hns_roce_qp.c b/drivers/infiniband/hw/hns/hns_roce_qp.c
index 2c1c08f37334..9f376a2232b0 100644
--- a/drivers/infiniband/hw/hns/hns_roce_qp.c
+++ b/drivers/infiniband/hw/hns/hns_roce_qp.c
@@ -1603,6 +1603,7 @@ void hns_roce_cleanup_qp_table(struct hns_roce_dev *hr_dev)
for (i = 0; i < HNS_ROCE_QP_BANK_NUM; i++)
ida_destroy(&hr_dev->qp_table.bank[i].ida);
xa_destroy(&hr_dev->qp_table.dip_xa);
+ xa_destroy(&hr_dev->qp_table_xa);
mutex_destroy(&hr_dev->qp_table.bank_mutex);
mutex_destroy(&hr_dev->qp_table.scc_mutex);
}
--
2.33.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH for-rc 7/7] RDMA/hns: Fix wrong value of max_sge_rd
2025-03-11 8:48 [PATCH for-rc 0/7] RDMA/hns: Cleanup and Bugfixes Junxian Huang
` (5 preceding siblings ...)
2025-03-11 8:48 ` [PATCH for-rc 6/7] RDMA/hns: Fix missing xa_destroy() Junxian Huang
@ 2025-03-11 8:48 ` Junxian Huang
2025-03-12 18:36 ` [PATCH for-rc 0/7] RDMA/hns: Cleanup and Bugfixes Leon Romanovsky
2025-03-12 18:37 ` Leon Romanovsky
8 siblings, 0 replies; 10+ messages in thread
From: Junxian Huang @ 2025-03-11 8:48 UTC (permalink / raw)
To: jgg, leon; +Cc: linux-rdma, linuxarm, huangjunxian6, tangchengchang
There is no difference between the sge of READ and non-READ
operations in hns RoCE. Set max_sge_rd to the same value as
max_send_sge.
Fixes: 9a4435375cd1 ("IB/hns: Add driver files for hns RoCE driver")
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
---
drivers/infiniband/hw/hns/hns_roce_main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
index ae24c81c9812..cf89a8db4f64 100644
--- a/drivers/infiniband/hw/hns/hns_roce_main.c
+++ b/drivers/infiniband/hw/hns/hns_roce_main.c
@@ -183,7 +183,7 @@ static int hns_roce_query_device(struct ib_device *ib_dev,
IB_DEVICE_RC_RNR_NAK_GEN;
props->max_send_sge = hr_dev->caps.max_sq_sg;
props->max_recv_sge = hr_dev->caps.max_rq_sg;
- props->max_sge_rd = 1;
+ props->max_sge_rd = hr_dev->caps.max_sq_sg;
props->max_cq = hr_dev->caps.num_cqs;
props->max_cqe = hr_dev->caps.max_cqes;
props->max_mr = hr_dev->caps.num_mtpts;
--
2.33.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH for-rc 0/7] RDMA/hns: Cleanup and Bugfixes
2025-03-11 8:48 [PATCH for-rc 0/7] RDMA/hns: Cleanup and Bugfixes Junxian Huang
` (6 preceding siblings ...)
2025-03-11 8:48 ` [PATCH for-rc 7/7] RDMA/hns: Fix wrong value of max_sge_rd Junxian Huang
@ 2025-03-12 18:36 ` Leon Romanovsky
2025-03-12 18:37 ` Leon Romanovsky
8 siblings, 0 replies; 10+ messages in thread
From: Leon Romanovsky @ 2025-03-12 18:36 UTC (permalink / raw)
To: jgg, Junxian Huang; +Cc: linux-rdma, linuxarm, tangchengchang
On Tue, 11 Mar 2025 16:48:50 +0800, Junxian Huang wrote:
> This series contains some recent cleanup and bugfixes for hns.
>
> Guofeng Yue (1):
> RDMA/hns: Inappropriate format characters cleanup
>
> Junxian Huang (6):
> RDMA/hns: Fix soft lockup during bt pages loop
> RDMA/hns: Fix unmatched condition in error path of alloc_user_qp_db()
> RDMA/hns: Fix invalid sq params not being blocked
> RDMA/hns: Fix a missing rollback in error path of
> hns_roce_create_qp_common()
> RDMA/hns: Fix missing xa_destroy()
> RDMA/hns: Fix wrong value of max_sge_rd
>
> [...]
Applied, thanks!
[1/7] RDMA/hns: Inappropriate format characters cleanup
(no commit info)
[2/7] RDMA/hns: Fix soft lockup during bt pages loop
https://git.kernel.org/rdma/rdma/c/25655580136de5
[3/7] RDMA/hns: Fix unmatched condition in error path of alloc_user_qp_db()
https://git.kernel.org/rdma/rdma/c/b9f59a24ba35a7
[4/7] RDMA/hns: Fix invalid sq params not being blocked
https://git.kernel.org/rdma/rdma/c/13c90c22204976
[5/7] RDMA/hns: Fix a missing rollback in error path of hns_roce_create_qp_common()
https://git.kernel.org/rdma/rdma/c/444907dd45cbe6
[6/7] RDMA/hns: Fix missing xa_destroy()
https://git.kernel.org/rdma/rdma/c/eda0a2fdbc24c3
[7/7] RDMA/hns: Fix wrong value of max_sge_rd
https://git.kernel.org/rdma/rdma/c/6b5e41a8b51fce
Best regards,
--
Leon Romanovsky <leon@kernel.org>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH for-rc 0/7] RDMA/hns: Cleanup and Bugfixes
2025-03-11 8:48 [PATCH for-rc 0/7] RDMA/hns: Cleanup and Bugfixes Junxian Huang
` (7 preceding siblings ...)
2025-03-12 18:36 ` [PATCH for-rc 0/7] RDMA/hns: Cleanup and Bugfixes Leon Romanovsky
@ 2025-03-12 18:37 ` Leon Romanovsky
8 siblings, 0 replies; 10+ messages in thread
From: Leon Romanovsky @ 2025-03-12 18:37 UTC (permalink / raw)
To: Junxian Huang; +Cc: jgg, linux-rdma, linuxarm, tangchengchang
On Tue, Mar 11, 2025 at 04:48:50PM +0800, Junxian Huang wrote:
> This series contains some recent cleanup and bugfixes for hns.
>
> Guofeng Yue (1):
> RDMA/hns: Inappropriate format characters cleanup
Applied to -next
>
> Junxian Huang (6):
> RDMA/hns: Fix soft lockup during bt pages loop
> RDMA/hns: Fix unmatched condition in error path of alloc_user_qp_db()
> RDMA/hns: Fix invalid sq params not being blocked
> RDMA/hns: Fix a missing rollback in error path of
> hns_roce_create_qp_common()
> RDMA/hns: Fix missing xa_destroy()
> RDMA/hns: Fix wrong value of max_sge_rd
Applied to -rc.
Thanks
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-03-12 18:37 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-11 8:48 [PATCH for-rc 0/7] RDMA/hns: Cleanup and Bugfixes Junxian Huang
2025-03-11 8:48 ` [PATCH for-rc 1/7] RDMA/hns: Inappropriate format characters cleanup Junxian Huang
2025-03-11 8:48 ` [PATCH for-rc 2/7] RDMA/hns: Fix soft lockup during bt pages loop Junxian Huang
2025-03-11 8:48 ` [PATCH for-rc 3/7] RDMA/hns: Fix unmatched condition in error path of alloc_user_qp_db() Junxian Huang
2025-03-11 8:48 ` [PATCH for-rc 4/7] RDMA/hns: Fix invalid sq params not being blocked Junxian Huang
2025-03-11 8:48 ` [PATCH for-rc 5/7] RDMA/hns: Fix a missing rollback in error path of hns_roce_create_qp_common() Junxian Huang
2025-03-11 8:48 ` [PATCH for-rc 6/7] RDMA/hns: Fix missing xa_destroy() Junxian Huang
2025-03-11 8:48 ` [PATCH for-rc 7/7] RDMA/hns: Fix wrong value of max_sge_rd Junxian Huang
2025-03-12 18:36 ` [PATCH for-rc 0/7] RDMA/hns: Cleanup and Bugfixes Leon Romanovsky
2025-03-12 18:37 ` Leon Romanovsky
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox