From: Ville Syrjälä <[email protected]>

After upcoming intel_frontbuffer lifetime related changed we
won't need intel_frontbuffer::obj for anything apart from
getting at the display. Add a direct pointer for that instead
so that the obj pointer can be completely eliminated.

Signed-off-by: Ville Syrjälä <[email protected]>
---
 .../gpu/drm/i915/display/intel_frontbuffer.c  | 19 ++++++++-----------
 .../gpu/drm/i915/display/intel_frontbuffer.h  |  1 +
 2 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.c 
b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
index 34bbf18f3c08..abe7d29781e1 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.c
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
@@ -128,7 +128,7 @@ void __intel_fb_invalidate(struct intel_frontbuffer *front,
                           enum fb_op_origin origin,
                           unsigned int frontbuffer_bits)
 {
-       struct intel_display *display = to_intel_display(front->obj->dev);
+       struct intel_display *display = front->display;
 
        if (origin == ORIGIN_CS) {
                spin_lock(&display->fb_tracking.lock);
@@ -148,7 +148,7 @@ void __intel_fb_flush(struct intel_frontbuffer *front,
                      enum fb_op_origin origin,
                      unsigned int frontbuffer_bits)
 {
-       struct intel_display *display = to_intel_display(front->obj->dev);
+       struct intel_display *display = front->display;
 
        if (origin == ORIGIN_DIRTYFB)
                intel_bo_frontbuffer_flush_for_display(front);
@@ -215,12 +215,12 @@ static void frontbuffer_retire(struct i915_active *ref)
 }
 
 static void frontbuffer_release(struct kref *ref)
-       
__releases(&to_intel_display(front->obj->dev)->fb_tracking.frontbuffer_lock)
+       __releases(&front->display->fb_tracking.frontbuffer_lock)
 {
        struct intel_frontbuffer *ret, *front =
                container_of(ref, typeof(*front), ref);
+       struct intel_display *display = front->display;
        struct drm_gem_object *obj = front->obj;
-       struct intel_display *display = to_intel_display(obj->dev);
 
        drm_WARN_ON(display->drm, atomic_read(&front->bits));
 
@@ -248,6 +248,7 @@ intel_frontbuffer_get(struct drm_gem_object *obj)
        if (!front)
                return NULL;
 
+       front->display = display;
        front->obj = obj;
        kref_init(&front->ref);
        atomic_set(&front->bits, 0);
@@ -269,7 +270,7 @@ void intel_frontbuffer_put(struct intel_frontbuffer *front)
 {
        kref_put_lock(&front->ref,
                      frontbuffer_release,
-                     
&to_intel_display(front->obj->dev)->fb_tracking.frontbuffer_lock);
+                     &front->display->fb_tracking.frontbuffer_lock);
 }
 
 /**
@@ -298,17 +299,13 @@ void intel_frontbuffer_track(struct intel_frontbuffer 
*old,
        BUILD_BUG_ON(I915_MAX_PLANES > INTEL_FRONTBUFFER_BITS_PER_PIPE);
 
        if (old) {
-               struct intel_display *display = to_intel_display(old->obj->dev);
-
-               drm_WARN_ON(display->drm,
+               drm_WARN_ON(old->display->drm,
                            !(atomic_read(&old->bits) & frontbuffer_bits));
                atomic_andnot(frontbuffer_bits, &old->bits);
        }
 
        if (new) {
-               struct intel_display *display = to_intel_display(new->obj->dev);
-
-               drm_WARN_ON(display->drm,
+               drm_WARN_ON(new->display->drm,
                            atomic_read(&new->bits) & frontbuffer_bits);
                atomic_or(frontbuffer_bits, &new->bits);
        }
diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.h 
b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
index 293c2d0152d6..ff2a6ac75a34 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.h
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
@@ -43,6 +43,7 @@ enum fb_op_origin {
 
 struct intel_frontbuffer {
        struct kref ref;
+       struct intel_display *display;
        atomic_t bits;
        struct i915_active write;
        struct drm_gem_object *obj;
-- 
2.49.1

Reply via email to