* [PATCH] drm/hisilicon/hibmc: Convert to Linux IRQ interfaces
@ 2021-07-06 7:54 Thomas Zimmermann
2021-07-06 8:09 ` Maxime Ripard
2021-07-06 10:46 ` tiantao (H)
0 siblings, 2 replies; 3+ messages in thread
From: Thomas Zimmermann @ 2021-07-06 7:54 UTC (permalink / raw
To: xinliang.liu, tiantao6, john.stultz, kong.kongxinwei, puck.chen,
airlied, daniel, sam, maxime
Cc: Thomas Zimmermann, dri-devel
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@suse.de>
---
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
index d2628956dca3..f73a8e0ea12e 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
@@ -19,7 +19,6 @@
#include <drm/drm_drv.h>
#include <drm/drm_gem_framebuffer_helper.h>
#include <drm/drm_gem_vram_helper.h>
-#include <drm/drm_irq.h>
#include <drm/drm_managed.h>
#include <drm/drm_vblank.h>
@@ -28,7 +27,7 @@
DEFINE_DRM_GEM_FOPS(hibmc_fops);
-static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
+static irqreturn_t hibmc_interrupt(int irq, void *arg)
{
struct drm_device *dev = (struct drm_device *)arg;
struct hibmc_drm_private *priv = to_hibmc_drm_private(dev);
@@ -63,7 +62,6 @@ static const struct drm_driver hibmc_driver = {
.dumb_create = hibmc_dumb_create,
.dumb_map_offset = drm_gem_ttm_dumb_map_offset,
.gem_prime_mmap = drm_gem_prime_mmap,
- .irq_handler = hibmc_drm_interrupt,
};
static int __maybe_unused hibmc_pm_suspend(struct device *dev)
@@ -251,9 +249,12 @@ static int hibmc_hw_init(struct hibmc_drm_private *priv)
static int hibmc_unload(struct drm_device *dev)
{
+ struct hibmc_drm_private *priv = to_hibmc_drm_private(dev);
+ struct pci_dev *pdev = to_pci_dev(dev->dev);
+
drm_atomic_helper_shutdown(dev);
- drm_irq_uninstall(dev);
+ free_irq(pdev->irq, dev);
pci_disable_msi(to_pci_dev(dev->dev));
@@ -290,7 +291,9 @@ static int hibmc_load(struct drm_device *dev)
if (ret) {
drm_warn(dev, "enabling MSI failed: %d\n", ret);
} else {
- ret = drm_irq_install(dev, pdev->irq);
+ /* PCI devices require shared interrupts. */
+ ret = request_irq(pdev->irq, hibmc_interrupt, IRQF_SHARED,
+ dev->driver->name, dev);
if (ret)
drm_warn(dev, "install irq failed: %d\n", ret);
}
--
2.32.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] drm/hisilicon/hibmc: Convert to Linux IRQ interfaces
2021-07-06 7:54 [PATCH] drm/hisilicon/hibmc: Convert to Linux IRQ interfaces Thomas Zimmermann
@ 2021-07-06 8:09 ` Maxime Ripard
2021-07-06 10:46 ` tiantao (H)
1 sibling, 0 replies; 3+ messages in thread
From: Maxime Ripard @ 2021-07-06 8:09 UTC (permalink / raw
To: Thomas Zimmermann
Cc: xinliang.liu, puck.chen, dri-devel, airlied, kong.kongxinwei,
tiantao6, sam
[-- Attachment #1: Type: text/plain, Size: 360 bytes --]
On Tue, Jul 06, 2021 at 09:54:25AM +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 <tzimmermann@suse.de>
Reviewed-by: Maxime Ripard <maxime@cerno.tech>
Maxime
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] drm/hisilicon/hibmc: Convert to Linux IRQ interfaces
2021-07-06 7:54 [PATCH] drm/hisilicon/hibmc: Convert to Linux IRQ interfaces Thomas Zimmermann
2021-07-06 8:09 ` Maxime Ripard
@ 2021-07-06 10:46 ` tiantao (H)
1 sibling, 0 replies; 3+ messages in thread
From: tiantao (H) @ 2021-07-06 10:46 UTC (permalink / raw
To: Thomas Zimmermann, xinliang.liu, tiantao6, john.stultz,
kong.kongxinwei, puck.chen, airlied, daniel, sam, maxime
Cc: dri-devel
[-- Attachment #1: Type: text/plain, Size: 2445 bytes --]
在 2021/7/6 15:54, Thomas Zimmermann 写道:
> 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.
Reviewed-by:Tian Tao <tiantao6@hisilicon.com>
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
> drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 13 ++++++++-----
> 1 file changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> index d2628956dca3..f73a8e0ea12e 100644
> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> @@ -19,7 +19,6 @@
> #include <drm/drm_drv.h>
> #include <drm/drm_gem_framebuffer_helper.h>
> #include <drm/drm_gem_vram_helper.h>
> -#include <drm/drm_irq.h>
> #include <drm/drm_managed.h>
> #include <drm/drm_vblank.h>
>
> @@ -28,7 +27,7 @@
>
> DEFINE_DRM_GEM_FOPS(hibmc_fops);
>
> -static irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
> +static irqreturn_t hibmc_interrupt(int irq, void *arg)
> {
> struct drm_device *dev = (struct drm_device *)arg;
> struct hibmc_drm_private *priv = to_hibmc_drm_private(dev);
> @@ -63,7 +62,6 @@ static const struct drm_driver hibmc_driver = {
> .dumb_create = hibmc_dumb_create,
> .dumb_map_offset = drm_gem_ttm_dumb_map_offset,
> .gem_prime_mmap = drm_gem_prime_mmap,
> - .irq_handler = hibmc_drm_interrupt,
> };
>
> static int __maybe_unused hibmc_pm_suspend(struct device *dev)
> @@ -251,9 +249,12 @@ static int hibmc_hw_init(struct hibmc_drm_private *priv)
>
> static int hibmc_unload(struct drm_device *dev)
> {
> + struct hibmc_drm_private *priv = to_hibmc_drm_private(dev);
> + struct pci_dev *pdev = to_pci_dev(dev->dev);
> +
> drm_atomic_helper_shutdown(dev);
>
> - drm_irq_uninstall(dev);
> + free_irq(pdev->irq, dev);
>
> pci_disable_msi(to_pci_dev(dev->dev));
>
> @@ -290,7 +291,9 @@ static int hibmc_load(struct drm_device *dev)
> if (ret) {
> drm_warn(dev, "enabling MSI failed: %d\n", ret);
> } else {
> - ret = drm_irq_install(dev, pdev->irq);
> + /* PCI devices require shared interrupts. */
> + ret = request_irq(pdev->irq, hibmc_interrupt, IRQF_SHARED,
> + dev->driver->name, dev);
> if (ret)
> drm_warn(dev, "install irq failed: %d\n", ret);
> }
[-- Attachment #2: Type: text/html, Size: 38539 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-07-06 10:46 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-07-06 7:54 [PATCH] drm/hisilicon/hibmc: Convert to Linux IRQ interfaces Thomas Zimmermann
2021-07-06 8:09 ` Maxime Ripard
2021-07-06 10:46 ` tiantao (H)
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.