Skip to contentSkip to conversation

vdpa/mlx5: fix virtq cleaning

PATCH In review Matan Azrad 3 participants 3 messages Mar 1, 2021 – Mar 31, 2021

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 vdpa/mlx5: fix virtq cleaning

The HW virtq object can be destroyed ether when the device is closed or when the state of the virtq becomes disabled.

Some parameters of the virtq should continue to be managed when the virtq state is changed but all of them must be initialized when the device is closed.

Wrongly, the enable parameter stayed on when the device is closed what might cause creation of invalid virtq in the next time a device is assigned to the driver.

Clean all the virtqs memory when the device is closed.

Fixes c47d6e83334e ("vdpa/mlx5: support queue update")
---
 drivers/vdpa/mlx5/mlx5_vdpa_virtq.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)
drivers/vdpa/mlx5/mlx5_vdpa_virtq.c +2 -6
index ef2642a..024c5c4 100644
@@ -103,13 +103,8 @@
 	for (i = 0; i < priv->nr_virtqs; i++) {
 		virtq = &priv->virtqs[i];
 		mlx5_vdpa_virtq_unset(virtq);
-		if (virtq->counters) {
+		if (virtq->counters)
 			claim_zero(mlx5_devx_cmd_destroy(virtq->counters));
-			virtq->counters = NULL;
-			memset(&virtq->reset, 0, sizeof(virtq->reset));
-		}
-		memset(virtq->err_time, 0, sizeof(virtq->err_time));
-		virtq->n_retry = 0;
 	}
 	for (i = 0; i < priv->num_lag_ports; i++) {
 		if (priv->tiss[i]) {
@@ -126,6 +121,7 @@
 		priv->virtq_db_addr = NULL;
 	}
 	priv->features = 0;
+	memset(priv->virtqs, 0, sizeof(*virtq) * priv->nr_virtqs);
 	priv->nr_virtqs = 0;
 }
 
Signature · 1 line
1.8.3.1
Reviewed-by on v1 1/1
#1 lore raw
Quoted 1 line · Matan Azrad

The HW virtq object can be destroyed ether when the device is closed or

s/ether/either/

Quoted 42 lines

when the state of the virtq becomes disabled.

Some parameters of the virtq should continue to be managed when the virtq state is changed but all of them must be initialized when the device is closed.

Wrongly, the enable parameter stayed on when the device is closed what might cause creation of invalid virtq in the next time a device is assigned to the driver.

Clean all the virtqs memory when the device is closed.

Fixes c47d6e83334e ("vdpa/mlx5: support queue update")
---
 drivers/vdpa/mlx5/mlx5_vdpa_virtq.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)
drivers/vdpa/mlx5/mlx5_vdpa_virtq.c +1 -6
index ef2642a..024c5c4 100644
@@ -103,13 +103,8 @@
 	for (i = 0; i < priv->nr_virtqs; i++) {
 		virtq = &priv->virtqs[i];
 		mlx5_vdpa_virtq_unset(virtq);
-		if (virtq->counters) {
+		if (virtq->counters)
 			claim_zero(mlx5_devx_cmd_destroy(virtq->counters));
-			virtq->counters = NULL;
-			memset(&virtq->reset, 0, sizeof(virtq->reset));
-		}
-		memset(virtq->err_time, 0, sizeof(virtq->err_time));
-		virtq->n_retry = 0;
 	}
 	for (i = 0; i < priv->num_lag_ports; i++) {
 		if (priv->tiss[i]) {

drivers/vdpa/mlx5/mlx5_vdpa_virtq.c line 127

Quoted 7 lines
drivers/vdpa/mlx5/mlx5_vdpa_virtq.c +1 -0
@@ -126,6 +121,7 @@
 		priv->virtq_db_addr = NULL;
 	}
 	priv->features = 0;
+	memset(priv->virtqs, 0, sizeof(*virtq) * priv->nr_virtqs);
 	priv->nr_virtqs = 0;
 }
 

With typo fixed in commit message:

No need to resubmit, we can fix the typo while applying.

Thanks,
Maxime

#2 lore raw
In reply to Matan Azrad
Quoted 20 lines

-----Original Message-----
From: stable <[email protected]> On Behalf Of Matan Azrad
Sent: Monday, March 1, 2021 6:42 PM
To: [email protected]
Cc: Maxime Coquelin <[email protected]>; [email protected]
Subject: [dpdk-stable] [PATCH] vdpa/mlx5: fix virtq cleaning

The HW virtq object can be destroyed ether when the device is closed or when the state of the virtq becomes disabled.

Some parameters of the virtq should continue to be managed when the virtq state is changed but all of them must be initialized when the device is closed.

Wrongly, the enable parameter stayed on when the device is closed what might cause creation of invalid virtq in the next time a device is assigned to the driver.

Clean all the virtqs memory when the device is closed.

Quoted 7 lines
Fixes c47d6e83334e ("vdpa/mlx5: support queue update")

---
1.8.3.1

With commit log fixed, patch applied to next-virtio/main. Thanks!