diff --git a/bsd-core/drm_irq.c b/bsd-core/drm_irq.c index 6e21d41..6df8b74 100644 --- a/bsd-core/drm_irq.c +++ b/bsd-core/drm_irq.c @@ -295,8 +295,6 @@ int drm_irq_uninstall(struct drm_device *dev) #elif defined(__NetBSD__) || defined(__OpenBSD__) pci_intr_disestablish(&dev->pa.pa_pc, dev->irqh); #endif - drm_vblank_cleanup(dev); - return 0; } diff --git a/linux-core/drm_irq.c b/linux-core/drm_irq.c index d0d6f98..aaefee1 100644 --- a/linux-core/drm_irq.c +++ b/linux-core/drm_irq.c @@ -277,8 +277,6 @@ int drm_irq_uninstall(struct drm_device * dev) free_irq(dev->irq, dev); - drm_vblank_cleanup(dev); - dev->locked_tasklet_func = NULL; return 0; diff --git a/shared-core/i915_dma.c b/shared-core/i915_dma.c index 47f1f46..b2e0307 100644 --- a/shared-core/i915_dma.c +++ b/shared-core/i915_dma.c @@ -1104,6 +1104,8 @@ int i915_driver_unload(struct drm_device *dev) #endif #endif + drm_vblank_cleanup(dev); + drm_free(dev->dev_private, sizeof(drm_i915_private_t), DRM_MEM_DRIVER); #ifdef __linux__ diff --git a/shared-core/mach64_irq.c b/shared-core/mach64_irq.c index 57879e8..1befa06 100644 --- a/shared-core/mach64_irq.c +++ b/shared-core/mach64_irq.c @@ -153,7 +153,7 @@ void mach64_driver_irq_uninstall(struct drm_device * dev) return; mach64_disable_vblank_local(dev, 0); - + drm_vblank_cleanup(dev); DRM_DEBUG("after uninstall CRTC_INT_CTNL: 0x%08x\n", MACH64_READ(MACH64_CRTC_INT_CNTL)); } diff --git a/shared-core/mga_irq.c b/shared-core/mga_irq.c index 4fe8632..26e74b5 100644 --- a/shared-core/mga_irq.c +++ b/shared-core/mga_irq.c @@ -177,6 +177,6 @@ void mga_driver_irq_uninstall(struct drm_device * dev) /* Disable *all* interrupts */ MGA_WRITE(MGA_IEN, 0); - dev->irq_enabled = 0; + drm_vblank_cleanup(dev); } diff --git a/shared-core/r128_irq.c b/shared-core/r128_irq.c index 5b95bd8..75580cc 100644 --- a/shared-core/r128_irq.c +++ b/shared-core/r128_irq.c @@ -111,6 +111,7 @@ void r128_driver_irq_uninstall(struct drm_device * dev) if (!dev_priv) return; + drm_vblank_cleanup(dev); /* Disable *all* interrupts */ R128_WRITE(R128_GEN_INT_CNTL, 0); } diff --git a/shared-core/radeon_irq.c b/shared-core/radeon_irq.c index 6956996..e300bd5 100644 --- a/shared-core/radeon_irq.c +++ b/shared-core/radeon_irq.c @@ -363,7 +363,7 @@ void radeon_driver_irq_uninstall(struct drm_device * dev) return; dev_priv->irq_enabled = 0; - + drm_vblank_cleanup(dev); if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RS690) RADEON_WRITE(R500_DxMODE_INT_MASK, 0); /* Disable *all* interrupts */ diff --git a/shared-core/via_irq.c b/shared-core/via_irq.c index c3279f8..36d2c44 100644 --- a/shared-core/via_irq.c +++ b/shared-core/via_irq.c @@ -348,6 +348,7 @@ void via_driver_irq_uninstall(struct drm_device * dev) status = VIA_READ(VIA_REG_INTERRUPT); VIA_WRITE(VIA_REG_INTERRUPT, status & ~(VIA_IRQ_VBLANK_ENABLE | dev_priv->irq_enable_mask)); + drm_vblank_cleanup(dev); } }