Re: [Intel-gfx] [PATCH 13/46] drm/i915/fb: Track rpm wakerefs

2019-01-09 Thread Mika Kuoppala
Chris Wilson  writes:

> Keep track of the rpm wakeref used for framebuffer access so that we can
> cancel upon release and so more clearly identify leaks.
>
> Signed-off-by: Chris Wilson 
> Cc: Jani Nikula 

Reviewed-by: Mika Kuoppala 

> ---
>  drivers/gpu/drm/i915/intel_display.c | 5 +++--
>  drivers/gpu/drm/i915/intel_fbdev.c   | 9 +
>  2 files changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c 
> b/drivers/gpu/drm/i915/intel_display.c
> index c6000aa47a8d..ea70cb8cf50a 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -2024,6 +2024,7 @@ intel_pin_and_fence_fb_obj(struct drm_framebuffer *fb,
>   struct drm_device *dev = fb->dev;
>   struct drm_i915_private *dev_priv = to_i915(dev);
>   struct drm_i915_gem_object *obj = intel_fb_obj(fb);
> + intel_wakeref_t wakeref;
>   struct i915_vma *vma;
>   unsigned int pinctl;
>   u32 alignment;
> @@ -2047,7 +2048,7 @@ intel_pin_and_fence_fb_obj(struct drm_framebuffer *fb,
>* intel_runtime_pm_put(), so it is correct to wrap only the
>* pin/unpin/fence and not more.
>*/
> - intel_runtime_pm_get(dev_priv);
> + wakeref = intel_runtime_pm_get(dev_priv);
>  
>   atomic_inc(_priv->gpu_error.pending_fb_pin);
>  
> @@ -2102,7 +2103,7 @@ intel_pin_and_fence_fb_obj(struct drm_framebuffer *fb,
>  err:
>   atomic_dec(_priv->gpu_error.pending_fb_pin);
>  
> - intel_runtime_pm_put_unchecked(dev_priv);
> + intel_runtime_pm_put(dev_priv, wakeref);
>   return vma;
>  }
>  
> diff --git a/drivers/gpu/drm/i915/intel_fbdev.c 
> b/drivers/gpu/drm/i915/intel_fbdev.c
> index 11d877b908e2..de14cd78aa0f 100644
> --- a/drivers/gpu/drm/i915/intel_fbdev.c
> +++ b/drivers/gpu/drm/i915/intel_fbdev.c
> @@ -178,8 +178,9 @@ static int intelfb_create(struct drm_fb_helper *helper,
>   const struct i915_ggtt_view view = {
>   .type = I915_GGTT_VIEW_NORMAL,
>   };
> - struct fb_info *info;
>   struct drm_framebuffer *fb;
> + intel_wakeref_t wakeref;
> + struct fb_info *info;
>   struct i915_vma *vma;
>   unsigned long flags = 0;
>   bool prealloc = false;
> @@ -210,7 +211,7 @@ static int intelfb_create(struct drm_fb_helper *helper,
>   }
>  
>   mutex_lock(>struct_mutex);
> - intel_runtime_pm_get(dev_priv);
> + wakeref = intel_runtime_pm_get(dev_priv);
>  
>   /* Pin the GGTT vma for our access via info->screen_base.
>* This also validates that any existing fb inherited from the
> @@ -277,7 +278,7 @@ static int intelfb_create(struct drm_fb_helper *helper,
>   ifbdev->vma = vma;
>   ifbdev->vma_flags = flags;
>  
> - intel_runtime_pm_put_unchecked(dev_priv);
> + intel_runtime_pm_put(dev_priv, wakeref);
>   mutex_unlock(>struct_mutex);
>   vga_switcheroo_client_fb_set(pdev, info);
>   return 0;
> @@ -285,7 +286,7 @@ static int intelfb_create(struct drm_fb_helper *helper,
>  out_unpin:
>   intel_unpin_fb_vma(vma, flags);
>  out_unlock:
> - intel_runtime_pm_put_unchecked(dev_priv);
> + intel_runtime_pm_put(dev_priv, wakeref);
>   mutex_unlock(>struct_mutex);
>   return ret;
>  }
> -- 
> 2.20.1
>
> ___
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 13/46] drm/i915/fb: Track rpm wakerefs

2019-01-07 Thread Chris Wilson
Keep track of the rpm wakeref used for framebuffer access so that we can
cancel upon release and so more clearly identify leaks.

Signed-off-by: Chris Wilson 
Cc: Jani Nikula 
---
 drivers/gpu/drm/i915/intel_display.c | 5 +++--
 drivers/gpu/drm/i915/intel_fbdev.c   | 9 +
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index c6000aa47a8d..ea70cb8cf50a 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -2024,6 +2024,7 @@ intel_pin_and_fence_fb_obj(struct drm_framebuffer *fb,
struct drm_device *dev = fb->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
struct drm_i915_gem_object *obj = intel_fb_obj(fb);
+   intel_wakeref_t wakeref;
struct i915_vma *vma;
unsigned int pinctl;
u32 alignment;
@@ -2047,7 +2048,7 @@ intel_pin_and_fence_fb_obj(struct drm_framebuffer *fb,
 * intel_runtime_pm_put(), so it is correct to wrap only the
 * pin/unpin/fence and not more.
 */
-   intel_runtime_pm_get(dev_priv);
+   wakeref = intel_runtime_pm_get(dev_priv);
 
atomic_inc(_priv->gpu_error.pending_fb_pin);
 
@@ -2102,7 +2103,7 @@ intel_pin_and_fence_fb_obj(struct drm_framebuffer *fb,
 err:
atomic_dec(_priv->gpu_error.pending_fb_pin);
 
-   intel_runtime_pm_put_unchecked(dev_priv);
+   intel_runtime_pm_put(dev_priv, wakeref);
return vma;
 }
 
diff --git a/drivers/gpu/drm/i915/intel_fbdev.c 
b/drivers/gpu/drm/i915/intel_fbdev.c
index 11d877b908e2..de14cd78aa0f 100644
--- a/drivers/gpu/drm/i915/intel_fbdev.c
+++ b/drivers/gpu/drm/i915/intel_fbdev.c
@@ -178,8 +178,9 @@ static int intelfb_create(struct drm_fb_helper *helper,
const struct i915_ggtt_view view = {
.type = I915_GGTT_VIEW_NORMAL,
};
-   struct fb_info *info;
struct drm_framebuffer *fb;
+   intel_wakeref_t wakeref;
+   struct fb_info *info;
struct i915_vma *vma;
unsigned long flags = 0;
bool prealloc = false;
@@ -210,7 +211,7 @@ static int intelfb_create(struct drm_fb_helper *helper,
}
 
mutex_lock(>struct_mutex);
-   intel_runtime_pm_get(dev_priv);
+   wakeref = intel_runtime_pm_get(dev_priv);
 
/* Pin the GGTT vma for our access via info->screen_base.
 * This also validates that any existing fb inherited from the
@@ -277,7 +278,7 @@ static int intelfb_create(struct drm_fb_helper *helper,
ifbdev->vma = vma;
ifbdev->vma_flags = flags;
 
-   intel_runtime_pm_put_unchecked(dev_priv);
+   intel_runtime_pm_put(dev_priv, wakeref);
mutex_unlock(>struct_mutex);
vga_switcheroo_client_fb_set(pdev, info);
return 0;
@@ -285,7 +286,7 @@ static int intelfb_create(struct drm_fb_helper *helper,
 out_unpin:
intel_unpin_fb_vma(vma, flags);
 out_unlock:
-   intel_runtime_pm_put_unchecked(dev_priv);
+   intel_runtime_pm_put(dev_priv, wakeref);
mutex_unlock(>struct_mutex);
return ret;
 }
-- 
2.20.1

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