Re: [PATCH] drm/vbox: Convert to Linux IRQ interfaces
Hi Am 02.08.21 um 13:52 schrieb Hans de Goede: 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 Thanks, patch looks good to me: Reviewed-by: Hans de Goede And to make sure things don't regress I've also given this a test spin: Tested-by: Hans de Goede 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). Although it's been merged already, thanks for testing the patch. Best regards Thomas 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 -#include + +#include #include #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); } -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Felix Imendörffer OpenPGP_signature Description: OpenPGP digital signature
Re: [PATCH] drm/vbox: Convert to Linux IRQ interfaces
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 Thanks, patch looks good to me: Reviewed-by: Hans de Goede And to make sure things don't regress I've also given this a test spin: Tested-by: Hans de Goede 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 > -#include > + > +#include > #include > > #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); > } >
Re: [PATCH] drm/vbox: Convert to Linux IRQ interfaces
Hi Thomas, On Tue, Jul 06, 2021 at 09:50:11AM +0200, 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 Looks good, Acked-by: Sam Ravnborg Sam