libhns: Two bugfixes in post_send flow
Two bugfixes in post_send flow: libhns: Fix out-of-order issue of requester when setting FENCE libhns: Fix reference to uninitialized cq pointer Signed-off-by: Xinghai Cen <cenxinghai@h-partners.com> (cherry picked from commit 4793d5d71084589b70422fc241883aef0784e847)
This commit is contained in:
parent
cb1fee4bd4
commit
9566f8a6ca
@ -0,0 +1,50 @@
|
|||||||
|
From f13f4391bb2c0b5a1c876f36b99242615bdae88b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Junxian Huang <huangjunxian6@hisilicon.com>
|
||||||
|
Date: Fri, 8 Nov 2024 17:04:09 +0800
|
||||||
|
Subject: [PATCH] libhns: Fix out-of-order issue of requester when setting
|
||||||
|
FENCE
|
||||||
|
|
||||||
|
mainline inclusion
|
||||||
|
from mainline-master
|
||||||
|
commit c4119911c212aaa552c9cb928fba0a696640c9b5
|
||||||
|
category: bugfix
|
||||||
|
bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/IB3ZHQ
|
||||||
|
CVE: NA
|
||||||
|
Reference: https://github.com/linux-rdma/rdma-core/pull/1513/commits/c4119911c212aaa552c9cb928fba0a696640c9b5
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
The FENCE indicator in hns WQE doesn't ensure that response data from
|
||||||
|
a previous Read/Atomic operation has been written to the requester's
|
||||||
|
memory before the subsequent Send/Write operation is processed. This
|
||||||
|
may result in the subsequent Send/Write operation accessing the original
|
||||||
|
data in memory instead of the expected response data.
|
||||||
|
|
||||||
|
Unlike FENCE, the SO (Strong Order) indicator blocks the subsequent
|
||||||
|
operation until the previous response data is written to memory and a
|
||||||
|
bresp is returned. Set the SO indicator instead of FENCE to maintain
|
||||||
|
strict order.
|
||||||
|
|
||||||
|
Fixes: cbdf5e32a855 ("libhns: Reimplement verbs of post_send and post_recv for hip08 RoCE")
|
||||||
|
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
|
||||||
|
Signed-off-by: Xinghai Cen <cenxinghai@h-partners.com>
|
||||||
|
---
|
||||||
|
providers/hns/hns_roce_u_hw_v2.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c
|
||||||
|
index 9371150..2debcb3 100644
|
||||||
|
--- a/providers/hns/hns_roce_u_hw_v2.c
|
||||||
|
+++ b/providers/hns/hns_roce_u_hw_v2.c
|
||||||
|
@@ -1527,7 +1527,7 @@ static int set_rc_wqe(void *wqe, struct hns_roce_qp *qp, struct ibv_send_wr *wr,
|
||||||
|
|
||||||
|
hr_reg_write_bool(wqe, RCWQE_CQE,
|
||||||
|
!!(wr->send_flags & IBV_SEND_SIGNALED));
|
||||||
|
- hr_reg_write_bool(wqe, RCWQE_FENCE,
|
||||||
|
+ hr_reg_write_bool(wqe, RCWQE_SO,
|
||||||
|
!!(wr->send_flags & IBV_SEND_FENCE));
|
||||||
|
hr_reg_write_bool(wqe, RCWQE_SE,
|
||||||
|
!!(wr->send_flags & IBV_SEND_SOLICITED));
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
||||||
68
0038-libhns-Fix-reference-to-uninitialized-cq-pointer.patch
Normal file
68
0038-libhns-Fix-reference-to-uninitialized-cq-pointer.patch
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
From ccd9858cdf31573c447b43f7f7977e6b61869b82 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chengchang Tang <tangchengchang@huawei.com>
|
||||||
|
Date: Fri, 8 Nov 2024 17:04:08 +0800
|
||||||
|
Subject: [PATCH] libhns: Fix reference to uninitialized cq pointer
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=utf-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
mainline inclusion
|
||||||
|
from mainline-master
|
||||||
|
commit 18e3117cdd161a3f40b8a917f24cfb5227a1d75a
|
||||||
|
category: bugfix
|
||||||
|
bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/IB3ZHQ
|
||||||
|
CVE: NA
|
||||||
|
Reference: https://github.com/linux-rdma/rdma-core/pull/1513/commits/18e3117cdd161a3f40b8a917f24cfb5227a1d75a
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
For QPs which do not have an SQ, such as XRC TGT,the send_cq
|
||||||
|
pointer will not be initailized. Since the supported max_gs
|
||||||
|
will be 0 in this case, check it and return before referencing
|
||||||
|
the send_cq pointer.
|
||||||
|
|
||||||
|
Fixes: cbdf5e32a855 ("libhns: Reimplement verbs of post_send and post_recv for hip08 RoCE")
|
||||||
|
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
|
||||||
|
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
|
||||||
|
Signed-off-by: Xinghai Cen <cenxinghai@h-partners.com>
|
||||||
|
---
|
||||||
|
providers/hns/hns_roce_u_hw_v2.c | 12 ++++++------
|
||||||
|
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c
|
||||||
|
index 2debcb3..465ef1e 100644
|
||||||
|
--- a/providers/hns/hns_roce_u_hw_v2.c
|
||||||
|
+++ b/providers/hns/hns_roce_u_hw_v2.c
|
||||||
|
@@ -1579,7 +1579,7 @@ int hns_roce_u_v2_post_send(struct ibv_qp *ibvqp, struct ibv_send_wr *wr,
|
||||||
|
struct hns_roce_context *ctx = to_hr_ctx(ibvqp->context);
|
||||||
|
struct hns_roce_qp *qp = to_hr_qp(ibvqp);
|
||||||
|
struct hns_roce_sge_info sge_info = {};
|
||||||
|
- struct hns_roce_rc_sq_wqe *wqe;
|
||||||
|
+ struct hns_roce_rc_sq_wqe *wqe = NULL;
|
||||||
|
struct ibv_qp_attr attr = {};
|
||||||
|
unsigned int wqe_idx, nreq;
|
||||||
|
int ret;
|
||||||
|
@@ -1595,15 +1595,15 @@ int hns_roce_u_v2_post_send(struct ibv_qp *ibvqp, struct ibv_send_wr *wr,
|
||||||
|
sge_info.start_idx = qp->next_sge; /* start index of extend sge */
|
||||||
|
|
||||||
|
for (nreq = 0; wr; ++nreq, wr = wr->next) {
|
||||||
|
- if (hns_roce_v2_wq_overflow(&qp->sq, nreq,
|
||||||
|
- to_hr_cq(qp->verbs_qp.qp.send_cq))) {
|
||||||
|
- ret = ENOMEM;
|
||||||
|
+ if (wr->num_sge > (int)qp->sq.max_gs) {
|
||||||
|
+ ret = qp->sq.max_gs > 0 ? EINVAL : EOPNOTSUPP;
|
||||||
|
*bad_wr = wr;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (wr->num_sge > qp->sq.max_gs) {
|
||||||
|
- ret = EINVAL;
|
||||||
|
+ if (hns_roce_v2_wq_overflow(&qp->sq, nreq,
|
||||||
|
+ to_hr_cq(qp->verbs_qp.qp.send_cq))) {
|
||||||
|
+ ret = ENOMEM;
|
||||||
|
*bad_wr = wr;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
||||||
@ -1,6 +1,6 @@
|
|||||||
Name: rdma-core
|
Name: rdma-core
|
||||||
Version: 50.0
|
Version: 50.0
|
||||||
Release: 14
|
Release: 15
|
||||||
Summary: RDMA core userspace libraries and daemons
|
Summary: RDMA core userspace libraries and daemons
|
||||||
License: GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
|
License: GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
|
||||||
Url: https://github.com/linux-rdma/rdma-core
|
Url: https://github.com/linux-rdma/rdma-core
|
||||||
@ -42,6 +42,8 @@ patch33: 0033-libhns-Fix-missing-flag-when-creating-qp-by-hnsdv_cr.patch
|
|||||||
patch34: 0034-librdmacm-Fix-an-overflow-bug-in-qsort-comparison-function.patch
|
patch34: 0034-librdmacm-Fix-an-overflow-bug-in-qsort-comparison-function.patch
|
||||||
patch35: 0035-Fix-the-stride-calculation-for-MSN-PSN-area.patch
|
patch35: 0035-Fix-the-stride-calculation-for-MSN-PSN-area.patch
|
||||||
patch36: 0036-add-ZTE-Dinghai-rdma-driver.patch
|
patch36: 0036-add-ZTE-Dinghai-rdma-driver.patch
|
||||||
|
patch37: 0037-libhns-Fix-out-of-order-issue-of-requester-when-sett.patch
|
||||||
|
patch38: 0038-libhns-Fix-reference-to-uninitialized-cq-pointer.patch
|
||||||
|
|
||||||
BuildRequires: binutils cmake >= 2.8.11 gcc libudev-devel pkgconfig pkgconfig(libnl-3.0)
|
BuildRequires: binutils cmake >= 2.8.11 gcc libudev-devel pkgconfig pkgconfig(libnl-3.0)
|
||||||
BuildRequires: pkgconfig(libnl-route-3.0) systemd systemd-devel
|
BuildRequires: pkgconfig(libnl-route-3.0) systemd systemd-devel
|
||||||
@ -621,6 +623,12 @@ fi
|
|||||||
%doc %{_docdir}/%{name}-%{version}/70-persistent-ipoib.rules
|
%doc %{_docdir}/%{name}-%{version}/70-persistent-ipoib.rules
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Nov 15 2024 Xinghai Cen <cenxinghai@h-partners.com> - 50.0-15
|
||||||
|
- Type: bugfix
|
||||||
|
- ID: NA
|
||||||
|
- SUG: NA
|
||||||
|
- DESC: Two bugfixes in post_send flow
|
||||||
|
|
||||||
* Fri Nov 08 2024 Funda Wang <fundawang@yeah.net> - 50.0-14
|
* Fri Nov 08 2024 Funda Wang <fundawang@yeah.net> - 50.0-14
|
||||||
- adopt to new cmake macro
|
- adopt to new cmake macro
|
||||||
- migrated to SPDX license
|
- migrated to SPDX license
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user