Re: [PATCH] drm/vbox: Convert to Linux IRQ interfaces

2021-08-03 Thread Thomas Zimmermann

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 = _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(>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 = >ddev;
+   struct pci_dev *pdev = to_pci_dev(dev->dev);
  
  	INIT_WORK(>hotplug_work, vbox_hotplug_worker);

vbox_update_mode_hints(vbox);
  
-	return drm_irq_install(>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(>ddev);
+   struct drm_device *dev = >ddev;
+   struct pci_dev *pdev = to_pci_dev(dev->dev);
+
+   free_irq(pdev->irq, dev);
flush_work(>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

2021-08-02 Thread 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).

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 = _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(>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 = >ddev;
> + struct pci_dev *pdev = to_pci_dev(dev->dev);
>  
>   INIT_WORK(>hotplug_work, vbox_hotplug_worker);
>   vbox_update_mode_hints(vbox);
>  
> - return drm_irq_install(>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(>ddev);
> + struct drm_device *dev = >ddev;
> + struct pci_dev *pdev = to_pci_dev(dev->dev);
> +
> + free_irq(pdev->irq, dev);
>   flush_work(>hotplug_work);
>  }
> 



Re: [PATCH] drm/vbox: Convert to Linux IRQ interfaces

2021-07-10 Thread Sam Ravnborg
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