diff --git a/0106-libhns-Clean-up-DCA-magic-number-warnings.patch b/0106-libhns-Clean-up-DCA-magic-number-warnings.patch new file mode 100644 index 0000000000000000000000000000000000000000..50841cc90274dc45fce098eb9c3f0cfeb90fe196 --- /dev/null +++ b/0106-libhns-Clean-up-DCA-magic-number-warnings.patch @@ -0,0 +1,129 @@ +From 7393f8ba0bdeac20e5e5305a48b55a8d7243b220 Mon Sep 17 00:00:00 2001 +From: Junxian Huang +Date: Tue, 29 Jul 2025 16:31:38 +0800 +Subject: [PATCH 1/2] libhns: Clean up DCA magic number warnings + +Use macros instead of magic numbers. + +Fixes: 1479aa19be37 ("libhns: Use shared memory to sync DCA status") +Fixes: 3aa4683ef700 ("libhns: Add support for attaching QP's WQE buffer") +Fixes: 9ebe050337c4 ("libhns: Add support for shrinking DCA memory pool") +Signed-off-by: Junxian Huang +--- + providers/hns/hns_roce_u.c | 3 ++- + providers/hns/hns_roce_u_buf.c | 24 ++++++++++++++++++------ + 2 files changed, 20 insertions(+), 7 deletions(-) + +diff --git a/providers/hns/hns_roce_u.c b/providers/hns/hns_roce_u.c +index 32a73c7..b9bed73 100644 +--- a/providers/hns/hns_roce_u.c ++++ b/providers/hns/hns_roce_u.c +@@ -116,6 +116,7 @@ static struct { + static int mmap_dca(struct hns_roce_context *ctx, int cmd_fd, + int page_size, size_t size, uint64_t mmap_key) + { ++#define PRIME_QP_BUF_RATIO 2 + struct hns_roce_dca_ctx *dca_ctx = &ctx->dca_ctx; + void *addr; + +@@ -127,7 +128,7 @@ static int mmap_dca(struct hns_roce_context *ctx, int cmd_fd, + } + + dca_ctx->buf_status = addr; +- dca_ctx->sync_status = addr + size / 2; ++ dca_ctx->sync_status = addr + size / PRIME_QP_BUF_RATIO; + + return 0; + } +diff --git a/providers/hns/hns_roce_u_buf.c b/providers/hns/hns_roce_u_buf.c +index 780683e..09f567c 100644 +--- a/providers/hns/hns_roce_u_buf.c ++++ b/providers/hns/hns_roce_u_buf.c +@@ -126,11 +126,13 @@ static inline void *dca_mem_addr(struct hns_roce_dca_mem *dca_mem, int offset) + static int register_dca_mem(struct hns_roce_context *ctx, uint64_t key, + void *addr, uint32_t size, uint32_t *handle) + { ++#define REGISTER_DCA_MEM_ATTR_NUM 4 + struct ib_uverbs_attr *attr; + int ret; + + DECLARE_COMMAND_BUFFER(cmd, HNS_IB_OBJECT_DCA_MEM, +- HNS_IB_METHOD_DCA_MEM_REG, 4); ++ HNS_IB_METHOD_DCA_MEM_REG, ++ REGISTER_DCA_MEM_ATTR_NUM); + fill_attr_in_uint32(cmd, HNS_IB_ATTR_DCA_MEM_REG_LEN, size); + fill_attr_in_uint64(cmd, HNS_IB_ATTR_DCA_MEM_REG_ADDR, + ioctl_ptr_to_u64(addr)); +@@ -151,10 +153,12 @@ static int register_dca_mem(struct hns_roce_context *ctx, uint64_t key, + + static void deregister_dca_mem(struct hns_roce_context *ctx, uint32_t handle) + { ++#define DEREGISTER_DCA_MEM_ATTR_NUM 1 + int ret; + + DECLARE_COMMAND_BUFFER(cmd, HNS_IB_OBJECT_DCA_MEM, +- HNS_IB_METHOD_DCA_MEM_DEREG, 1); ++ HNS_IB_METHOD_DCA_MEM_DEREG, ++ DEREGISTER_DCA_MEM_ATTR_NUM); + fill_attr_in_obj(cmd, HNS_IB_ATTR_DCA_MEM_DEREG_HANDLE, handle); + ret = execute_ioctl(&ctx->ibv_ctx.context, cmd); + if (ret) +@@ -181,10 +185,12 @@ struct hns_dca_mem_shrink_resp { + static int shrink_dca_mem(struct hns_roce_context *ctx, uint32_t handle, + uint64_t size, struct hns_dca_mem_shrink_resp *resp) + { ++#define SHRINK_DCA_MEM_ATTR_NUM 4 + int ret; + + DECLARE_COMMAND_BUFFER(cmd, HNS_IB_OBJECT_DCA_MEM, +- HNS_IB_METHOD_DCA_MEM_SHRINK, 4); ++ HNS_IB_METHOD_DCA_MEM_SHRINK, ++ SHRINK_DCA_MEM_ATTR_NUM); + fill_attr_in_obj(cmd, HNS_IB_ATTR_DCA_MEM_SHRINK_HANDLE, handle); + fill_attr_in_uint64(cmd, HNS_IB_ATTR_DCA_MEM_SHRINK_RESERVED_SIZE, size); + fill_attr_out(cmd, HNS_IB_ATTR_DCA_MEM_SHRINK_OUT_FREE_KEY, +@@ -209,10 +215,12 @@ struct hns_dca_mem_query_resp { + static int query_dca_mem(struct hns_roce_context *ctx, uint32_t handle, + uint32_t index, struct hns_dca_mem_query_resp *resp) + { ++#define QUERY_DCA_MEM_ATTR_NUM 5 + int ret; + + DECLARE_COMMAND_BUFFER(cmd, HNS_IB_OBJECT_DCA_MEM, +- HNS_IB_METHOD_DCA_MEM_QUERY, 5); ++ HNS_IB_METHOD_DCA_MEM_QUERY, ++ QUERY_DCA_MEM_ATTR_NUM); + fill_attr_in_obj(cmd, HNS_IB_ATTR_DCA_MEM_QUERY_HANDLE, handle); + fill_attr_in_uint32(cmd, HNS_IB_ATTR_DCA_MEM_QUERY_PAGE_INDEX, index); + fill_attr_out(cmd, HNS_IB_ATTR_DCA_MEM_QUERY_OUT_KEY, +@@ -233,10 +241,12 @@ static int query_dca_mem(struct hns_roce_context *ctx, uint32_t handle, + void hns_roce_detach_dca_mem(struct hns_roce_context *ctx, uint32_t handle, + struct hns_roce_dca_detach_attr *attr) + { ++#define DETACH_DCA_MEM_ATTR_NUM 4 + int ret; + + DECLARE_COMMAND_BUFFER(cmd, HNS_IB_OBJECT_DCA_MEM, +- HNS_IB_METHOD_DCA_MEM_DETACH, 4); ++ HNS_IB_METHOD_DCA_MEM_DETACH, ++ DETACH_DCA_MEM_ATTR_NUM); + fill_attr_in_obj(cmd, HNS_IB_ATTR_DCA_MEM_DETACH_HANDLE, handle); + fill_attr_in_uint32(cmd, HNS_IB_ATTR_DCA_MEM_DETACH_SQ_INDEX, + attr->sq_index); +@@ -257,10 +267,12 @@ static int attach_dca_mem(struct hns_roce_context *ctx, uint32_t handle, + struct hns_roce_dca_attach_attr *attr, + struct hns_dca_mem_attach_resp *resp) + { ++#define ATTACH_DCA_MEM_ATTR_NUM 6 + int ret; + + DECLARE_COMMAND_BUFFER(cmd, HNS_IB_OBJECT_DCA_MEM, +- HNS_IB_METHOD_DCA_MEM_ATTACH, 6); ++ HNS_IB_METHOD_DCA_MEM_ATTACH, ++ ATTACH_DCA_MEM_ATTR_NUM); + fill_attr_in_obj(cmd, HNS_IB_ATTR_DCA_MEM_ATTACH_HANDLE, handle); + fill_attr_in_uint32(cmd, HNS_IB_ATTR_DCA_MEM_ATTACH_SQ_OFFSET, + attr->sq_offset); +-- +2.33.0 + diff --git a/0107-libhns-Clean-up-space-tab-blank-line-warnings.patch b/0107-libhns-Clean-up-space-tab-blank-line-warnings.patch new file mode 100644 index 0000000000000000000000000000000000000000..d03c8900f65eb9e8500098e96046a6c781f23147 --- /dev/null +++ b/0107-libhns-Clean-up-space-tab-blank-line-warnings.patch @@ -0,0 +1,79 @@ +From c840de9dc0bff85df5f985308c472faedd11c6b6 Mon Sep 17 00:00:00 2001 +From: Junxian Huang +Date: Tue, 29 Jul 2025 16:44:40 +0800 +Subject: [PATCH 2/2] libhns: Clean up space/tab/blank line warnings + +Upstream: Yes +Feature or Bugfix: Bugfix +AR: AR20220107964685 +AR: AR20220406855486 +DTS: DTS2025072937438 + +Clean up following warnings: +* Please use 1 blank space(' ') instead of TAB('\t') between the right + comment and the previous code. +* Do not add blank lines at the end of a code block defined by braces. +* Return value judgment should follow the function call. +* Do not put two or more continuous blank lines inside function + +Fixes: 5c1766078f32 ("libhns: Add direct verbs support to config DCA") +Fixes: 376e3c14d77c ("[BigDipperV3R9,NeZha-S][ROCE] libhns: Adapt UD inline data size for UCX") +Fixes: 5106d55eaf78 ("libhns: Support cqe inline") +Fixes: a624938fa6ab ("libhns: Refactor rq inline") +Signed-off-by: Junxian Huang +--- + providers/hns/hns_roce_u_hw_v2.c | 2 -- + providers/hns/hns_roce_u_verbs.c | 1 - + providers/hns/hnsdv.h | 4 ++-- + 3 files changed, 2 insertions(+), 5 deletions(-) + +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index 70e5b1f..4bc3025 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -478,7 +478,6 @@ static void handle_recv_inl_data(struct hns_roce_v2_cqe *cqe, + + if (data_len) + hr_reg_write(cqe, CQE_STATUS, HNS_ROCE_V2_CQE_LOCAL_LENGTH_ERR); +- + } + + static void handle_recv_cqe_inl_from_rq(struct hns_roce_v2_cqe *cqe, +@@ -2540,7 +2539,6 @@ static void wr_set_sge_list_rc(struct ibv_qp_ex *ibv_qp, size_t num_sge, + return; + } + +- + hr_reg_write(wqe, RCWQE_MSG_START_SGE_IDX, + qp->sge_info.start_idx & (qp->ex_sge.sge_cnt - 1)); + +diff --git a/providers/hns/hns_roce_u_verbs.c b/providers/hns/hns_roce_u_verbs.c +index 8491431..3bef514 100644 +--- a/providers/hns/hns_roce_u_verbs.c ++++ b/providers/hns/hns_roce_u_verbs.c +@@ -1746,7 +1746,6 @@ static uint32_t get_max_inline_data(struct hns_roce_context *ctx, + + if (max_inline_data) { + max_inline_data = roundup_pow_of_two(max_inline_data); +- + if (is_ud && max_inline_data < HNS_ROCE_MIN_UD_INLINE) + max_inline_data = HNS_ROCE_MIN_UD_INLINE; + +diff --git a/providers/hns/hnsdv.h b/providers/hns/hnsdv.h +index 7d95db4..463d85e 100644 +--- a/providers/hns/hnsdv.h ++++ b/providers/hns/hnsdv.h +@@ -60,8 +60,8 @@ enum hnsdv_qp_init_attr_mask { + }; + + struct hnsdv_qp_init_attr { +- uint64_t comp_mask; /* Use enum hnsdv_qp_init_attr_mask */ +- uint32_t create_flags; /* Use enum hnsdv_qp_create_flags */ ++ uint64_t comp_mask; /* Use enum hnsdv_qp_init_attr_mask */ ++ uint32_t create_flags; /* Use enum hnsdv_qp_create_flags */ + uint8_t congest_type; /* Use enum hnsdv_qp_congest_ctrl_type */ + uint8_t reserved[7]; + }; +-- +2.33.0 + diff --git a/rdma-core.spec b/rdma-core.spec index 6a12bd44d93f5bc00169c317e8cc3dfc0db1ff08..8251c3115f5db935283f5394a929df6dd933359b 100644 --- a/rdma-core.spec +++ b/rdma-core.spec @@ -1,6 +1,6 @@ Name: rdma-core Version: 41.0 -Release: 36 +Release: 37 Summary: RDMA core userspace libraries and daemons License: GPLv2 or BSD Url: https://github.com/linux-rdma/rdma-core @@ -111,6 +111,8 @@ patch102: 0102-libhns-Sync-lock-free-codes-from-mainline-driver.patch patch103: 0103-verbs-Assign-ibv-srq-pd-when-creating-SRQ.patch patch104: 0104-libhns-Clean-up-data-type-issues.patch patch105: 0105-libhns-Add-debug-log-for-lock-free-mode.patch +patch106: 0106-libhns-Clean-up-DCA-magic-number-warnings.patch +patch107: 0107-libhns-Clean-up-space-tab-blank-line-warnings.patch BuildRequires: binutils cmake >= 2.8.11 gcc libudev-devel pkgconfig pkgconfig(libnl-3.0) BuildRequires: pkgconfig(libnl-route-3.0) valgrind-devel systemd systemd-devel @@ -361,6 +363,12 @@ fi %{_mandir}/* %changelog +* Thu Aug 28 2025 Donghua Huang - 41.0-37 +- Type: bugfix +- ID: NA +- SUG: NA +- DESC: libhns: Magic number and Whitespace warning cleanup + * Tue Jul 8 2025 Guofeng Yue - 41.0-36 - Type: bugfix - ID: NA