Commit c7f63c5d authored by Daniel Wagner's avatar Daniel Wagner Committed by Jens Axboe
Browse files

virtio: hookup irq_get_affinity callback



struct bus_type has a new callback for retrieving the IRQ affinity for a
device. Hook this callback up for virtio based devices.

Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Reviewed-by: default avatarMing Lei <ming.lei@redhat.com>
Reviewed-by: default avatarJohn Garry <john.g.garry@oracle.com>
Signed-off-by: default avatarDaniel Wagner <wagi@kernel.org>
Link: https://lore.kernel.org/r/20241202-refactor-blk-affinity-helpers-v6-3-27211e9c2cd5@kernel.org


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 22d813bf
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -377,6 +377,24 @@ static void virtio_dev_remove(struct device *_d)
	of_node_put(dev->dev.of_node);
}

/*
 * virtio_irq_get_affinity - get IRQ affinity mask for device
 * @_d: ptr to dev structure
 * @irq_vec: interrupt vector number
 *
 * Return the CPU affinity mask for @_d and @irq_vec.
 */
static const struct cpumask *virtio_irq_get_affinity(struct device *_d,
						     unsigned int irq_vec)
{
	struct virtio_device *dev = dev_to_virtio(_d);

	if (!dev->config->get_vq_affinity)
		return NULL;

	return dev->config->get_vq_affinity(dev, irq_vec);
}

static const struct bus_type virtio_bus = {
	.name  = "virtio",
	.match = virtio_dev_match,
@@ -384,6 +402,7 @@ static const struct bus_type virtio_bus = {
	.uevent = virtio_uevent,
	.probe = virtio_dev_probe,
	.remove = virtio_dev_remove,
	.irq_get_affinity = virtio_irq_get_affinity,
};

int __register_virtio_driver(struct virtio_driver *driver, struct module *owner)