Commit c95e67ba authored by Jiri Pirko's avatar Jiri Pirko Committed by Michael S. Tsirkin
Browse files

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: default avatarXuan Zhuo <xuanzhuo@linux.alibaba.com>
Signed-off-by: default avatarJiri Pirko <jiri@nvidia.com>
Message-Id: <20240708074814.1739223-18-jiri@resnulli.us>
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent 7221922d
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -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;

+5 −9
Original line number Diff line number Diff line
@@ -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;

+4 −7
Original line number Diff line number Diff line
@@ -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;
+5 −5
Original line number Diff line number Diff line
@@ -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;
+4 −5
Original line number Diff line number Diff line
@@ -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;
Loading