[Intel-gfx] [PATCH] drm/i915: add missing unregister_oom_notifier to the error/unload path

2014-05-20 Thread Imre Deak
I'm trying to reduce the WARNs during driver reload and this was one of
them. Also while at it remove the redundant condition from before
unregister_shrinker().

v2:
- fix the error path too and move the unregister to its logical place
(Chris)
- remove redundant condition from before unregister_shrinker()

Signed-off-by: Imre Deak imre.d...@intel.com
---
 drivers/gpu/drm/i915/i915_dma.c | 9 +
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index bf81396..f14c47a 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -44,6 +44,7 @@
 #include acpi/video.h
 #include linux/pm.h
 #include linux/pm_runtime.h
+#include linux/oom.h
 
 #define LP_RING(d) (((struct drm_i915_private *)(d))-ring[RCS])
 
@@ -1741,8 +1742,8 @@ out_power_well:
intel_power_domains_remove(dev_priv);
drm_vblank_cleanup(dev);
 out_gem_unload:
-   if (dev_priv-mm.shrinker.scan_objects)
-   unregister_shrinker(dev_priv-mm.shrinker);
+   WARN_ON(unregister_oom_notifier(dev_priv-mm.oom_notifier));
+   unregister_shrinker(dev_priv-mm.shrinker);
 
if (dev-pdev-msi_enabled)
pci_disable_msi(dev-pdev);
@@ -1793,8 +1794,8 @@ int i915_driver_unload(struct drm_device *dev)
 
i915_teardown_sysfs(dev);
 
-   if (dev_priv-mm.shrinker.scan_objects)
-   unregister_shrinker(dev_priv-mm.shrinker);
+   WARN_ON(unregister_oom_notifier(dev_priv-mm.oom_notifier));
+   unregister_shrinker(dev_priv-mm.shrinker);
 
io_mapping_free(dev_priv-gtt.mappable);
arch_phys_wc_del(dev_priv-gtt.mtrr);
-- 
1.8.4

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915: add missing unregister_oom_notifier to the error/unload path

2014-05-20 Thread Daniel Vetter
On Tue, May 20, 2014 at 07:47:20PM +0300, Imre Deak wrote:
 I'm trying to reduce the WARNs during driver reload and this was one of
 them. Also while at it remove the redundant condition from before
 unregister_shrinker().
 
 v2:
 - fix the error path too and move the unregister to its logical place
 (Chris)
 - remove redundant condition from before unregister_shrinker()
 
 Signed-off-by: Imre Deak imre.d...@intel.com

Queued for -next, thanks for the patch.
-Daniel
 ---
  drivers/gpu/drm/i915/i915_dma.c | 9 +
  1 file changed, 5 insertions(+), 4 deletions(-)
 
 diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
 index bf81396..f14c47a 100644
 --- a/drivers/gpu/drm/i915/i915_dma.c
 +++ b/drivers/gpu/drm/i915/i915_dma.c
 @@ -44,6 +44,7 @@
  #include acpi/video.h
  #include linux/pm.h
  #include linux/pm_runtime.h
 +#include linux/oom.h
  
  #define LP_RING(d) (((struct drm_i915_private *)(d))-ring[RCS])
  
 @@ -1741,8 +1742,8 @@ out_power_well:
   intel_power_domains_remove(dev_priv);
   drm_vblank_cleanup(dev);
  out_gem_unload:
 - if (dev_priv-mm.shrinker.scan_objects)
 - unregister_shrinker(dev_priv-mm.shrinker);
 + WARN_ON(unregister_oom_notifier(dev_priv-mm.oom_notifier));
 + unregister_shrinker(dev_priv-mm.shrinker);
  
   if (dev-pdev-msi_enabled)
   pci_disable_msi(dev-pdev);
 @@ -1793,8 +1794,8 @@ int i915_driver_unload(struct drm_device *dev)
  
   i915_teardown_sysfs(dev);
  
 - if (dev_priv-mm.shrinker.scan_objects)
 - unregister_shrinker(dev_priv-mm.shrinker);
 + WARN_ON(unregister_oom_notifier(dev_priv-mm.oom_notifier));
 + unregister_shrinker(dev_priv-mm.shrinker);
  
   io_mapping_free(dev_priv-gtt.mappable);
   arch_phys_wc_del(dev_priv-gtt.mtrr);
 -- 
 1.8.4
 
 ___
 Intel-gfx mailing list
 Intel-gfx@lists.freedesktop.org
 http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx