Skip to content

Commit 89a1c43

Browse files
Jiri Pirkomstsirkin
authored andcommitted
virtio_pci: pass vq info as an argument to vp_setup_vq()
Instead vp_setup_vq() storing vq info directly to vp_dev->vqs, let the caller provide a pointer to store the info to. This prepares vp_setup_vq() to be able to store admin queue info as well. Signed-off-by: Jiri Pirko <jiri@nvidia.com> Message-Id: <20240716113552.80599-9-jiri@resnulli.us> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
1 parent 7e5d9f5 commit 89a1c43

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

drivers/virtio/virtio_pci_common.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,8 @@ static struct virtqueue *vp_setup_vq(struct virtio_device *vdev, unsigned int in
197197
void (*callback)(struct virtqueue *vq),
198198
const char *name,
199199
bool ctx,
200-
u16 msix_vec)
200+
u16 msix_vec,
201+
struct virtio_pci_vq_info **p_info)
201202
{
202203
struct virtio_pci_device *vp_dev = to_vp_device(vdev);
203204
struct virtio_pci_vq_info *info = kmalloc(sizeof *info, GFP_KERNEL);
@@ -225,7 +226,7 @@ static struct virtqueue *vp_setup_vq(struct virtio_device *vdev, unsigned int in
225226
INIT_LIST_HEAD(&info->node);
226227
}
227228

228-
vp_dev->vqs[index] = info;
229+
*p_info = info;
229230
return vq;
230231

231232
out_info:
@@ -320,7 +321,8 @@ static struct virtqueue *
320321
vp_find_one_vq_msix(struct virtio_device *vdev, int queue_idx,
321322
vq_callback_t *callback, const char *name, bool ctx,
322323
bool slow_path, int *allocated_vectors,
323-
enum vp_vq_vector_policy vector_policy)
324+
enum vp_vq_vector_policy vector_policy,
325+
struct virtio_pci_vq_info **p_info)
324326
{
325327
struct virtio_pci_device *vp_dev = to_vp_device(vdev);
326328
struct virtqueue *vq;
@@ -338,7 +340,8 @@ vp_find_one_vq_msix(struct virtio_device *vdev, int queue_idx,
338340
msix_vec = VP_MSIX_CONFIG_VECTOR;
339341
else
340342
msix_vec = VP_MSIX_VQ_VECTOR;
341-
vq = vp_setup_vq(vdev, queue_idx, callback, name, ctx, msix_vec);
343+
vq = vp_setup_vq(vdev, queue_idx, callback, name, ctx, msix_vec,
344+
p_info);
342345
if (IS_ERR(vq))
343346
return vq;
344347

@@ -405,7 +408,8 @@ static int vp_find_vqs_msix(struct virtio_device *vdev, unsigned int nvqs,
405408
}
406409
vqs[i] = vp_find_one_vq_msix(vdev, queue_idx++, vqi->callback,
407410
vqi->name, vqi->ctx, false,
408-
&allocated_vectors, vector_policy);
411+
&allocated_vectors, vector_policy,
412+
&vp_dev->vqs[i]);
409413
if (IS_ERR(vqs[i])) {
410414
err = PTR_ERR(vqs[i]);
411415
goto error_find;
@@ -445,7 +449,7 @@ static int vp_find_vqs_intx(struct virtio_device *vdev, unsigned int nvqs,
445449
}
446450
vqs[i] = vp_setup_vq(vdev, queue_idx++, vqi->callback,
447451
vqi->name, vqi->ctx,
448-
VIRTIO_MSI_NO_VECTOR);
452+
VIRTIO_MSI_NO_VECTOR, &vp_dev->vqs[i]);
449453
if (IS_ERR(vqs[i])) {
450454
err = PTR_ERR(vqs[i]);
451455
goto out_del_vqs;

0 commit comments

Comments
 (0)