]> www.infradead.org Git - nvme.git/commitdiff
virtio: hookup irq_get_affinity callback
authorDaniel Wagner <wagi@kernel.org>
Mon, 2 Dec 2024 14:00:11 +0000 (15:00 +0100)
committerJens Axboe <axboe@kernel.dk>
Mon, 23 Dec 2024 15:17:23 +0000 (08:17 -0700)
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: Christoph Hellwig <hch@lst.de>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Signed-off-by: Daniel Wagner <wagi@kernel.org>
Link: https://lore.kernel.org/r/20241202-refactor-blk-affinity-helpers-v6-3-27211e9c2cd5@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/virtio/virtio.c

index b9095751e43bb7db5fc991b0cc0979d2e86f7b9b..b10ed9f5b5435ae0bf7ab52a6519a7fdc4d5920d 100644 (file)
@@ -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)