Skip to content

Commit c95e67b

Browse files
Jiri Pirkomstsirkin
authored andcommitted
virtio: convert the rest virtio_find_vqs() users to virtio_find_vqs_info()
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: <[email protected]> Signed-off-by: Michael S. Tsirkin <[email protected]>
1 parent 7221922 commit c95e67b

File tree

11 files changed

+59
-75
lines changed

11 files changed

+59
-75
lines changed

arch/um/drivers/virt-pci.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -567,12 +567,14 @@ struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus)
567567

568568
static int um_pci_init_vqs(struct um_pci_device *dev)
569569
{
570+
struct virtqueue_info vqs_info[] = {
571+
{ "cmd", um_pci_cmd_vq_cb },
572+
{ "irq", um_pci_irq_vq_cb },
573+
};
570574
struct virtqueue *vqs[2];
571-
static const char *const names[2] = { "cmd", "irq" };
572-
vq_callback_t *cbs[2] = { um_pci_cmd_vq_cb, um_pci_irq_vq_cb };
573575
int err, i;
574576

575-
err = virtio_find_vqs(dev->vdev, 2, vqs, cbs, names, NULL);
577+
err = virtio_find_vqs_info(dev->vdev, 2, vqs, vqs_info, NULL);
576578
if (err)
577579
return err;
578580

drivers/bluetooth/virtio_bt.c

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -254,13 +254,9 @@ static void virtbt_rx_done(struct virtqueue *vq)
254254

255255
static int virtbt_probe(struct virtio_device *vdev)
256256
{
257-
vq_callback_t *callbacks[VIRTBT_NUM_VQS] = {
258-
[VIRTBT_VQ_TX] = virtbt_tx_done,
259-
[VIRTBT_VQ_RX] = virtbt_rx_done,
260-
};
261-
const char *names[VIRTBT_NUM_VQS] = {
262-
[VIRTBT_VQ_TX] = "tx",
263-
[VIRTBT_VQ_RX] = "rx",
257+
struct virtqueue_info vqs_info[VIRTBT_NUM_VQS] = {
258+
[VIRTBT_VQ_TX] = { "tx", virtbt_tx_done },
259+
[VIRTBT_VQ_RX] = { "rx", virtbt_rx_done },
264260
};
265261
struct virtio_bluetooth *vbt;
266262
struct hci_dev *hdev;
@@ -288,8 +284,8 @@ static int virtbt_probe(struct virtio_device *vdev)
288284

289285
INIT_WORK(&vbt->rx, virtbt_rx_work);
290286

291-
err = virtio_find_vqs(vdev, VIRTBT_NUM_VQS, vbt->vqs, callbacks,
292-
names, NULL);
287+
err = virtio_find_vqs_info(vdev, VIRTBT_NUM_VQS, vbt->vqs,
288+
vqs_info, NULL);
293289
if (err)
294290
return err;
295291

drivers/firmware/arm_scmi/virtio.c

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -354,11 +354,9 @@ static void scmi_vio_deferred_tx_worker(struct work_struct *work)
354354
scmi_vio_channel_release(vioch);
355355
}
356356

357-
static const char *const scmi_vio_vqueue_names[] = { "tx", "rx" };
358-
359-
static vq_callback_t *scmi_vio_complete_callbacks[] = {
360-
scmi_vio_complete_cb,
361-
scmi_vio_complete_cb
357+
static struct virtqueue_info scmi_vio_vqs_info[] = {
358+
{ "tx", scmi_vio_complete_cb },
359+
{ "rx", scmi_vio_complete_cb },
362360
};
363361

364362
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)
831829
if (have_vq_rx)
832830
channels[VIRTIO_SCMI_VQ_RX].is_rx = true;
833831

834-
ret = virtio_find_vqs(vdev, vq_cnt, vqs, scmi_vio_complete_callbacks,
835-
scmi_vio_vqueue_names, NULL);
832+
ret = virtio_find_vqs_info(vdev, vq_cnt, vqs, scmi_vio_vqs_info, NULL);
836833
if (ret) {
837834
dev_err(dev, "Failed to get %d virtqueue(s)\n", vq_cnt);
838835
return ret;

drivers/gpio/gpio-virtio.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -457,15 +457,15 @@ static void virtio_gpio_free_vqs(struct virtio_device *vdev)
457457
static int virtio_gpio_alloc_vqs(struct virtio_gpio *vgpio,
458458
struct virtio_device *vdev)
459459
{
460-
const char * const names[] = { "requestq", "eventq" };
461-
vq_callback_t *cbs[] = {
462-
virtio_gpio_request_vq,
463-
virtio_gpio_event_vq,
460+
struct virtqueue_info vqs_info[] = {
461+
{ "requestq", virtio_gpio_request_vq },
462+
{ "eventq", virtio_gpio_event_vq },
464463
};
465464
struct virtqueue *vqs[2] = { NULL, NULL };
466465
int ret;
467466

468-
ret = virtio_find_vqs(vdev, vgpio->irq_lines ? 2 : 1, vqs, cbs, names, NULL);
467+
ret = virtio_find_vqs_info(vdev, vgpio->irq_lines ? 2 : 1, vqs,
468+
vqs_info, NULL);
469469
if (ret) {
470470
dev_err(&vdev->dev, "failed to find vqs: %d\n", ret);
471471
return ret;

drivers/gpu/drm/virtio/virtgpu_kms.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,11 +116,10 @@ static void virtio_gpu_get_capsets(struct virtio_gpu_device *vgdev,
116116

117117
int virtio_gpu_init(struct virtio_device *vdev, struct drm_device *dev)
118118
{
119-
static vq_callback_t *callbacks[] = {
120-
virtio_gpu_ctrl_ack, virtio_gpu_cursor_ack
119+
struct virtqueue_info vqs_info[] = {
120+
{ "control", virtio_gpu_ctrl_ack },
121+
{ "cursor", virtio_gpu_cursor_ack },
121122
};
122-
static const char * const names[] = { "control", "cursor" };
123-
124123
struct virtio_gpu_device *vgdev;
125124
/* this will expand later */
126125
struct virtqueue *vqs[2];
@@ -207,7 +206,7 @@ int virtio_gpu_init(struct virtio_device *vdev, struct drm_device *dev)
207206
DRM_INFO("features: %ccontext_init\n",
208207
vgdev->has_context_init ? '+' : '-');
209208

210-
ret = virtio_find_vqs(vgdev->vdev, 2, vqs, callbacks, names, NULL);
209+
ret = virtio_find_vqs_info(vgdev->vdev, 2, vqs, vqs_info, NULL);
211210
if (ret) {
212211
DRM_ERROR("failed to find virt queues\n");
213212
goto err_vqs;

drivers/iommu/virtio-iommu.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,14 +1084,13 @@ static struct iommu_ops viommu_ops = {
10841084
static int viommu_init_vqs(struct viommu_dev *viommu)
10851085
{
10861086
struct virtio_device *vdev = dev_to_virtio(viommu->dev);
1087-
const char *names[] = { "request", "event" };
1088-
vq_callback_t *callbacks[] = {
1089-
NULL, /* No async requests */
1090-
viommu_event_handler,
1087+
struct virtqueue_info vqs_info[] = {
1088+
{ "request" },
1089+
{ "event", viommu_event_handler },
10911090
};
10921091

1093-
return virtio_find_vqs(vdev, VIOMMU_NR_VQS, viommu->vqs, callbacks,
1094-
names, NULL);
1092+
return virtio_find_vqs_info(vdev, VIOMMU_NR_VQS, viommu->vqs,
1093+
vqs_info, NULL);
10951094
}
10961095

10971096
static int viommu_fill_evtq(struct viommu_dev *viommu)

drivers/net/wireless/virtual/mac80211_hwsim.c

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6574,17 +6574,13 @@ static void hwsim_virtio_rx_done(struct virtqueue *vq)
65746574

65756575
static int init_vqs(struct virtio_device *vdev)
65766576
{
6577-
vq_callback_t *callbacks[HWSIM_NUM_VQS] = {
6578-
[HWSIM_VQ_TX] = hwsim_virtio_tx_done,
6579-
[HWSIM_VQ_RX] = hwsim_virtio_rx_done,
6580-
};
6581-
const char *names[HWSIM_NUM_VQS] = {
6582-
[HWSIM_VQ_TX] = "tx",
6583-
[HWSIM_VQ_RX] = "rx",
6577+
struct virtqueue_info vqs_info[HWSIM_NUM_VQS] = {
6578+
[HWSIM_VQ_TX] = { "tx", hwsim_virtio_tx_done },
6579+
[HWSIM_VQ_RX] = { "rx", hwsim_virtio_rx_done },
65846580
};
65856581

6586-
return virtio_find_vqs(vdev, HWSIM_NUM_VQS,
6587-
hwsim_vqs, callbacks, names, NULL);
6582+
return virtio_find_vqs_info(vdev, HWSIM_NUM_VQS,
6583+
hwsim_vqs, vqs_info, NULL);
65886584
}
65896585

65906586
static int fill_vq(struct virtqueue *vq)

drivers/rpmsg/virtio_rpmsg_bus.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -868,8 +868,10 @@ static void rpmsg_virtio_del_ctrl_dev(struct rpmsg_device *rpdev_ctrl)
868868

869869
static int rpmsg_probe(struct virtio_device *vdev)
870870
{
871-
vq_callback_t *vq_cbs[] = { rpmsg_recv_done, rpmsg_xmit_done };
872-
static const char * const names[] = { "input", "output" };
871+
struct virtqueue_info vqs_info[] = {
872+
{ "input", rpmsg_recv_done },
873+
{ "output", rpmsg_xmit_done },
874+
};
873875
struct virtqueue *vqs[2];
874876
struct virtproc_info *vrp;
875877
struct virtio_rpmsg_channel *vch = NULL;
@@ -891,7 +893,7 @@ static int rpmsg_probe(struct virtio_device *vdev)
891893
init_waitqueue_head(&vrp->sendq);
892894

893895
/* We expect two virtqueues, rx and tx (and in this order) */
894-
err = virtio_find_vqs(vdev, 2, vqs, vq_cbs, names, NULL);
896+
err = virtio_find_vqs_info(vdev, 2, vqs, vqs_info, NULL);
895897
if (err)
896898
goto free_vrp;
897899

drivers/virtio/virtio_input.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -185,13 +185,14 @@ static void virtinput_cfg_abs(struct virtio_input *vi, int abs)
185185

186186
static int virtinput_init_vqs(struct virtio_input *vi)
187187
{
188+
struct virtqueue_info vqs_info[] = {
189+
{ "events", virtinput_recv_events },
190+
{ "status", virtinput_recv_status },
191+
};
188192
struct virtqueue *vqs[2];
189-
vq_callback_t *cbs[] = { virtinput_recv_events,
190-
virtinput_recv_status };
191-
static const char * const names[] = { "events", "status" };
192193
int err;
193194

194-
err = virtio_find_vqs(vi->vdev, 2, vqs, cbs, names, NULL);
195+
err = virtio_find_vqs_info(vi->vdev, 2, vqs, vqs_info, NULL);
195196
if (err)
196197
return err;
197198
vi->evt = vqs[0];

net/vmw_vsock/virtio_transport.c

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -617,20 +617,15 @@ static void virtio_transport_rx_work(struct work_struct *work)
617617
static int virtio_vsock_vqs_init(struct virtio_vsock *vsock)
618618
{
619619
struct virtio_device *vdev = vsock->vdev;
620-
static const char * const names[] = {
621-
"rx",
622-
"tx",
623-
"event",
624-
};
625-
vq_callback_t *callbacks[] = {
626-
virtio_vsock_rx_done,
627-
virtio_vsock_tx_done,
628-
virtio_vsock_event_done,
620+
struct virtqueue_info vqs_info[] = {
621+
{ "rx", virtio_vsock_rx_done },
622+
{ "tx", virtio_vsock_tx_done },
623+
{ "event", virtio_vsock_event_done },
629624
};
630625
int ret;
631626

632-
ret = virtio_find_vqs(vdev, VSOCK_VQ_MAX, vsock->vqs, callbacks, names,
633-
NULL);
627+
ret = virtio_find_vqs_info(vdev, VSOCK_VQ_MAX, vsock->vqs, vqs_info,
628+
NULL);
634629
if (ret < 0)
635630
return ret;
636631

0 commit comments

Comments
 (0)