Skip to content

Commit b8b4e1a

Browse files
Jiri Pirkomstsirkin
authored andcommitted
virtio_pci: pass vector policy enum to vp_find_one_vq_msix()
Instead of accessing vp_dev->per_vq_vectors, pass vector policy enum as an argument of vp_find_one_vq_msix() in preparation for another irq allocation policy. Signed-off-by: Jiri Pirko <jiri@nvidia.com> Message-Id: <20240716113552.80599-5-jiri@resnulli.us> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
1 parent ef775b2 commit b8b4e1a

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

drivers/virtio/virtio_pci_common.c

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -292,11 +292,11 @@ enum vp_vq_vector_policy {
292292
VP_VQ_VECTOR_POLICY_SHARED,
293293
};
294294

295-
static struct virtqueue *vp_find_one_vq_msix(struct virtio_device *vdev,
296-
int queue_idx,
297-
vq_callback_t *callback,
298-
const char *name, bool ctx,
299-
int *allocated_vectors)
295+
static struct virtqueue *
296+
vp_find_one_vq_msix(struct virtio_device *vdev, int queue_idx,
297+
vq_callback_t *callback, const char *name, bool ctx,
298+
int *allocated_vectors,
299+
enum vp_vq_vector_policy vector_policy)
300300
{
301301
struct virtio_pci_device *vp_dev = to_vp_device(vdev);
302302
struct virtqueue *vq;
@@ -305,15 +305,16 @@ static struct virtqueue *vp_find_one_vq_msix(struct virtio_device *vdev,
305305

306306
if (!callback)
307307
msix_vec = VIRTIO_MSI_NO_VECTOR;
308-
else if (vp_dev->per_vq_vectors)
308+
else if (vector_policy == VP_VQ_VECTOR_POLICY_EACH)
309309
msix_vec = (*allocated_vectors)++;
310310
else
311311
msix_vec = VP_MSIX_VQ_VECTOR;
312312
vq = vp_setup_vq(vdev, queue_idx, callback, name, ctx, msix_vec);
313313
if (IS_ERR(vq))
314314
return vq;
315315

316-
if (!vp_dev->per_vq_vectors || msix_vec == VIRTIO_MSI_NO_VECTOR)
316+
if (vector_policy == VP_VQ_VECTOR_POLICY_SHARED ||
317+
msix_vec == VIRTIO_MSI_NO_VECTOR)
317318
return vq;
318319

319320
/* allocate per-vq irq if available and necessary */
@@ -374,7 +375,7 @@ static int vp_find_vqs_msix(struct virtio_device *vdev, unsigned int nvqs,
374375
}
375376
vqs[i] = vp_find_one_vq_msix(vdev, queue_idx++, vqi->callback,
376377
vqi->name, vqi->ctx,
377-
&allocated_vectors);
378+
&allocated_vectors, vector_policy);
378379
if (IS_ERR(vqs[i])) {
379380
err = PTR_ERR(vqs[i]);
380381
goto error_find;

0 commit comments

Comments
 (0)