From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 916D2A0518; Fri, 24 Jul 2020 14:07:20 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 781721C135; Fri, 24 Jul 2020 14:07:20 +0200 (CEST) Received: from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129]) by dpdk.org (Postfix) with ESMTP id 8EF061C12C for ; Fri, 24 Jul 2020 14:07:19 +0200 (CEST) Received: from Internal Mail-Server by MTLPINE1 (envelope-from matan@mellanox.com) with SMTP; 24 Jul 2020 15:07:15 +0300 Received: from pegasus25.mtr.labs.mlnx. (pegasus25.mtr.labs.mlnx [10.210.16.10]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id 06OC7F5K024628; Fri, 24 Jul 2020 15:07:15 +0300 From: Matan Azrad To: Maxime Coquelin Cc: dev@dpdk.org Date: Fri, 24 Jul 2020 12:07:11 +0000 Message-Id: <1595592431-164904-1-git-send-email-matan@mellanox.com> X-Mailer: git-send-email 1.8.3.1 Subject: [dpdk-dev] [PATCH] vdpa/mlx5: fix live migration termination X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" There are a lot of per virtq operations in the live migration handling. Before the driver support for queue update, when a virtq was not valid, all the LM handling was terminated. But now, when the driver supports queue update, the virtq can be invalid as legal stage. Skip invalid virtq in LM handling. Fixes: c47d6e83334e ("vdpa/mlx5: support queue update") Signed-off-by: Matan Azrad Acked-by: Xueming Li --- drivers/vdpa/mlx5/mlx5_vdpa_lm.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/drivers/vdpa/mlx5/mlx5_vdpa_lm.c b/drivers/vdpa/mlx5/mlx5_vdpa_lm.c index 460e01d..273c46f 100644 --- a/drivers/vdpa/mlx5/mlx5_vdpa_lm.c +++ b/drivers/vdpa/mlx5/mlx5_vdpa_lm.c @@ -19,9 +19,13 @@ for (i = 0; i < priv->nr_virtqs; ++i) { attr.queue_index = i; - if (!priv->virtqs[i].virtq || - mlx5_devx_cmd_modify_virtq(priv->virtqs[i].virtq, &attr)) { - DRV_LOG(ERR, "Failed to modify virtq %d logging.", i); + if (!priv->virtqs[i].virtq) { + DRV_LOG(DEBUG, "virtq %d is invalid for dirty bitmap " + "enabling.", i); + } else if (mlx5_devx_cmd_modify_virtq(priv->virtqs[i].virtq, + &attr)) { + DRV_LOG(ERR, "Failed to modify virtq %d for dirty " + "bitmap enabling.", i); return -1; } } @@ -69,9 +73,11 @@ attr.dirty_bitmap_mkey = mr->mkey->id; for (i = 0; i < priv->nr_virtqs; ++i) { attr.queue_index = i; - if (!priv->virtqs[i].virtq || - mlx5_devx_cmd_modify_virtq(priv->virtqs[i].virtq, &attr)) { - DRV_LOG(ERR, "Failed to modify virtq %d for lm.", i); + if (!priv->virtqs[i].virtq) { + DRV_LOG(DEBUG, "virtq %d is invalid for LM.", i); + } else if (mlx5_devx_cmd_modify_virtq(priv->virtqs[i].virtq, + &attr)) { + DRV_LOG(ERR, "Failed to modify virtq %d for LM.", i); goto err; } } @@ -104,15 +110,15 @@ if (!RTE_VHOST_NEED_LOG(features)) return 0; for (i = 0; i < priv->nr_virtqs; ++i) { - if (priv->virtqs[i].virtq) { + if (!priv->virtqs[i].virtq) { + DRV_LOG(DEBUG, "virtq %d is invalid for LM log.", i); + } else { ret = mlx5_vdpa_virtq_stop(priv, i); if (ret) { - DRV_LOG(ERR, "Failed to stop virtq %d.", i); + DRV_LOG(ERR, "Failed to stop virtq %d for LM " + "log.", i); return -1; } - } else { - DRV_LOG(ERR, "virtq %d is not created.", i); - return -1; } rte_vhost_log_used_vring(priv->vid, i, 0, MLX5_VDPA_USED_RING_LEN(priv->virtqs[i].vq_size)); -- 1.8.3.1