Skip to content

Commit 60c43b3

Browse files
dtatuleamstsirkin
authored andcommitted
vdpa/mlx5: Mark vq state for modification in hw vq
.set_vq_state will set the indices and mark the fields to be modified in the hw vq. Advertise that the device supports changing the vq state when the device is in DRIVER_OK state and suspended. Reviewed-by: Gal Pressman <gal@nvidia.com> Signed-off-by: Dragos Tatulea <dtatulea@nvidia.com> Acked-by: Jason Wang <jasowang@redhat.com> Message-Id: <20231225151203.152687-6-dtatulea@nvidia.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
1 parent 9b23417 commit 60c43b3

2 files changed

Lines changed: 10 additions & 0 deletions

File tree

drivers/vdpa/mlx5/net/mlx5_vnet.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1249,6 +1249,12 @@ static int modify_virtqueue(struct mlx5_vdpa_net *ndev,
12491249
MLX5_SET64(virtio_q, vq_ctx, available_addr, mvq->driver_addr);
12501250
}
12511251

1252+
if (mvq->modified_fields & MLX5_VIRTQ_MODIFY_MASK_VIRTIO_Q_AVAIL_IDX)
1253+
MLX5_SET(virtio_net_q_object, obj_context, hw_available_index, mvq->avail_idx);
1254+
1255+
if (mvq->modified_fields & MLX5_VIRTQ_MODIFY_MASK_VIRTIO_Q_USED_IDX)
1256+
MLX5_SET(virtio_net_q_object, obj_context, hw_used_index, mvq->used_idx);
1257+
12521258
MLX5_SET64(virtio_net_q_object, obj_context, modify_field_select, mvq->modified_fields);
12531259
err = mlx5_cmd_exec(ndev->mvdev.mdev, in, inlen, out, sizeof(out));
12541260
if (err)
@@ -2328,6 +2334,8 @@ static int mlx5_vdpa_set_vq_state(struct vdpa_device *vdev, u16 idx,
23282334

23292335
mvq->used_idx = state->split.avail_index;
23302336
mvq->avail_idx = state->split.avail_index;
2337+
mvq->modified_fields |= MLX5_VIRTQ_MODIFY_MASK_VIRTIO_Q_AVAIL_IDX |
2338+
MLX5_VIRTQ_MODIFY_MASK_VIRTIO_Q_USED_IDX;
23312339
return 0;
23322340
}
23332341

include/linux/mlx5/mlx5_ifc_vdpa.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ enum {
146146
MLX5_VIRTQ_MODIFY_MASK_DIRTY_BITMAP_PARAMS = (u64)1 << 3,
147147
MLX5_VIRTQ_MODIFY_MASK_DIRTY_BITMAP_DUMP_ENABLE = (u64)1 << 4,
148148
MLX5_VIRTQ_MODIFY_MASK_VIRTIO_Q_ADDRS = (u64)1 << 6,
149+
MLX5_VIRTQ_MODIFY_MASK_VIRTIO_Q_AVAIL_IDX = (u64)1 << 7,
150+
MLX5_VIRTQ_MODIFY_MASK_VIRTIO_Q_USED_IDX = (u64)1 << 8,
149151
MLX5_VIRTQ_MODIFY_MASK_DESC_GROUP_MKEY = (u64)1 << 14,
150152
};
151153

0 commit comments

Comments
 (0)