Test-Label: iol-testing Test-Status: WARNING http://dpdk.org/patch/108263 _apply patch failure_ Submitter: Xueming Li Date: Thursday, February 24 2022 13:28:20 Applied on: CommitID:ee05a93e1e6633d0fdec409faf09f12a2e05b991 Apply patch set 108263-108268 failed: Checking patch drivers/vdpa/mlx5/mlx5_vdpa.c... error: while searching for: DRV_LOG(DEBUG, "no traffic max is %u.", priv->no_traffic_max); } static int mlx5_vdpa_dev_probe(struct mlx5_common_device *cdev, struct mlx5_kvargs_ctrl *mkvlist) { struct mlx5_vdpa_priv *priv = NULL; struct mlx5_hca_attr *attr = &cdev->config.hca_attr; int retry; if (!attr->vdpa.valid || !attr->vdpa.max_num_virtio_queues) { DRV_LOG(ERR, "Not enough capabilities to support vdpa, maybe " error: patch failed: drivers/vdpa/mlx5/mlx5_vdpa.c:507 Hunk #7 succeeded at 534 (offset -79 lines). error: while searching for: } mlx5_vdpa_config_get(mkvlist, priv); SLIST_INIT(&priv->mr_list); pthread_mutex_init(&priv->vq_config_lock, NULL); pthread_mutex_lock(&priv_list_lock); TAILQ_INSERT_TAIL(&priv_list, priv, next); pthread_mutex_unlock(&priv_list_lock); return 0; error: if (priv) { if (priv->var) mlx5_glue->dv_free_var(priv->var); rte_intr_instance_free(priv->err_intr_handle); rte_free(priv); } return -rte_errno; } error: patch failed: drivers/vdpa/mlx5/mlx5_vdpa.c:564 Hunk #9 succeeded at 578 (offset -73 lines). Checking patch drivers/vdpa/mlx5/mlx5_vdpa.h... Checking patch drivers/vdpa/mlx5/mlx5_vdpa_event.c... Checking patch drivers/vdpa/mlx5/mlx5_vdpa_mem.c... Checking patch drivers/vdpa/mlx5/mlx5_vdpa_steer.c... Checking patch drivers/vdpa/mlx5/mlx5_vdpa_virtq.c... Applying patch drivers/vdpa/mlx5/mlx5_vdpa.c with 2 rejects... Hunk #1 applied cleanly. Hunk #2 applied cleanly. Hunk #3 applied cleanly. Hunk #4 applied cleanly. Hunk #5 applied cleanly. Rejected hunk #6. Hunk #7 applied cleanly. Rejected hunk #8. Hunk #9 applied cleanly. Applied patch drivers/vdpa/mlx5/mlx5_vdpa.h cleanly. Applied patch drivers/vdpa/mlx5/mlx5_vdpa_event.c cleanly. Applied patch drivers/vdpa/mlx5/mlx5_vdpa_mem.c cleanly. Applied patch drivers/vdpa/mlx5/mlx5_vdpa_steer.c cleanly. Applied patch drivers/vdpa/mlx5/mlx5_vdpa_virtq.c cleanly. diff a/drivers/vdpa/mlx5/mlx5_vdpa.c b/drivers/vdpa/mlx5/mlx5_vdpa.c (rejected hunks) @@ -507,13 +508,88 @@ mlx5_vdpa_config_get(struct mlx5_kvargs_ctrl *mkvlist, DRV_LOG(DEBUG, "no traffic max is %u.", priv->no_traffic_max); } +static int +mlx5_vdpa_create_dev_resources(struct mlx5_vdpa_priv *priv) +{ + struct mlx5_devx_tis_attr tis_attr = {0}; + struct ibv_context *ctx = priv->cdev->ctx; + uint32_t i; + int retry; + + for (retry = 0; retry < 7; retry++) { + priv->var = mlx5_glue->dv_alloc_var(ctx, 0); + if (priv->var != NULL) + break; + DRV_LOG(WARNING, "Failed to allocate VAR, retry %d.", retry); + /* Wait Qemu release VAR during vdpa restart, 0.1 sec based. */ + usleep(100000U << retry); + } + if (!priv->var) { + DRV_LOG(ERR, "Failed to allocate VAR %u.", errno); + rte_errno = ENOMEM; + return -rte_errno; + } + /* Always map the entire page. */ + priv->virtq_db_addr = mmap(NULL, priv->var->length, PROT_READ | + PROT_WRITE, MAP_SHARED, ctx->cmd_fd, + priv->var->mmap_off); + if (priv->virtq_db_addr == MAP_FAILED) { + DRV_LOG(ERR, "Failed to map doorbell page %u.", errno); + priv->virtq_db_addr = NULL; + rte_errno = errno; + return -rte_errno; + } + DRV_LOG(DEBUG, "VAR address of doorbell mapping is %p.", + priv->virtq_db_addr); + priv->td = mlx5_devx_cmd_create_td(ctx); + if (!priv->td) { + DRV_LOG(ERR, "Failed to create transport domain."); + rte_errno = errno; + return -rte_errno; + } + tis_attr.transport_domain = priv->td->id; + for (i = 0; i < priv->num_lag_ports; i++) { + /* 0 is auto affinity, non-zero value to propose port. */ + tis_attr.lag_tx_port_affinity = i + 1; + priv->tiss[i] = mlx5_devx_cmd_create_tis(ctx, &tis_attr); + if (!priv->tiss[i]) { + DRV_LOG(ERR, "Failed to create TIS %u.", i); + return -rte_errno; + } + } + priv->null_mr = mlx5_glue->alloc_null_mr(priv->cdev->pd); + if (!priv->null_mr) { + DRV_LOG(ERR, "Failed to allocate null MR."); + rte_errno = errno; + return -rte_errno; + } + DRV_LOG(DEBUG, "Dump fill Mkey = %u.", priv->null_mr->lkey); + priv->steer.domain = mlx5_glue->dr_create_domain(ctx, + MLX5DV_DR_DOMAIN_TYPE_NIC_RX); + if (!priv->steer.domain) { + DRV_LOG(ERR, "Failed to create Rx domain."); + rte_errno = errno; + return -rte_errno; + } + priv->steer.tbl = mlx5_glue->dr_create_flow_tbl(priv->steer.domain, 0); + if (!priv->steer.tbl) { + DRV_LOG(ERR, "Failed to create table 0 with Rx domain."); + rte_errno = errno; + return -rte_errno; + } + if (mlx5_vdpa_err_event_setup(priv) != 0) + return -rte_errno; + if (mlx5_vdpa_event_qp_global_prepare(priv)) + return -rte_errno; + return 0; +} + static int mlx5_vdpa_dev_probe(struct mlx5_common_device *cdev, struct mlx5_kvargs_ctrl *mkvlist) { struct mlx5_vdpa_priv *priv = NULL; struct mlx5_hca_attr *attr = &cdev->config.hca_attr; - int retry; if (!attr->vdpa.valid || !attr->vdpa.max_num_virtio_queues) { DRV_LOG(ERR, "Not enough capabilities to support vdpa, maybe " @@ -564,19 +625,13 @@ mlx5_vdpa_dev_probe(struct mlx5_common_device *cdev, } mlx5_vdpa_config_get(mkvlist, priv); SLIST_INIT(&priv->mr_list); - pthread_mutex_init(&priv->vq_config_lock, NULL); pthread_mutex_lock(&priv_list_lock); TAILQ_INSERT_TAIL(&priv_list, priv, next); pthread_mutex_unlock(&priv_list_lock); return 0; - error: - if (priv) { - if (priv->var) - mlx5_glue->dv_free_var(priv->var); - rte_intr_instance_free(priv->err_intr_handle); - rte_free(priv); - } + if (priv) + mlx5_vdpa_dev_release(priv); return -rte_errno; } Checking patch drivers/vdpa/mlx5/mlx5_vdpa.c... error: drivers/vdpa/mlx5/mlx5_vdpa.c: does not match index Checking patch drivers/vdpa/mlx5/mlx5_vdpa.h... error: drivers/vdpa/mlx5/mlx5_vdpa.h: does not match index Checking patch drivers/vdpa/mlx5/mlx5_vdpa_mem.c... error: drivers/vdpa/mlx5/mlx5_vdpa_mem.c: does not match index Checking patch drivers/vdpa/mlx5/mlx5_vdpa_virtq.c... error: drivers/vdpa/mlx5/mlx5_vdpa_virtq.c: does not match index Checking patch drivers/vdpa/mlx5/mlx5_vdpa.c... error: drivers/vdpa/mlx5/mlx5_vdpa.c: does not match index Checking patch drivers/vdpa/mlx5/mlx5_vdpa.h... error: drivers/vdpa/mlx5/mlx5_vdpa.h: does not match index Checking patch doc/guides/vdpadevs/mlx5.rst... Hunk #1 succeeded at 182 (offset 73 lines). Checking patch drivers/vdpa/mlx5/mlx5_vdpa.c... error: drivers/vdpa/mlx5/mlx5_vdpa.c: does not match index Checking patch drivers/vdpa/mlx5/mlx5_vdpa.h... error: drivers/vdpa/mlx5/mlx5_vdpa.h: does not match index Checking patch drivers/vdpa/mlx5/mlx5_vdpa_virtq.c... error: drivers/vdpa/mlx5/mlx5_vdpa_virtq.c: does not match index Applied patch doc/guides/vdpadevs/mlx5.rst cleanly. https://lab.dpdk.org/results/dashboard/patchsets/21254/ UNH-IOL DPDK Community Lab