* [dpdk-test-report] |WARNING| pw103994-103997 [PATCH] [V2, 4/4] common/mlx5: fix RQ size configuration in QP create
@ 2021-11-09 0:08 dpdklab
0 siblings, 0 replies; only message in thread
From: dpdklab @ 2021-11-09 0:08 UTC (permalink / raw)
To: test-report; +Cc: dpdk-test-reports
[-- Attachment #1: Type: text/plain, Size: 30756 bytes --]
Test-Label: iol-testing
Test-Status: WARNING
http://dpdk.org/patch/103994
_apply patch failure_
Submitter: Raja Zidane <rzidane@nvidia.com>
Date: Monday, November 08 2021 13:09:21
Applied on: CommitID:f8e0f8ce90303ba75e4301b1fb6ce57d8d255d8f
Apply patch set 103994-103997 failed:
Checking patch drivers/common/mlx5/mlx5_common_devx.c...
error: while searching for:
size_t alignment = MLX5_CQE_BUF_ALIGNMENT;
uint32_t umem_size, umem_dbrec;
uint32_t eqn;
uint16_t cq_size = 1 << log_desc_n;
int ret;
if (page_size == (size_t)-1 || alignment == (size_t)-1) {
error: patch failed: drivers/common/mlx5/mlx5_common_devx.c:86
error: while searching for:
return -rte_errno;
}
/* Allocate memory buffer for CQEs and doorbell record. */
umem_size = sizeof(struct mlx5_cqe) * cq_size;
umem_dbrec = RTE_ALIGN(umem_size, MLX5_DBR_SIZE);
umem_size += MLX5_DBR_SIZE;
umem_buf = mlx5_malloc(MLX5_MEM_RTE | MLX5_MEM_ZERO, umem_size,
error: patch failed: drivers/common/mlx5/mlx5_common_devx.c:102
error: while searching for:
cq_obj->cq = cq;
cq_obj->db_rec = RTE_PTR_ADD(cq_obj->umem_buf, umem_dbrec);
/* Mark all CQEs initially as invalid. */
mlx5_cq_init(cq_obj, cq_size);
return 0;
error:
ret = rte_errno;
error: patch failed: drivers/common/mlx5/mlx5_common_devx.c:142
error: while searching for:
void *umem_buf = NULL;
size_t alignment = MLX5_WQE_BUF_ALIGNMENT;
uint32_t umem_size, umem_dbrec;
uint16_t sq_size = 1 << log_wqbb_n;
int ret;
if (alignment == (size_t)-1) {
error: patch failed: drivers/common/mlx5/mlx5_common_devx.c:211
error: while searching for:
return -rte_errno;
}
/* Allocate memory buffer for WQEs and doorbell record. */
umem_size = MLX5_WQE_SIZE * sq_size;
umem_dbrec = RTE_ALIGN(umem_size, MLX5_DBR_SIZE);
umem_size += MLX5_DBR_SIZE;
umem_buf = mlx5_malloc(MLX5_MEM_RTE | MLX5_MEM_ZERO, umem_size,
error: patch failed: drivers/common/mlx5/mlx5_common_devx.c:220
error: while searching for:
* 0 on success, a negative errno value otherwise and rte_errno is set.
*/
int
mlx5_devx_qp_create(void *ctx, struct mlx5_devx_qp *qp_obj, uint16_t log_wqbb_n,
struct mlx5_devx_qp_attr *attr, int socket)
{
struct mlx5_devx_obj *qp = NULL;
error: patch failed: drivers/common/mlx5/mlx5_common_devx.c:349
error: while searching for:
void *umem_buf = NULL;
size_t alignment = MLX5_WQE_BUF_ALIGNMENT;
uint32_t umem_size, umem_dbrec;
uint16_t qp_size = 1 << log_wqbb_n;
int ret;
if (alignment == (size_t)-1) {
error: patch failed: drivers/common/mlx5/mlx5_common_devx.c:357
error: while searching for:
return -rte_errno;
}
/* Allocate memory buffer for WQEs and doorbell record. */
umem_size = MLX5_WQE_SIZE * qp_size;
umem_dbrec = RTE_ALIGN(umem_size, MLX5_DBR_SIZE);
umem_size += MLX5_DBR_SIZE;
umem_buf = mlx5_malloc(MLX5_MEM_RTE | MLX5_MEM_ZERO, umem_size,
error: patch failed: drivers/common/mlx5/mlx5_common_devx.c:366
Checking patch drivers/common/mlx5/mlx5_common_devx.h...
error: while searching for:
__rte_internal
int mlx5_devx_qp_create(void *ctx, struct mlx5_devx_qp *qp_obj,
uint16_t log_wqbb_n,
struct mlx5_devx_qp_attr *attr, int socket);
__rte_internal
error: patch failed: drivers/common/mlx5/mlx5_common_devx.h:89
Applying patch drivers/common/mlx5/mlx5_common_devx.c with 8 rejects...
Rejected hunk #1.
Rejected hunk #2.
Rejected hunk #3.
Rejected hunk #4.
Rejected hunk #5.
Rejected hunk #6.
Rejected hunk #7.
Rejected hunk #8.
Applying patch drivers/common/mlx5/mlx5_common_devx.h with 1 reject...
Rejected hunk #1.
diff a/drivers/common/mlx5/mlx5_common_devx.c b/drivers/common/mlx5/mlx5_common_devx.c (rejected hunks)
@@ -86,7 +86,7 @@ mlx5_devx_cq_create(void *ctx, struct mlx5_devx_cq *cq_obj, uint16_t log_desc_n,
size_t alignment = MLX5_CQE_BUF_ALIGNMENT;
uint32_t umem_size, umem_dbrec;
uint32_t eqn;
- uint16_t cq_size = 1 << log_desc_n;
+ uint32_t num_of_cqes = RTE_BIT32(log_desc_n);
int ret;
if (page_size == (size_t)-1 || alignment == (size_t)-1) {
@@ -102,7 +102,7 @@ mlx5_devx_cq_create(void *ctx, struct mlx5_devx_cq *cq_obj, uint16_t log_desc_n,
return -rte_errno;
}
/* Allocate memory buffer for CQEs and doorbell record. */
- umem_size = sizeof(struct mlx5_cqe) * cq_size;
+ umem_size = sizeof(struct mlx5_cqe) * num_of_cqes;
umem_dbrec = RTE_ALIGN(umem_size, MLX5_DBR_SIZE);
umem_size += MLX5_DBR_SIZE;
umem_buf = mlx5_malloc(MLX5_MEM_RTE | MLX5_MEM_ZERO, umem_size,
@@ -142,7 +142,7 @@ mlx5_devx_cq_create(void *ctx, struct mlx5_devx_cq *cq_obj, uint16_t log_desc_n,
cq_obj->cq = cq;
cq_obj->db_rec = RTE_PTR_ADD(cq_obj->umem_buf, umem_dbrec);
/* Mark all CQEs initially as invalid. */
- mlx5_cq_init(cq_obj, cq_size);
+ mlx5_cq_init(cq_obj, num_of_cqes);
return 0;
error:
ret = rte_errno;
@@ -211,7 +211,7 @@ mlx5_devx_sq_create(void *ctx, struct mlx5_devx_sq *sq_obj, uint16_t log_wqbb_n,
void *umem_buf = NULL;
size_t alignment = MLX5_WQE_BUF_ALIGNMENT;
uint32_t umem_size, umem_dbrec;
- uint16_t sq_size = 1 << log_wqbb_n;
+ uint32_t num_of_wqbbs = RTE_BIT32(log_wqbb_n);
int ret;
if (alignment == (size_t)-1) {
@@ -220,7 +220,7 @@ mlx5_devx_sq_create(void *ctx, struct mlx5_devx_sq *sq_obj, uint16_t log_wqbb_n,
return -rte_errno;
}
/* Allocate memory buffer for WQEs and doorbell record. */
- umem_size = MLX5_WQE_SIZE * sq_size;
+ umem_size = MLX5_WQE_SIZE * num_of_wqbbs;
umem_dbrec = RTE_ALIGN(umem_size, MLX5_DBR_SIZE);
umem_size += MLX5_DBR_SIZE;
umem_buf = mlx5_malloc(MLX5_MEM_RTE | MLX5_MEM_ZERO, umem_size,
@@ -349,7 +349,7 @@ mlx5_devx_qp_destroy(struct mlx5_devx_qp *qp)
* 0 on success, a negative errno value otherwise and rte_errno is set.
*/
int
-mlx5_devx_qp_create(void *ctx, struct mlx5_devx_qp *qp_obj, uint16_t log_wqbb_n,
+mlx5_devx_qp_create(void *ctx, struct mlx5_devx_qp *qp_obj, uint32_t log_wqbb_n,
struct mlx5_devx_qp_attr *attr, int socket)
{
struct mlx5_devx_obj *qp = NULL;
@@ -357,7 +357,7 @@ mlx5_devx_qp_create(void *ctx, struct mlx5_devx_qp *qp_obj, uint16_t log_wqbb_n,
void *umem_buf = NULL;
size_t alignment = MLX5_WQE_BUF_ALIGNMENT;
uint32_t umem_size, umem_dbrec;
- uint16_t qp_size = 1 << log_wqbb_n;
+ uint32_t num_of_wqbbs = RTE_BIT32(log_wqbb_n);
int ret;
if (alignment == (size_t)-1) {
@@ -366,7 +366,7 @@ mlx5_devx_qp_create(void *ctx, struct mlx5_devx_qp *qp_obj, uint16_t log_wqbb_n,
return -rte_errno;
}
/* Allocate memory buffer for WQEs and doorbell record. */
- umem_size = MLX5_WQE_SIZE * qp_size;
+ umem_size = MLX5_WQE_SIZE * num_of_wqbbs;
umem_dbrec = RTE_ALIGN(umem_size, MLX5_DBR_SIZE);
umem_size += MLX5_DBR_SIZE;
umem_buf = mlx5_malloc(MLX5_MEM_RTE | MLX5_MEM_ZERO, umem_size,
diff a/drivers/common/mlx5/mlx5_common_devx.h b/drivers/common/mlx5/mlx5_common_devx.h (rejected hunks)
@@ -89,7 +89,7 @@ void mlx5_devx_qp_destroy(struct mlx5_devx_qp *qp);
__rte_internal
int mlx5_devx_qp_create(void *ctx, struct mlx5_devx_qp *qp_obj,
- uint16_t log_wqbb_n,
+ uint32_t log_wqbb_n,
struct mlx5_devx_qp_attr *attr, int socket);
__rte_internal
Checking patch drivers/crypto/mlx5/mlx5_crypto_dek.c...
error: while searching for:
void
mlx5_crypto_dek_unset(struct mlx5_crypto_priv *priv)
{
mlx5_hlist_destroy(priv->dek_hlist);
priv->dek_hlist = NULL;
}
error: patch failed: drivers/crypto/mlx5/mlx5_crypto_dek.c:156
Applying patch drivers/crypto/mlx5/mlx5_crypto_dek.c with 1 reject...
Rejected hunk #1.
diff a/drivers/crypto/mlx5/mlx5_crypto_dek.c b/drivers/crypto/mlx5/mlx5_crypto_dek.c (rejected hunks)
@@ -156,6 +156,8 @@ mlx5_crypto_dek_setup(struct mlx5_crypto_priv *priv)
void
mlx5_crypto_dek_unset(struct mlx5_crypto_priv *priv)
{
- mlx5_hlist_destroy(priv->dek_hlist);
- priv->dek_hlist = NULL;
+ if (priv->dek_hlist) {
+ mlx5_hlist_destroy(priv->dek_hlist);
+ priv->dek_hlist = NULL;
+ }
}
Checking patch drivers/common/mlx5/mlx5_devx_cmds.c...
error: while searching for:
MLX5_HCA_CAP_OPMOD_GET_CUR);
if (!hcattr)
return rc;
attr->flow_counter_bulk_alloc_bitmap =
MLX5_GET(cmd_hca_cap, hcattr, flow_counter_bulk_alloc);
attr->flow_counters_dump = MLX5_GET(cmd_hca_cap, hcattr,
error: patch failed: drivers/common/mlx5/mlx5_devx_cmds.c:832
error: while searching for:
if (attr->log_page_size > MLX5_ADAPTER_PAGE_SHIFT)
MLX5_SET(qpc, qpc, log_page_size,
attr->log_page_size - MLX5_ADAPTER_PAGE_SHIFT);
if (attr->sq_size) {
MLX5_ASSERT(RTE_IS_POWER_OF_2(attr->sq_size));
MLX5_SET(qpc, qpc, cqn_snd, attr->cqn);
MLX5_SET(qpc, qpc, log_sq_size,
rte_log2_u32(attr->sq_size));
} else {
MLX5_SET(qpc, qpc, no_sq, 1);
}
if (attr->rq_size) {
MLX5_ASSERT(RTE_IS_POWER_OF_2(attr->rq_size));
MLX5_SET(qpc, qpc, cqn_rcv, attr->cqn);
MLX5_SET(qpc, qpc, log_rq_stride, attr->log_rq_stride -
MLX5_LOG_RQ_STRIDE_SHIFT);
MLX5_SET(qpc, qpc, log_rq_size,
rte_log2_u32(attr->rq_size));
MLX5_SET(qpc, qpc, rq_type, MLX5_NON_ZERO_RQ);
} else {
MLX5_SET(qpc, qpc, rq_type, MLX5_ZERO_LEN_RQ);
error: patch failed: drivers/common/mlx5/mlx5_devx_cmds.c:2153
Checking patch drivers/common/mlx5/mlx5_devx_cmds.h...
error: while searching for:
uint32_t log_max_mmo_decompress:5;
uint32_t umr_modify_entity_size_disabled:1;
uint32_t umr_indirect_mkey_disabled:1;
};
/* LAG Context. */
error: patch failed: drivers/common/mlx5/mlx5_devx_cmds.h:251
error: while searching for:
uint32_t uar_index:24;
uint32_t cqn:24;
uint32_t log_page_size:5;
uint32_t rq_size:17; /* Must be power of 2. */
uint32_t log_rq_stride:3;
uint32_t sq_size:17; /* Must be power of 2. */
uint32_t ts_format:2;
uint32_t dbr_umem_valid:1;
uint32_t dbr_umem_id;
error: patch failed: drivers/common/mlx5/mlx5_devx_cmds.h:477
Checking patch drivers/compress/mlx5/mlx5_compress.c...
error: while searching for:
qp_attr.cqn = qp->cq.cq->id;
qp_attr.ts_format =
mlx5_ts_format_conv(priv->cdev->config.hca_attr.qp_ts_format);
qp_attr.rq_size = 0;
qp_attr.sq_size = RTE_BIT32(log_ops_n);
qp_attr.mmo = priv->mmo_decomp_qp && priv->mmo_comp_qp
&& priv->mmo_dma_qp;
ret = mlx5_devx_qp_create(priv->cdev->ctx, &qp->qp, log_ops_n, &qp_attr,
error: patch failed: drivers/compress/mlx5/mlx5_compress.c:244
Checking patch drivers/crypto/mlx5/mlx5_crypto.c...
error: while searching for:
ucseg->if_cf_toe_cq_res = RTE_BE32(1u << MLX5_UMRC_IF_OFFSET);
ucseg->mkey_mask = RTE_BE64(1u << 0); /* Mkey length bit. */
ucseg->ko_to_bs = rte_cpu_to_be_32
((RTE_ALIGN(priv->max_segs_num, 4u) <<
MLX5_UMRC_KO_OFFSET) | (4 << MLX5_UMRC_TO_BS_OFFSET));
bsf->keytag = priv->keytag;
/* Init RDMA WRITE WQE. */
error: patch failed: drivers/crypto/mlx5/mlx5_crypto.c:545
error: while searching for:
.umr_en = 1,
.crypto_en = 1,
.set_remote_rw = 1,
.klm_num = RTE_ALIGN(priv->max_segs_num, 4),
};
for (umr = (struct mlx5_umr_wqe *)qp->qp_obj.umem_buf, i = 0;
error: patch failed: drivers/crypto/mlx5/mlx5_crypto.c:569
error: while searching for:
uint16_t log_nb_desc = rte_log2_u32(qp_conf->nb_descriptors);
uint32_t ret;
uint32_t alloc_size = sizeof(*qp);
struct mlx5_devx_cq_attr cq_attr = {
.uar_page_id = mlx5_os_get_devx_uar_page_id(priv->uar.obj),
};
error: patch failed: drivers/crypto/mlx5/mlx5_crypto.c:597
error: while searching for:
DRV_LOG(ERR, "Failed to create CQ.");
goto error;
}
attr.pd = priv->cdev->pdn;
attr.uar_index = mlx5_os_get_devx_uar_page_id(priv->uar.obj);
attr.cqn = qp->cq_obj.cq->id;
attr.rq_size = 0;
attr.sq_size = RTE_BIT32(log_nb_desc);
attr.ts_format =
mlx5_ts_format_conv(priv->cdev->config.hca_attr.qp_ts_format);
ret = mlx5_devx_qp_create(priv->cdev->ctx, &qp->qp_obj, log_nb_desc,
&attr, socket_id);
if (ret) {
DRV_LOG(ERR, "Failed to create QP.");
error: patch failed: drivers/crypto/mlx5/mlx5_crypto.c:619
error: while searching for:
return -errno;
}
if (strcmp(key, "max_segs_num") == 0) {
if (!tmp || tmp > MLX5_CRYPTO_MAX_SEGS) {
DRV_LOG(WARNING, "Invalid max_segs_num: %d, should"
" be less than %d.",
(uint32_t)tmp, MLX5_CRYPTO_MAX_SEGS);
rte_errno = EINVAL;
return -rte_errno;
}
error: patch failed: drivers/crypto/mlx5/mlx5_crypto.c:747
Hunk #6 succeeded at 886 (offset 76 lines).
error: while searching for:
RTE_CRYPTODEV_PMD_DEFAULT_MAX_NB_QUEUE_PAIRS,
};
const char *ibdev_name = mlx5_os_get_ctx_device_name(cdev->ctx);
uint16_t rdmw_wqe_size;
int ret;
if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
error: patch failed: drivers/crypto/mlx5/mlx5_crypto.c:824
error: while searching for:
}
priv->login_obj = login;
priv->keytag = rte_cpu_to_be_64(devarg_prms.keytag);
priv->max_segs_num = devarg_prms.max_segs_num;
priv->umr_wqe_size = sizeof(struct mlx5_wqe_umr_bsf_seg) +
sizeof(struct mlx5_wqe_cseg) +
sizeof(struct mlx5_wqe_umr_cseg) +
sizeof(struct mlx5_wqe_mkey_cseg) +
RTE_ALIGN(priv->max_segs_num, 4) *
sizeof(struct mlx5_wqe_dseg);
rdmw_wqe_size = sizeof(struct mlx5_rdma_write_wqe) +
sizeof(struct mlx5_wqe_dseg) *
(priv->max_segs_num <= 2 ? 2 : 2 +
RTE_ALIGN(priv->max_segs_num - 2, 4));
priv->wqe_set_size = priv->umr_wqe_size + rdmw_wqe_size;
priv->umr_wqe_stride = priv->umr_wqe_size / MLX5_SEND_WQE_BB;
priv->max_rdmar_ds = rdmw_wqe_size / sizeof(struct mlx5_wqe_dseg);
pthread_mutex_lock(&priv_list_lock);
TAILQ_INSERT_TAIL(&mlx5_crypto_priv_list, priv, next);
pthread_mutex_unlock(&priv_list_lock);
error: patch failed: drivers/crypto/mlx5/mlx5_crypto.c:873
Checking patch drivers/crypto/mlx5/mlx5_crypto.h...
error: while searching for:
#define MLX5_CRYPTO_DEK_HTABLE_SZ (1 << 11)
#define MLX5_CRYPTO_KEY_LENGTH 80
struct mlx5_crypto_priv {
TAILQ_ENTRY(mlx5_crypto_priv) next;
error: patch failed: drivers/crypto/mlx5/mlx5_crypto.h:16
Checking patch drivers/regex/mlx5/mlx5_regex_control.c...
error: while searching for:
qp_obj->qpn = q_ind;
qp_obj->ci = 0;
qp_obj->pi = 0;
attr.rq_size = 0;
attr.sq_size = RTE_BIT32(MLX5_REGEX_WQE_LOG_NUM(priv->has_umr,
log_nb_desc));
attr.mmo = priv->mmo_regex_qp_cap;
ret = mlx5_devx_qp_create(priv->cdev->ctx, &qp_obj->qp_obj,
error: patch failed: drivers/regex/mlx5/mlx5_regex_control.c:149
Checking patch drivers/vdpa/mlx5/mlx5_vdpa_event.c...
error: while searching for:
}
attr.uar_index = mlx5_os_get_devx_uar_page_id(priv->uar.obj);
attr.cqn = eqp->cq.cq_obj.cq->id;
attr.rq_size = RTE_BIT32(log_desc_n);
attr.log_rq_stride = rte_log2_u32(MLX5_WSEG_SIZE);
attr.sq_size = 0; /* No need SQ. */
attr.ts_format =
mlx5_ts_format_conv(priv->cdev->config.hca_attr.qp_ts_format);
ret = mlx5_devx_qp_create(priv->cdev->ctx, &(eqp->sw_qp), log_desc_n,
error: patch failed: drivers/vdpa/mlx5/mlx5_vdpa_event.c:589
Applying patch drivers/common/mlx5/mlx5_devx_cmds.c with 2 rejects...
Rejected hunk #1.
Rejected hunk #2.
Applying patch drivers/common/mlx5/mlx5_devx_cmds.h with 2 rejects...
Rejected hunk #1.
Rejected hunk #2.
Applying patch drivers/compress/mlx5/mlx5_compress.c with 1 reject...
Rejected hunk #1.
Applying patch drivers/crypto/mlx5/mlx5_crypto.c with 7 rejects...
Rejected hunk #1.
Rejected hunk #2.
Rejected hunk #3.
Rejected hunk #4.
Rejected hunk #5.
Hunk #6 applied cleanly.
Rejected hunk #7.
Rejected hunk #8.
Applying patch drivers/crypto/mlx5/mlx5_crypto.h with 1 reject...
Rejected hunk #1.
Applying patch drivers/regex/mlx5/mlx5_regex_control.c with 1 reject...
Rejected hunk #1.
Applying patch drivers/vdpa/mlx5/mlx5_vdpa_event.c with 1 reject...
Rejected hunk #1.
diff a/drivers/common/mlx5/mlx5_devx_cmds.c b/drivers/common/mlx5/mlx5_devx_cmds.c (rejected hunks)
@@ -832,6 +832,7 @@ mlx5_devx_cmd_query_hca_attr(void *ctx,
MLX5_HCA_CAP_OPMOD_GET_CUR);
if (!hcattr)
return rc;
+ attr->max_wqe_sz_sq = MLX5_GET(cmd_hca_cap, hcattr, max_wqe_sz_sq);
attr->flow_counter_bulk_alloc_bitmap =
MLX5_GET(cmd_hca_cap, hcattr, flow_counter_bulk_alloc);
attr->flow_counters_dump = MLX5_GET(cmd_hca_cap, hcattr,
@@ -2153,21 +2154,22 @@ mlx5_devx_cmd_create_qp(void *ctx,
if (attr->log_page_size > MLX5_ADAPTER_PAGE_SHIFT)
MLX5_SET(qpc, qpc, log_page_size,
attr->log_page_size - MLX5_ADAPTER_PAGE_SHIFT);
- if (attr->sq_size) {
- MLX5_ASSERT(RTE_IS_POWER_OF_2(attr->sq_size));
+ if (attr->num_of_send_wqbbs) {
+ MLX5_ASSERT(RTE_IS_POWER_OF_2(attr->num_of_send_wqbbs));
MLX5_SET(qpc, qpc, cqn_snd, attr->cqn);
MLX5_SET(qpc, qpc, log_sq_size,
- rte_log2_u32(attr->sq_size));
+ rte_log2_u32(attr->num_of_send_wqbbs));
} else {
MLX5_SET(qpc, qpc, no_sq, 1);
}
- if (attr->rq_size) {
- MLX5_ASSERT(RTE_IS_POWER_OF_2(attr->rq_size));
+ if (attr->num_of_receive_wqes) {
+ MLX5_ASSERT(RTE_IS_POWER_OF_2(
+ attr->num_of_receive_wqes));
MLX5_SET(qpc, qpc, cqn_rcv, attr->cqn);
MLX5_SET(qpc, qpc, log_rq_stride, attr->log_rq_stride -
MLX5_LOG_RQ_STRIDE_SHIFT);
MLX5_SET(qpc, qpc, log_rq_size,
- rte_log2_u32(attr->rq_size));
+ rte_log2_u32(attr->num_of_receive_wqes));
MLX5_SET(qpc, qpc, rq_type, MLX5_NON_ZERO_RQ);
} else {
MLX5_SET(qpc, qpc, rq_type, MLX5_ZERO_LEN_RQ);
diff a/drivers/common/mlx5/mlx5_devx_cmds.h b/drivers/common/mlx5/mlx5_devx_cmds.h (rejected hunks)
@@ -251,6 +251,7 @@ struct mlx5_hca_attr {
uint32_t log_max_mmo_decompress:5;
uint32_t umr_modify_entity_size_disabled:1;
uint32_t umr_indirect_mkey_disabled:1;
+ uint16_t max_wqe_sz_sq;
};
/* LAG Context. */
@@ -477,9 +478,9 @@ struct mlx5_devx_qp_attr {
uint32_t uar_index:24;
uint32_t cqn:24;
uint32_t log_page_size:5;
- uint32_t rq_size:17; /* Must be power of 2. */
+ uint32_t num_of_receive_wqes:17; /* Must be power of 2. */
uint32_t log_rq_stride:3;
- uint32_t sq_size:17; /* Must be power of 2. */
+ uint32_t num_of_send_wqbbs:17; /* Must be power of 2. */
uint32_t ts_format:2;
uint32_t dbr_umem_valid:1;
uint32_t dbr_umem_id;
diff a/drivers/compress/mlx5/mlx5_compress.c b/drivers/compress/mlx5/mlx5_compress.c (rejected hunks)
@@ -244,8 +244,8 @@ mlx5_compress_qp_setup(struct rte_compressdev *dev, uint16_t qp_id,
qp_attr.cqn = qp->cq.cq->id;
qp_attr.ts_format =
mlx5_ts_format_conv(priv->cdev->config.hca_attr.qp_ts_format);
- qp_attr.rq_size = 0;
- qp_attr.sq_size = RTE_BIT32(log_ops_n);
+ qp_attr.num_of_receive_wqes = 0;
+ qp_attr.num_of_send_wqbbs = RTE_BIT32(log_ops_n);
qp_attr.mmo = priv->mmo_decomp_qp && priv->mmo_comp_qp
&& priv->mmo_dma_qp;
ret = mlx5_devx_qp_create(priv->cdev->ctx, &qp->qp, log_ops_n, &qp_attr,
diff a/drivers/crypto/mlx5/mlx5_crypto.c b/drivers/crypto/mlx5/mlx5_crypto.c (rejected hunks)
@@ -545,7 +545,7 @@ mlx5_crypto_qp_init(struct mlx5_crypto_priv *priv, struct mlx5_crypto_qp *qp)
ucseg->if_cf_toe_cq_res = RTE_BE32(1u << MLX5_UMRC_IF_OFFSET);
ucseg->mkey_mask = RTE_BE64(1u << 0); /* Mkey length bit. */
ucseg->ko_to_bs = rte_cpu_to_be_32
- ((RTE_ALIGN(priv->max_segs_num, 4u) <<
+ ((MLX5_CRYPTO_KLM_SEGS_NUM(priv->umr_wqe_size) <<
MLX5_UMRC_KO_OFFSET) | (4 << MLX5_UMRC_TO_BS_OFFSET));
bsf->keytag = priv->keytag;
/* Init RDMA WRITE WQE. */
@@ -569,7 +569,7 @@ mlx5_crypto_indirect_mkeys_prepare(struct mlx5_crypto_priv *priv,
.umr_en = 1,
.crypto_en = 1,
.set_remote_rw = 1,
- .klm_num = RTE_ALIGN(priv->max_segs_num, 4),
+ .klm_num = MLX5_CRYPTO_KLM_SEGS_NUM(priv->umr_wqe_size),
};
for (umr = (struct mlx5_umr_wqe *)qp->qp_obj.umem_buf, i = 0;
@@ -597,6 +597,7 @@ mlx5_crypto_queue_pair_setup(struct rte_cryptodev *dev, uint16_t qp_id,
uint16_t log_nb_desc = rte_log2_u32(qp_conf->nb_descriptors);
uint32_t ret;
uint32_t alloc_size = sizeof(*qp);
+ uint32_t log_wqbb_n;
struct mlx5_devx_cq_attr cq_attr = {
.uar_page_id = mlx5_os_get_devx_uar_page_id(priv->uar.obj),
};
@@ -619,14 +620,16 @@ mlx5_crypto_queue_pair_setup(struct rte_cryptodev *dev, uint16_t qp_id,
DRV_LOG(ERR, "Failed to create CQ.");
goto error;
}
+ log_wqbb_n = rte_log2_u32(RTE_BIT32(log_nb_desc) *
+ (priv->wqe_set_size / MLX5_SEND_WQE_BB));
attr.pd = priv->cdev->pdn;
attr.uar_index = mlx5_os_get_devx_uar_page_id(priv->uar.obj);
attr.cqn = qp->cq_obj.cq->id;
- attr.rq_size = 0;
- attr.sq_size = RTE_BIT32(log_nb_desc);
+ attr.num_of_receive_wqes = 0;
+ attr.num_of_send_wqbbs = RTE_BIT32(log_wqbb_n);
attr.ts_format =
mlx5_ts_format_conv(priv->cdev->config.hca_attr.qp_ts_format);
- ret = mlx5_devx_qp_create(priv->cdev->ctx, &qp->qp_obj, log_nb_desc,
+ ret = mlx5_devx_qp_create(priv->cdev->ctx, &qp->qp_obj, log_wqbb_n,
&attr, socket_id);
if (ret) {
DRV_LOG(ERR, "Failed to create QP.");
@@ -747,10 +750,8 @@ mlx5_crypto_args_check_handler(const char *key, const char *val, void *opaque)
return -errno;
}
if (strcmp(key, "max_segs_num") == 0) {
- if (!tmp || tmp > MLX5_CRYPTO_MAX_SEGS) {
- DRV_LOG(WARNING, "Invalid max_segs_num: %d, should"
- " be less than %d.",
- (uint32_t)tmp, MLX5_CRYPTO_MAX_SEGS);
+ if (!tmp) {
+ DRV_LOG(ERR, "max_segs_num must be greater than 0.");
rte_errno = EINVAL;
return -rte_errno;
}
@@ -824,7 +900,6 @@ mlx5_crypto_dev_probe(struct mlx5_common_device *cdev)
RTE_CRYPTODEV_PMD_DEFAULT_MAX_NB_QUEUE_PAIRS,
};
const char *ibdev_name = mlx5_os_get_ctx_device_name(cdev->ctx);
- uint16_t rdmw_wqe_size;
int ret;
if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
@@ -873,20 +948,17 @@ mlx5_crypto_dev_probe(struct mlx5_common_device *cdev)
}
priv->login_obj = login;
priv->keytag = rte_cpu_to_be_64(devarg_prms.keytag);
- priv->max_segs_num = devarg_prms.max_segs_num;
- priv->umr_wqe_size = sizeof(struct mlx5_wqe_umr_bsf_seg) +
- sizeof(struct mlx5_wqe_cseg) +
- sizeof(struct mlx5_wqe_umr_cseg) +
- sizeof(struct mlx5_wqe_mkey_cseg) +
- RTE_ALIGN(priv->max_segs_num, 4) *
- sizeof(struct mlx5_wqe_dseg);
- rdmw_wqe_size = sizeof(struct mlx5_rdma_write_wqe) +
- sizeof(struct mlx5_wqe_dseg) *
- (priv->max_segs_num <= 2 ? 2 : 2 +
- RTE_ALIGN(priv->max_segs_num - 2, 4));
- priv->wqe_set_size = priv->umr_wqe_size + rdmw_wqe_size;
- priv->umr_wqe_stride = priv->umr_wqe_size / MLX5_SEND_WQE_BB;
- priv->max_rdmar_ds = rdmw_wqe_size / sizeof(struct mlx5_wqe_dseg);
+ ret = mlx5_crypto_configure_wqe_size(priv,
+ cdev->config.hca_attr.max_wqe_sz_sq, devarg_prms.max_segs_num);
+ if (ret) {
+ mlx5_devx_uar_release(&priv->uar);
+ rte_cryptodev_pmd_destroy(priv->crypto_dev);
+ return -1;
+ }
+ DRV_LOG(INFO, "Max number of segments: %u.",
+ (unsigned int)RTE_MIN(
+ MLX5_CRYPTO_KLM_SEGS_NUM(priv->umr_wqe_size),
+ (uint16_t)(priv->max_rdmar_ds - 2)));
pthread_mutex_lock(&priv_list_lock);
TAILQ_INSERT_TAIL(&mlx5_crypto_priv_list, priv, next);
pthread_mutex_unlock(&priv_list_lock);
diff a/drivers/crypto/mlx5/mlx5_crypto.h b/drivers/crypto/mlx5/mlx5_crypto.h (rejected hunks)
@@ -16,6 +16,13 @@
#define MLX5_CRYPTO_DEK_HTABLE_SZ (1 << 11)
#define MLX5_CRYPTO_KEY_LENGTH 80
+#define MLX5_CRYPTO_UMR_WQE_STATIC_SIZE (sizeof(struct mlx5_wqe_cseg) +\
+ sizeof(struct mlx5_wqe_umr_cseg) +\
+ sizeof(struct mlx5_wqe_mkey_cseg) +\
+ sizeof(struct mlx5_wqe_umr_bsf_seg))
+#define MLX5_CRYPTO_KLM_SEGS_NUM(umr_wqe_sz) ((umr_wqe_sz -\
+ MLX5_CRYPTO_UMR_WQE_STATIC_SIZE) /\
+ MLX5_WSEG_SIZE)
struct mlx5_crypto_priv {
TAILQ_ENTRY(mlx5_crypto_priv) next;
diff a/drivers/regex/mlx5/mlx5_regex_control.c b/drivers/regex/mlx5/mlx5_regex_control.c (rejected hunks)
@@ -149,8 +149,8 @@ regex_ctrl_create_hw_qp(struct mlx5_regex_priv *priv, struct mlx5_regex_qp *qp,
qp_obj->qpn = q_ind;
qp_obj->ci = 0;
qp_obj->pi = 0;
- attr.rq_size = 0;
- attr.sq_size = RTE_BIT32(MLX5_REGEX_WQE_LOG_NUM(priv->has_umr,
+ attr.num_of_receive_wqes = 0;
+ attr.num_of_send_wqbbs = RTE_BIT32(MLX5_REGEX_WQE_LOG_NUM(priv->has_umr,
log_nb_desc));
attr.mmo = priv->mmo_regex_qp_cap;
ret = mlx5_devx_qp_create(priv->cdev->ctx, &qp_obj->qp_obj,
diff a/drivers/vdpa/mlx5/mlx5_vdpa_event.c b/drivers/vdpa/mlx5/mlx5_vdpa_event.c (rejected hunks)
@@ -589,9 +589,9 @@ mlx5_vdpa_event_qp_create(struct mlx5_vdpa_priv *priv, uint16_t desc_n,
}
attr.uar_index = mlx5_os_get_devx_uar_page_id(priv->uar.obj);
attr.cqn = eqp->cq.cq_obj.cq->id;
- attr.rq_size = RTE_BIT32(log_desc_n);
+ attr.num_of_receive_wqes = RTE_BIT32(log_desc_n);
attr.log_rq_stride = rte_log2_u32(MLX5_WSEG_SIZE);
- attr.sq_size = 0; /* No need SQ. */
+ attr.num_of_send_wqbbs = 0; /* No need SQ. */
attr.ts_format =
mlx5_ts_format_conv(priv->cdev->config.hca_attr.qp_ts_format);
ret = mlx5_devx_qp_create(priv->cdev->ctx, &(eqp->sw_qp), log_desc_n,
Checking patch drivers/common/mlx5/mlx5_common_devx.c...
error: while searching for:
* Context returned from mlx5 open_device() glue function.
* @param[in/out] qp_obj
* Pointer to QP to create.
* @param[in] log_wqbb_n
* Log of number of WQBBs in queue.
* @param[in] attr
* Pointer to QP attributes structure.
* @param[in] socket
error: patch failed: drivers/common/mlx5/mlx5_common_devx.c:338
error: while searching for:
* 0 on success, a negative errno value otherwise and rte_errno is set.
*/
int
mlx5_devx_qp_create(void *ctx, struct mlx5_devx_qp *qp_obj, uint32_t log_wqbb_n,
struct mlx5_devx_qp_attr *attr, int socket)
{
struct mlx5_devx_obj *qp = NULL;
error: patch failed: drivers/common/mlx5/mlx5_common_devx.c:349
Hunk #3 succeeded at 211 (offset -146 lines).
Hunk #4 succeeded at 219 (offset -146 lines).
Checking patch drivers/common/mlx5/mlx5_common_devx.h...
error: while searching for:
__rte_internal
int mlx5_devx_qp_create(void *ctx, struct mlx5_devx_qp *qp_obj,
uint32_t log_wqbb_n,
struct mlx5_devx_qp_attr *attr, int socket);
__rte_internal
error: patch failed: drivers/common/mlx5/mlx5_common_devx.h:89
Checking patch drivers/compress/mlx5/mlx5_compress.c...
error: while searching for:
qp_attr.num_of_send_wqbbs = RTE_BIT32(log_ops_n);
qp_attr.mmo = priv->mmo_decomp_qp && priv->mmo_comp_qp
&& priv->mmo_dma_qp;
ret = mlx5_devx_qp_create(priv->cdev->ctx, &qp->qp, log_ops_n, &qp_attr,
socket_id);
if (ret != 0) {
DRV_LOG(ERR, "Failed to create QP.");
goto err;
error: patch failed: drivers/compress/mlx5/mlx5_compress.c:248
Checking patch drivers/crypto/mlx5/mlx5_crypto.c...
error: drivers/crypto/mlx5/mlx5_crypto.c: does not match index
Checking patch drivers/regex/mlx5/mlx5_regex_control.c...
error: while searching for:
log_nb_desc));
attr.mmo = priv->mmo_regex_qp_cap;
ret = mlx5_devx_qp_create(priv->cdev->ctx, &qp_obj->qp_obj,
MLX5_REGEX_WQE_LOG_NUM(priv->has_umr, log_nb_desc),
&attr, SOCKET_ID_ANY);
if (ret) {
DRV_LOG(ERR, "Can't create QP object.");
rte_errno = ENOMEM;
error: patch failed: drivers/regex/mlx5/mlx5_regex_control.c:154
Checking patch drivers/vdpa/mlx5/mlx5_vdpa_event.c...
error: while searching for:
attr.num_of_send_wqbbs = 0; /* No need SQ. */
attr.ts_format =
mlx5_ts_format_conv(priv->cdev->config.hca_attr.qp_ts_format);
ret = mlx5_devx_qp_create(priv->cdev->ctx, &(eqp->sw_qp), log_desc_n,
&attr, SOCKET_ID_ANY);
if (ret) {
DRV_LOG(ERR, "Failed to create SW QP(%u).", rte_errno);
goto error;
error: patch failed: drivers/vdpa/mlx5/mlx5_vdpa_event.c:594
Applying patch drivers/common/mlx5/mlx5_common_devx.c with 2 rejects...
Rejected hunk #1.
Rejected hunk #2.
Hunk #3 applied cleanly.
Hunk #4 applied cleanly.
Applying patch drivers/common/mlx5/mlx5_common_devx.h with 1 reject...
Rejected hunk #1.
Applying patch drivers/compress/mlx5/mlx5_compress.c with 1 reject...
Rejected hunk #1.
Applying patch drivers/regex/mlx5/mlx5_regex_control.c with 1 reject...
Rejected hunk #1.
Applying patch drivers/vdpa/mlx5/mlx5_vdpa_event.c with 1 reject...
Rejected hunk #1.
diff a/drivers/common/mlx5/mlx5_common_devx.c b/drivers/common/mlx5/mlx5_common_devx.c (rejected hunks)
@@ -338,8 +338,8 @@ mlx5_devx_qp_destroy(struct mlx5_devx_qp *qp)
* Context returned from mlx5 open_device() glue function.
* @param[in/out] qp_obj
* Pointer to QP to create.
- * @param[in] log_wqbb_n
- * Log of number of WQBBs in queue.
+ * @param[in] queue_size
+ * Size of queue to create.
* @param[in] attr
* Pointer to QP attributes structure.
* @param[in] socket
@@ -349,7 +349,7 @@ mlx5_devx_qp_destroy(struct mlx5_devx_qp *qp)
* 0 on success, a negative errno value otherwise and rte_errno is set.
*/
int
-mlx5_devx_qp_create(void *ctx, struct mlx5_devx_qp *qp_obj, uint32_t log_wqbb_n,
+mlx5_devx_qp_create(void *ctx, struct mlx5_devx_qp *qp_obj, uint32_t queue_size,
struct mlx5_devx_qp_attr *attr, int socket)
{
struct mlx5_devx_obj *qp = NULL;
diff a/drivers/common/mlx5/mlx5_common_devx.h b/drivers/common/mlx5/mlx5_common_devx.h (rejected hunks)
@@ -89,7 +89,7 @@ void mlx5_devx_qp_destroy(struct mlx5_devx_qp *qp);
__rte_internal
int mlx5_devx_qp_create(void *ctx, struct mlx5_devx_qp *qp_obj,
- uint32_t log_wqbb_n,
+ uint32_t queue_size,
struct mlx5_devx_qp_attr *attr, int socket);
__rte_internal
diff a/drivers/compress/mlx5/mlx5_compress.c b/drivers/compress/mlx5/mlx5_compress.c (rejected hunks)
@@ -248,8 +248,9 @@ mlx5_compress_qp_setup(struct rte_compressdev *dev, uint16_t qp_id,
qp_attr.num_of_send_wqbbs = RTE_BIT32(log_ops_n);
qp_attr.mmo = priv->mmo_decomp_qp && priv->mmo_comp_qp
&& priv->mmo_dma_qp;
- ret = mlx5_devx_qp_create(priv->cdev->ctx, &qp->qp, log_ops_n, &qp_attr,
- socket_id);
+ ret = mlx5_devx_qp_create(priv->cdev->ctx, &qp->qp,
+ qp_attr.num_of_send_wqbbs *
+ MLX5_WQE_SIZE, &qp_attr, socket_id);
if (ret != 0) {
DRV_LOG(ERR, "Failed to create QP.");
goto err;
diff a/drivers/regex/mlx5/mlx5_regex_control.c b/drivers/regex/mlx5/mlx5_regex_control.c (rejected hunks)
@@ -154,8 +154,8 @@ regex_ctrl_create_hw_qp(struct mlx5_regex_priv *priv, struct mlx5_regex_qp *qp,
log_nb_desc));
attr.mmo = priv->mmo_regex_qp_cap;
ret = mlx5_devx_qp_create(priv->cdev->ctx, &qp_obj->qp_obj,
- MLX5_REGEX_WQE_LOG_NUM(priv->has_umr, log_nb_desc),
- &attr, SOCKET_ID_ANY);
+ attr.num_of_send_wqbbs * MLX5_WQE_SIZE, &attr,
+ SOCKET_ID_ANY);
if (ret) {
DRV_LOG(ERR, "Can't create QP object.");
rte_errno = ENOMEM;
diff a/drivers/vdpa/mlx5/mlx5_vdpa_event.c b/drivers/vdpa/mlx5/mlx5_vdpa_event.c (rejected hunks)
@@ -594,8 +594,9 @@ mlx5_vdpa_event_qp_create(struct mlx5_vdpa_priv *priv, uint16_t desc_n,
attr.num_of_send_wqbbs = 0; /* No need SQ. */
attr.ts_format =
mlx5_ts_format_conv(priv->cdev->config.hca_attr.qp_ts_format);
- ret = mlx5_devx_qp_create(priv->cdev->ctx, &(eqp->sw_qp), log_desc_n,
- &attr, SOCKET_ID_ANY);
+ ret = mlx5_devx_qp_create(priv->cdev->ctx, &(eqp->sw_qp),
+ attr.num_of_receive_wqes *
+ MLX5_WSEG_SIZE, &attr, SOCKET_ID_ANY);
if (ret) {
DRV_LOG(ERR, "Failed to create SW QP(%u).", rte_errno);
goto error;
https://lab.dpdk.org/results/dashboard/patchsets/20071/
UNH-IOL DPDK Community Lab
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-11-09 0:08 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-09 0:08 [dpdk-test-report] |WARNING| pw103994-103997 [PATCH] [V2, 4/4] common/mlx5: fix RQ size configuration in QP create dpdklab
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).