]> Git Repo - linux.git/commitdiff
virtio: convert the rest virtio_find_vqs() users to virtio_find_vqs_info()
authorJiri Pirko <[email protected]>
Mon, 8 Jul 2024 07:48:12 +0000 (09:48 +0200)
committerMichael S. Tsirkin <[email protected]>
Wed, 17 Jul 2024 09:20:58 +0000 (05:20 -0400)
Instead of passing separate names and callbacks arrays
to virtio_find_vqs(), have one of virtual_queue_info structs and
pass it to virtio_find_vqs_info().

Suggested-by: Xuan Zhuo <[email protected]>
Signed-off-by: Jiri Pirko <[email protected]>
Message-Id: <20240708074814.1739223[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
arch/um/drivers/virt-pci.c
drivers/bluetooth/virtio_bt.c
drivers/firmware/arm_scmi/virtio.c
drivers/gpio/gpio-virtio.c
drivers/gpu/drm/virtio/virtgpu_kms.c
drivers/iommu/virtio-iommu.c
drivers/net/wireless/virtual/mac80211_hwsim.c
drivers/rpmsg/virtio_rpmsg_bus.c
drivers/virtio/virtio_input.c
net/vmw_vsock/virtio_transport.c
sound/virtio/virtio_card.c

index 7cb503469bbdac5eb709bbf59e258ace099765f7..3a668241c0aafa4efa0521e05b0fce53af62fe4d 100644 (file)
@@ -567,12 +567,14 @@ struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus)
 
 static int um_pci_init_vqs(struct um_pci_device *dev)
 {
+       struct virtqueue_info vqs_info[] = {
+               { "cmd", um_pci_cmd_vq_cb },
+               { "irq", um_pci_irq_vq_cb },
+       };
        struct virtqueue *vqs[2];
-       static const char *const names[2] = { "cmd", "irq" };
-       vq_callback_t *cbs[2] = { um_pci_cmd_vq_cb, um_pci_irq_vq_cb };
        int err, i;
 
-       err = virtio_find_vqs(dev->vdev, 2, vqs, cbs, names, NULL);
+       err = virtio_find_vqs_info(dev->vdev, 2, vqs, vqs_info, NULL);
        if (err)
                return err;
 
index 40bd83825c29ad1ce787765b96f0096eb7930841..79574855ed54da746b7668900ff99001a77e4d71 100644 (file)
@@ -254,13 +254,9 @@ static void virtbt_rx_done(struct virtqueue *vq)
 
 static int virtbt_probe(struct virtio_device *vdev)
 {
-       vq_callback_t *callbacks[VIRTBT_NUM_VQS] = {
-               [VIRTBT_VQ_TX] = virtbt_tx_done,
-               [VIRTBT_VQ_RX] = virtbt_rx_done,
-       };
-       const char *names[VIRTBT_NUM_VQS] = {
-               [VIRTBT_VQ_TX] = "tx",
-               [VIRTBT_VQ_RX] = "rx",
+       struct virtqueue_info vqs_info[VIRTBT_NUM_VQS] = {
+               [VIRTBT_VQ_TX] = { "tx", virtbt_tx_done },
+               [VIRTBT_VQ_RX] = { "rx", virtbt_rx_done },
        };
        struct virtio_bluetooth *vbt;
        struct hci_dev *hdev;
@@ -288,8 +284,8 @@ static int virtbt_probe(struct virtio_device *vdev)
 
        INIT_WORK(&vbt->rx, virtbt_rx_work);
 
-       err = virtio_find_vqs(vdev, VIRTBT_NUM_VQS, vbt->vqs, callbacks,
-                             names, NULL);
+       err = virtio_find_vqs_info(vdev, VIRTBT_NUM_VQS, vbt->vqs,
+                                  vqs_info, NULL);
        if (err)
                return err;
 
index 4892058445cea5e4ef5af6eac2da8782a07215ca..d7cdefb6bd54ad1f12d2fdd33ac6a050a5ccaa70 100644 (file)
@@ -354,11 +354,9 @@ static void scmi_vio_deferred_tx_worker(struct work_struct *work)
        scmi_vio_channel_release(vioch);
 }
 
-static const char *const scmi_vio_vqueue_names[] = { "tx", "rx" };
-
-static vq_callback_t *scmi_vio_complete_callbacks[] = {
-       scmi_vio_complete_cb,
-       scmi_vio_complete_cb
+static struct virtqueue_info scmi_vio_vqs_info[] = {
+       { "tx", scmi_vio_complete_cb },
+       { "rx", scmi_vio_complete_cb },
 };
 
 static unsigned int virtio_get_max_msg(struct scmi_chan_info *base_cinfo)
@@ -831,8 +829,7 @@ static int scmi_vio_probe(struct virtio_device *vdev)
        if (have_vq_rx)
                channels[VIRTIO_SCMI_VQ_RX].is_rx = true;
 
-       ret = virtio_find_vqs(vdev, vq_cnt, vqs, scmi_vio_complete_callbacks,
-                             scmi_vio_vqueue_names, NULL);
+       ret = virtio_find_vqs_info(vdev, vq_cnt, vqs, scmi_vio_vqs_info, NULL);
        if (ret) {
                dev_err(dev, "Failed to get %d virtqueue(s)\n", vq_cnt);
                return ret;
index 9fae8e396c58f5a3a7d765e465f474ce717fb707..d114644207977efb3e3ea9b256ec972edda2e51b 100644 (file)
@@ -457,15 +457,15 @@ static void virtio_gpio_free_vqs(struct virtio_device *vdev)
 static int virtio_gpio_alloc_vqs(struct virtio_gpio *vgpio,
                                 struct virtio_device *vdev)
 {
-       const char * const names[] = { "requestq", "eventq" };
-       vq_callback_t *cbs[] = {
-               virtio_gpio_request_vq,
-               virtio_gpio_event_vq,
+       struct virtqueue_info vqs_info[] = {
+               { "requestq", virtio_gpio_request_vq },
+               { "eventq", virtio_gpio_event_vq },
        };
        struct virtqueue *vqs[2] = { NULL, NULL };
        int ret;
 
-       ret = virtio_find_vqs(vdev, vgpio->irq_lines ? 2 : 1, vqs, cbs, names, NULL);
+       ret = virtio_find_vqs_info(vdev, vgpio->irq_lines ? 2 : 1, vqs,
+                                  vqs_info, NULL);
        if (ret) {
                dev_err(&vdev->dev, "failed to find vqs: %d\n", ret);
                return ret;
index 5a3b5aaed1f36101f4d7c49c441f96539c0f7c8e..1590fc180c66b94fb0403c7c2239b63e9d855f7d 100644 (file)
@@ -116,11 +116,10 @@ static void virtio_gpu_get_capsets(struct virtio_gpu_device *vgdev,
 
 int virtio_gpu_init(struct virtio_device *vdev, struct drm_device *dev)
 {
-       static vq_callback_t *callbacks[] = {
-               virtio_gpu_ctrl_ack, virtio_gpu_cursor_ack
+       struct virtqueue_info vqs_info[] = {
+               { "control", virtio_gpu_ctrl_ack },
+               { "cursor", virtio_gpu_cursor_ack },
        };
-       static const char * const names[] = { "control", "cursor" };
-
        struct virtio_gpu_device *vgdev;
        /* this will expand later */
        struct virtqueue *vqs[2];
@@ -207,7 +206,7 @@ int virtio_gpu_init(struct virtio_device *vdev, struct drm_device *dev)
        DRM_INFO("features: %ccontext_init\n",
                 vgdev->has_context_init ? '+' : '-');
 
-       ret = virtio_find_vqs(vgdev->vdev, 2, vqs, callbacks, names, NULL);
+       ret = virtio_find_vqs_info(vgdev->vdev, 2, vqs, vqs_info, NULL);
        if (ret) {
                DRM_ERROR("failed to find virt queues\n");
                goto err_vqs;
index 36d680826b5733ad6c322e493562b951d2f81509..d3c7877a3806dfd65c5a47677287183a780c3692 100644 (file)
@@ -1084,14 +1084,13 @@ static struct iommu_ops viommu_ops = {
 static int viommu_init_vqs(struct viommu_dev *viommu)
 {
        struct virtio_device *vdev = dev_to_virtio(viommu->dev);
-       const char *names[] = { "request", "event" };
-       vq_callback_t *callbacks[] = {
-               NULL, /* No async requests */
-               viommu_event_handler,
+       struct virtqueue_info vqs_info[] = {
+               { "request" },
+               { "event", viommu_event_handler },
        };
 
-       return virtio_find_vqs(vdev, VIOMMU_NR_VQS, viommu->vqs, callbacks,
-                              names, NULL);
+       return virtio_find_vqs_info(vdev, VIOMMU_NR_VQS, viommu->vqs,
+                                   vqs_info, NULL);
 }
 
 static int viommu_fill_evtq(struct viommu_dev *viommu)
index c5d896994e709a0187065d48b435a2cb6de192b5..7bda786631ba4c8a2f0a815f00f3cba0d8baa826 100644 (file)
@@ -6574,17 +6574,13 @@ static void hwsim_virtio_rx_done(struct virtqueue *vq)
 
 static int init_vqs(struct virtio_device *vdev)
 {
-       vq_callback_t *callbacks[HWSIM_NUM_VQS] = {
-               [HWSIM_VQ_TX] = hwsim_virtio_tx_done,
-               [HWSIM_VQ_RX] = hwsim_virtio_rx_done,
-       };
-       const char *names[HWSIM_NUM_VQS] = {
-               [HWSIM_VQ_TX] = "tx",
-               [HWSIM_VQ_RX] = "rx",
+       struct virtqueue_info vqs_info[HWSIM_NUM_VQS] = {
+               [HWSIM_VQ_TX] = { "tx", hwsim_virtio_tx_done },
+               [HWSIM_VQ_RX] = { "rx", hwsim_virtio_rx_done },
        };
 
-       return virtio_find_vqs(vdev, HWSIM_NUM_VQS,
-                              hwsim_vqs, callbacks, names, NULL);
+       return virtio_find_vqs_info(vdev, HWSIM_NUM_VQS,
+                                   hwsim_vqs, vqs_info, NULL);
 }
 
 static int fill_vq(struct virtqueue *vq)
index e9e8c1f7829f11d87120c2754318b9492a9aed28..fb466ef20f07ec5cafeb9ae0c496a03096208239 100644 (file)
@@ -868,8 +868,10 @@ static void rpmsg_virtio_del_ctrl_dev(struct rpmsg_device *rpdev_ctrl)
 
 static int rpmsg_probe(struct virtio_device *vdev)
 {
-       vq_callback_t *vq_cbs[] = { rpmsg_recv_done, rpmsg_xmit_done };
-       static const char * const names[] = { "input", "output" };
+       struct virtqueue_info vqs_info[] = {
+               { "input", rpmsg_recv_done },
+               { "output", rpmsg_xmit_done },
+       };
        struct virtqueue *vqs[2];
        struct virtproc_info *vrp;
        struct virtio_rpmsg_channel *vch = NULL;
@@ -891,7 +893,7 @@ static int rpmsg_probe(struct virtio_device *vdev)
        init_waitqueue_head(&vrp->sendq);
 
        /* We expect two virtqueues, rx and tx (and in this order) */
-       err = virtio_find_vqs(vdev, 2, vqs, vq_cbs, names, NULL);
+       err = virtio_find_vqs_info(vdev, 2, vqs, vqs_info, NULL);
        if (err)
                goto free_vrp;
 
index 1a730d6c0b555ac7c32b8b493ad9011afc9168c7..6f803dc3d0f97b2efd00f9d55e2faeed3b14107f 100644 (file)
@@ -185,13 +185,14 @@ static void virtinput_cfg_abs(struct virtio_input *vi, int abs)
 
 static int virtinput_init_vqs(struct virtio_input *vi)
 {
+       struct virtqueue_info vqs_info[] = {
+               { "events", virtinput_recv_events },
+               { "status", virtinput_recv_status },
+       };
        struct virtqueue *vqs[2];
-       vq_callback_t *cbs[] = { virtinput_recv_events,
-                                virtinput_recv_status };
-       static const char * const names[] = { "events", "status" };
        int err;
 
-       err = virtio_find_vqs(vi->vdev, 2, vqs, cbs, names, NULL);
+       err = virtio_find_vqs_info(vi->vdev, 2, vqs, vqs_info, NULL);
        if (err)
                return err;
        vi->evt = vqs[0];
index 43d405298857a62d767fc9749efeb411b7c53973..3033680fcc98a0d4d76a04be7fc2fa2eba908b91 100644 (file)
@@ -617,20 +617,15 @@ out:
 static int virtio_vsock_vqs_init(struct virtio_vsock *vsock)
 {
        struct virtio_device *vdev = vsock->vdev;
-       static const char * const names[] = {
-               "rx",
-               "tx",
-               "event",
-       };
-       vq_callback_t *callbacks[] = {
-               virtio_vsock_rx_done,
-               virtio_vsock_tx_done,
-               virtio_vsock_event_done,
+       struct virtqueue_info vqs_info[] = {
+               { "rx", virtio_vsock_rx_done },
+               { "tx", virtio_vsock_tx_done },
+               { "event", virtio_vsock_event_done },
        };
        int ret;
 
-       ret = virtio_find_vqs(vdev, VSOCK_VQ_MAX, vsock->vqs, callbacks, names,
-                             NULL);
+       ret = virtio_find_vqs_info(vdev, VSOCK_VQ_MAX, vsock->vqs, vqs_info,
+                                  NULL);
        if (ret < 0)
                return ret;
 
index 7805daea0102a25c6b9d0fb19d3ca6d89e611321..109a0008b69e9ccdeb3db2d6a97fe36472563456 100644 (file)
@@ -110,25 +110,22 @@ static void virtsnd_event_notify_cb(struct virtqueue *vqueue)
 static int virtsnd_find_vqs(struct virtio_snd *snd)
 {
        struct virtio_device *vdev = snd->vdev;
-       static vq_callback_t *callbacks[VIRTIO_SND_VQ_MAX] = {
-               [VIRTIO_SND_VQ_CONTROL] = virtsnd_ctl_notify_cb,
-               [VIRTIO_SND_VQ_EVENT] = virtsnd_event_notify_cb,
-               [VIRTIO_SND_VQ_TX] = virtsnd_pcm_tx_notify_cb,
-               [VIRTIO_SND_VQ_RX] = virtsnd_pcm_rx_notify_cb
-       };
-       static const char *names[VIRTIO_SND_VQ_MAX] = {
-               [VIRTIO_SND_VQ_CONTROL] = "virtsnd-ctl",
-               [VIRTIO_SND_VQ_EVENT] = "virtsnd-event",
-               [VIRTIO_SND_VQ_TX] = "virtsnd-tx",
-               [VIRTIO_SND_VQ_RX] = "virtsnd-rx"
+       struct virtqueue_info vqs_info[VIRTIO_SND_VQ_MAX] = {
+               [VIRTIO_SND_VQ_CONTROL] = { "virtsnd-ctl",
+                                           virtsnd_ctl_notify_cb },
+               [VIRTIO_SND_VQ_EVENT] = { "virtsnd-event",
+                                         virtsnd_event_notify_cb },
+               [VIRTIO_SND_VQ_TX] = { "virtsnd-tx",
+                                      virtsnd_pcm_tx_notify_cb },
+               [VIRTIO_SND_VQ_RX] = { "virtsnd-rx",
+                                      virtsnd_pcm_rx_notify_cb },
        };
        struct virtqueue *vqs[VIRTIO_SND_VQ_MAX] = { 0 };
        unsigned int i;
        unsigned int n;
        int rc;
 
-       rc = virtio_find_vqs(vdev, VIRTIO_SND_VQ_MAX, vqs, callbacks, names,
-                            NULL);
+       rc = virtio_find_vqs_info(vdev, VIRTIO_SND_VQ_MAX, vqs, vqs_info, NULL);
        if (rc) {
                dev_err(&vdev->dev, "failed to initialize virtqueues\n");
                return rc;
This page took 0.09552 seconds and 4 git commands to generate.