All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@intel.com>
To: Ville Syrjala <ville.syrjala@linux.intel.com>,
	intel-gfx@lists.freedesktop.org
Cc: intel-xe@lists.freedesktop.org
Subject: Re: [PATCH v2 08/10] drm/i915/frontbuffer: Add intel_frontbuffer::display
Date: Wed, 29 Oct 2025 15:36:27 +0200	[thread overview]
Message-ID: <dddd33010e1c47ca7c690e7d9657111cf9b64447@intel.com> (raw)
In-Reply-To: <20251016185408.22735-9-ville.syrjala@linux.intel.com>

On Thu, 16 Oct 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> 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.
>
> Acked-by: Jani Nikula <jani.nikula@intel.com>

Upgrade to

Reviewed-by: Jani Nikula <jani.nikula@intel.com>

> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  .../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 e5f3f0d555a8..5d627eac07bd 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));
>  
> @@ -253,6 +253,7 @@ intel_frontbuffer_get(struct drm_gem_object *obj)
>  	drm_gem_object_get(obj);
>  
>  	front->obj = obj;
> +	front->display = display;
>  	kref_init(&front->ref);
>  	atomic_set(&front->bits, 0);
>  	i915_active_init(&front->write,
> @@ -277,7 +278,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);
>  }
>  
>  /**
> @@ -306,17 +307,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;

-- 
Jani Nikula, Intel

  reply	other threads:[~2025-10-29 14:59 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-16 18:53 [PATCH v2 00/10] drm/i915/frontbuffer: Fix the intel_frontbuffer lifetime mess Ville Syrjala
2025-10-16 18:53 ` [PATCH v2 01/10] drm/i915/overlay: Drop the DIRTYFB flush Ville Syrjala
2025-10-16 18:54 ` [PATCH v2 02/10] drm/i915/overlay: Switch to intel_frontbuffer_flip() Ville Syrjala
2025-10-16 18:54 ` [PATCH v2 03/10] drm/i915/frontbuffer: Nuke intel_frontbuffer_flip_{prepare, complete}() Ville Syrjala
2025-10-29 13:32   ` [PATCH v2 03/10] drm/i915/frontbuffer: Nuke intel_frontbuffer_flip_{prepare,complete}() Jani Nikula
2025-10-29 13:32   ` Jani Nikula
2025-10-16 18:54 ` [PATCH v2 04/10] drm/i915/frontbuffer: Turn intel_bo_flush_if_display() into a frontbuffer operation Ville Syrjala
2025-10-29 13:33   ` Jani Nikula
2025-10-16 18:54 ` [PATCH v2 05/10] drm/i915/frontbuffer: Handle the dirtyfb cache flush inside intel_frontbuffer_flush() Ville Syrjala
2025-10-29 13:34   ` Jani Nikula
2025-10-16 18:54 ` [PATCH v2 06/10] drm/i915/frontbuffef: Split fb_tracking.lock into two Ville Syrjala
2025-10-29 13:35   ` Jani Nikula
2025-10-16 18:54 ` [PATCH v2 07/10] drm/i915/frontbuffer: Extract intel_frontbuffer_ref() Ville Syrjala
2025-10-29 13:35   ` Jani Nikula
2025-10-16 18:54 ` [PATCH v2 08/10] drm/i915/frontbuffer: Add intel_frontbuffer::display Ville Syrjala
2025-10-29 13:36   ` Jani Nikula [this message]
2025-10-29 13:37   ` Jani Nikula
2025-10-16 18:54 ` [PATCH v2 09/10] drm/i915/frontbuffer: Fix intel_frontbuffer lifetime handling Ville Syrjala
2025-10-29 13:51   ` Jani Nikula
2025-10-29 15:00     ` Jani Nikula
2025-11-06 13:48       ` Jani Nikula
2025-11-06 14:27         ` Ville Syrjälä
2025-11-07 18:45           ` Ville Syrjälä
2025-10-16 18:54 ` [PATCH v2 10/10] drm/i915/gem: s/i915_gem_object_get_frontbuffer/i915_gem_object_frontbuffer_lookup/ Ville Syrjala
2025-10-29 13:37   ` Jani Nikula
2025-10-16 19:00 ` ✗ CI.checkpatch: warning for drm/i915/frontbuffer: Fix the intel_frontbuffer lifetime mess (rev2) Patchwork
2025-10-16 19:01 ` ✓ CI.KUnit: success " Patchwork
2025-10-16 19:17 ` ✗ CI.checksparse: warning " Patchwork
2025-10-16 21:49 ` ✓ i915.CI.BAT: success " Patchwork
2025-10-17  8:34 ` ✗ i915.CI.Full: failure " Patchwork
2025-10-17 16:49 ` ✗ Xe.CI.Full: " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=dddd33010e1c47ca7c690e7d9657111cf9b64447@intel.com \
    --to=jani.nikula@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=ville.syrjala@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.