[PATCH v5 3/8] virtio: hookup irq_get_affinity callback

Daniel Wagner posted 8 patches 1 week ago
[PATCH v5 3/8] virtio: hookup irq_get_affinity callback
Posted by Daniel Wagner 1 week ago
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>
Signed-off-by: Daniel Wagner <wagi@kernel.org>
---
 drivers/virtio/virtio.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c
index b9095751e43bb7db5fc991b0cc0979d2e86f7b9b..4ca6ec84cb092eac7ddf4b86b4eacac099b480cf 100644
--- a/drivers/virtio/virtio.c
+++ b/drivers/virtio/virtio.c
@@ -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)

-- 
2.47.0
Re: [PATCH v5 3/8] virtio: hookup irq_get_affinity callback
Posted by John Garry 1 day, 8 hours ago
On 15/11/2024 16:37, Daniel Wagner wrote:
> Reviewed-by: Christoph Hellwig<hch@lst.de>
> Reviewed-by: Hannes Reinecke<hare@suse.de>
> Reviewed-by: Ming Lei<ming.lei@redhat.com>
> Signed-off-by: Daniel Wagner<wagi@kernel.org>

Reviewed-by: John Garry <john.g.garry@oracle.com>

> ---
>   drivers/virtio/virtio.c | 19 +++++++++++++++++++
>   1 file changed, 19 insertions(+)
> 
> diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c
> index b9095751e43bb7db5fc991b0cc0979d2e86f7b9b..4ca6ec84cb092eac7ddf4b86b4eacac099b480cf 100644
> --- a/drivers/virtio/virtio.c
> +++ b/drivers/virtio/virtio.c
> @@ -377,6 +377,24 @@ static void virtio_dev_remove(struct device *_d)
>   	of_node_put(dev->dev.of_node);
>   }
>   
> +/**

nit: does this really need to be kerneldoc, as it is static?

> + * 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 = {
Re: [PATCH v5 3/8] virtio: hookup irq_get_affinity callback
Posted by Daniel Wagner 1 day, 7 hours ago
On Thu, Nov 21, 2024 at 09:01:49AM +0000, John Garry wrote:
> > --- a/drivers/virtio/virtio.c
> > +++ b/drivers/virtio/virtio.c
> > @@ -377,6 +377,24 @@ static void virtio_dev_remove(struct device *_d)
> >   	of_node_put(dev->dev.of_node);
> >   }
> > +/**
> 
> nit: does this really need to be kerneldoc, as it is static?

No, it's not necessary, I didn't know what the rules for static
functions are. I'll update it accordingly.