[PATCH] drm/vbox: Convert to Linux IRQ interfaces
Hans de Goede
hdegoede at redhat.com
Mon Aug 2 11:52:57 UTC 2021
Hi,
On 7/6/21 9:50 AM, Thomas Zimmermann wrote:
> Drop the DRM IRQ midlayer in favor of Linux IRQ interfaces. DRM's
> IRQ helpers are mostly useful for UMS drivers. Modern KMS drivers
> don't benefit from using it.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
Thanks, patch looks good to me:
Reviewed-by: Hans de Goede <hdegoede at redhat.com>
And to make sure things don't regress I've also given this a test spin:
Tested-by: Hans de Goede <hdegoede at redhat.com>
Note I assume that you will push this out do drmi-misc yourself
(if you've not done so already given that this patch is somewhat old).
Regards,
Hans
> ---
> drivers/gpu/drm/vboxvideo/vbox_drv.c | 1 -
> drivers/gpu/drm/vboxvideo/vbox_drv.h | 1 -
> drivers/gpu/drm/vboxvideo/vbox_irq.c | 16 +++++++++++-----
> 3 files changed, 11 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> index 879a2445cc44..2b81cb259d23 100644
> --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
> +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> @@ -184,7 +184,6 @@ static const struct drm_driver driver = {
> .lastclose = drm_fb_helper_lastclose,
>
> .fops = &vbox_fops,
> - .irq_handler = vbox_irq_handler,
> .name = DRIVER_NAME,
> .desc = DRIVER_DESC,
> .date = DRIVER_DATE,
> diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.h b/drivers/gpu/drm/vboxvideo/vbox_drv.h
> index ac7c2effc46f..4903b91d7fe4 100644
> --- a/drivers/gpu/drm/vboxvideo/vbox_drv.h
> +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.h
> @@ -145,7 +145,6 @@ void vbox_mm_fini(struct vbox_private *vbox);
> int vbox_irq_init(struct vbox_private *vbox);
> void vbox_irq_fini(struct vbox_private *vbox);
> void vbox_report_hotplug(struct vbox_private *vbox);
> -irqreturn_t vbox_irq_handler(int irq, void *arg);
>
> /* vbox_hgsmi.c */
> void *hgsmi_buffer_alloc(struct gen_pool *guest_pool, size_t size,
> diff --git a/drivers/gpu/drm/vboxvideo/vbox_irq.c b/drivers/gpu/drm/vboxvideo/vbox_irq.c
> index b3ded68603ba..903a6c48ee8b 100644
> --- a/drivers/gpu/drm/vboxvideo/vbox_irq.c
> +++ b/drivers/gpu/drm/vboxvideo/vbox_irq.c
> @@ -10,7 +10,8 @@
> */
>
> #include <linux/pci.h>
> -#include <drm/drm_irq.h>
> +
> +#include <drm/drm_drv.h>
> #include <drm/drm_probe_helper.h>
>
> #include "vbox_drv.h"
> @@ -31,7 +32,7 @@ void vbox_report_hotplug(struct vbox_private *vbox)
> schedule_work(&vbox->hotplug_work);
> }
>
> -irqreturn_t vbox_irq_handler(int irq, void *arg)
> +static irqreturn_t vbox_irq_handler(int irq, void *arg)
> {
> struct drm_device *dev = (struct drm_device *)arg;
> struct vbox_private *vbox = to_vbox_dev(dev);
> @@ -170,16 +171,21 @@ static void vbox_hotplug_worker(struct work_struct *work)
>
> int vbox_irq_init(struct vbox_private *vbox)
> {
> - struct pci_dev *pdev = to_pci_dev(vbox->ddev.dev);
> + struct drm_device *dev = &vbox->ddev;
> + struct pci_dev *pdev = to_pci_dev(dev->dev);
>
> INIT_WORK(&vbox->hotplug_work, vbox_hotplug_worker);
> vbox_update_mode_hints(vbox);
>
> - return drm_irq_install(&vbox->ddev, pdev->irq);
> + /* PCI devices require shared interrupts. */
> + return request_irq(pdev->irq, vbox_irq_handler, IRQF_SHARED, dev->driver->name, dev);
> }
>
> void vbox_irq_fini(struct vbox_private *vbox)
> {
> - drm_irq_uninstall(&vbox->ddev);
> + struct drm_device *dev = &vbox->ddev;
> + struct pci_dev *pdev = to_pci_dev(dev->dev);
> +
> + free_irq(pdev->irq, dev);
> flush_work(&vbox->hotplug_work);
> }
>
More information about the dri-devel
mailing list