Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Airlie <airlied@gmail.com>
To: intel-gfx@lists.freedesktop.org
Cc: jani.nikula@linux.intel.com, Dave Airlie <airlied@redhat.com>
Subject: [Intel-gfx] [PATCH 18/25] drm/i915/display: move fb_tracking to display struct
Date: Tue,  7 Sep 2021 17:25:42 +1000	[thread overview]
Message-ID: <20210907072549.2962226-19-airlied@gmail.com> (raw)
In-Reply-To: <20210907072549.2962226-1-airlied@gmail.com>

From: Dave Airlie <airlied@redhat.com>

the spinlock init in gem code seems wildly out of place
Signed-off-by: Dave Airlie <airlied@redhat.com>
---
 .../drm/i915/display/intel_display_debugfs.c  |  4 +-
 .../gpu/drm/i915/display/intel_frontbuffer.c  | 54 +++++++++----------
 drivers/gpu/drm/i915/i915_drv.h               |  4 +-
 drivers/gpu/drm/i915/i915_gem.c               |  2 +-
 4 files changed, 32 insertions(+), 32 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
index 1d38007106d9..784ce209add9 100644
--- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
+++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
@@ -32,10 +32,10 @@ static int i915_frontbuffer_tracking(struct seq_file *m, void *unused)
 	struct drm_i915_private *dev_priv = node_to_i915(m->private);
 
 	seq_printf(m, "FB tracking busy bits: 0x%08x\n",
-		   dev_priv->fb_tracking.busy_bits);
+		   dev_priv->display->fb_tracking.busy_bits);
 
 	seq_printf(m, "FB tracking flip bits: 0x%08x\n",
-		   dev_priv->fb_tracking.flip_bits);
+		   dev_priv->display->fb_tracking.flip_bits);
 
 	return 0;
 }
diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.c b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
index 0492446cd04a..1d9f86de3c91 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.c
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
@@ -82,9 +82,9 @@ static void frontbuffer_flush(struct drm_i915_private *i915,
 			      enum fb_op_origin origin)
 {
 	/* Delay flushing when rings are still busy.*/
-	spin_lock(&i915->fb_tracking.lock);
-	frontbuffer_bits &= ~i915->fb_tracking.busy_bits;
-	spin_unlock(&i915->fb_tracking.lock);
+	spin_lock(&i915->display->fb_tracking.lock);
+	frontbuffer_bits &= ~i915->display->fb_tracking.busy_bits;
+	spin_unlock(&i915->display->fb_tracking.lock);
 
 	if (!frontbuffer_bits)
 		return;
@@ -112,11 +112,11 @@ static void frontbuffer_flush(struct drm_i915_private *i915,
 void intel_frontbuffer_flip_prepare(struct drm_i915_private *i915,
 				    unsigned frontbuffer_bits)
 {
-	spin_lock(&i915->fb_tracking.lock);
-	i915->fb_tracking.flip_bits |= frontbuffer_bits;
+	spin_lock(&i915->display->fb_tracking.lock);
+	i915->display->fb_tracking.flip_bits |= frontbuffer_bits;
 	/* Remove stale busy bits due to the old buffer. */
-	i915->fb_tracking.busy_bits &= ~frontbuffer_bits;
-	spin_unlock(&i915->fb_tracking.lock);
+	i915->display->fb_tracking.busy_bits &= ~frontbuffer_bits;
+	spin_unlock(&i915->display->fb_tracking.lock);
 }
 
 /**
@@ -132,11 +132,11 @@ void intel_frontbuffer_flip_prepare(struct drm_i915_private *i915,
 void intel_frontbuffer_flip_complete(struct drm_i915_private *i915,
 				     unsigned frontbuffer_bits)
 {
-	spin_lock(&i915->fb_tracking.lock);
+	spin_lock(&i915->display->fb_tracking.lock);
 	/* Mask any cancelled flips. */
-	frontbuffer_bits &= i915->fb_tracking.flip_bits;
-	i915->fb_tracking.flip_bits &= ~frontbuffer_bits;
-	spin_unlock(&i915->fb_tracking.lock);
+	frontbuffer_bits &= i915->display->fb_tracking.flip_bits;
+	i915->display->fb_tracking.flip_bits &= ~frontbuffer_bits;
+	spin_unlock(&i915->display->fb_tracking.lock);
 
 	if (frontbuffer_bits)
 		frontbuffer_flush(i915, frontbuffer_bits, ORIGIN_FLIP);
@@ -156,10 +156,10 @@ void intel_frontbuffer_flip_complete(struct drm_i915_private *i915,
 void intel_frontbuffer_flip(struct drm_i915_private *i915,
 			    unsigned frontbuffer_bits)
 {
-	spin_lock(&i915->fb_tracking.lock);
+	spin_lock(&i915->display->fb_tracking.lock);
 	/* Remove stale busy bits due to the old buffer. */
-	i915->fb_tracking.busy_bits &= ~frontbuffer_bits;
-	spin_unlock(&i915->fb_tracking.lock);
+	i915->display->fb_tracking.busy_bits &= ~frontbuffer_bits;
+	spin_unlock(&i915->display->fb_tracking.lock);
 
 	frontbuffer_flush(i915, frontbuffer_bits, ORIGIN_FLIP);
 }
@@ -171,10 +171,10 @@ void __intel_fb_invalidate(struct intel_frontbuffer *front,
 	struct drm_i915_private *i915 = to_i915(front->obj->base.dev);
 
 	if (origin == ORIGIN_CS) {
-		spin_lock(&i915->fb_tracking.lock);
-		i915->fb_tracking.busy_bits |= frontbuffer_bits;
-		i915->fb_tracking.flip_bits &= ~frontbuffer_bits;
-		spin_unlock(&i915->fb_tracking.lock);
+		spin_lock(&i915->display->fb_tracking.lock);
+		i915->display->fb_tracking.busy_bits |= frontbuffer_bits;
+		i915->display->fb_tracking.flip_bits &= ~frontbuffer_bits;
+		spin_unlock(&i915->display->fb_tracking.lock);
 	}
 
 	trace_intel_frontbuffer_invalidate(frontbuffer_bits, origin);
@@ -192,11 +192,11 @@ void __intel_fb_flush(struct intel_frontbuffer *front,
 	struct drm_i915_private *i915 = to_i915(front->obj->base.dev);
 
 	if (origin == ORIGIN_CS) {
-		spin_lock(&i915->fb_tracking.lock);
+		spin_lock(&i915->display->fb_tracking.lock);
 		/* Filter out new bits since rendering started. */
-		frontbuffer_bits &= i915->fb_tracking.busy_bits;
-		i915->fb_tracking.busy_bits &= ~frontbuffer_bits;
-		spin_unlock(&i915->fb_tracking.lock);
+		frontbuffer_bits &= i915->display->fb_tracking.busy_bits;
+		i915->display->fb_tracking.busy_bits &= ~frontbuffer_bits;
+		spin_unlock(&i915->display->fb_tracking.lock);
 	}
 
 	if (frontbuffer_bits)
@@ -222,7 +222,7 @@ static void frontbuffer_retire(struct i915_active *ref)
 }
 
 static void frontbuffer_release(struct kref *ref)
-	__releases(&to_i915(front->obj->base.dev)->fb_tracking.lock)
+	__releases(&to_i915(front->obj->base.dev)->display->fb_tracking.lock)
 {
 	struct intel_frontbuffer *front =
 		container_of(ref, typeof(*front), ref);
@@ -239,7 +239,7 @@ static void frontbuffer_release(struct kref *ref)
 	spin_unlock(&obj->vma.lock);
 
 	RCU_INIT_POINTER(obj->frontbuffer, NULL);
-	spin_unlock(&to_i915(obj->base.dev)->fb_tracking.lock);
+	spin_unlock(&to_i915(obj->base.dev)->display->fb_tracking.lock);
 
 	i915_active_fini(&front->write);
 
@@ -269,7 +269,7 @@ intel_frontbuffer_get(struct drm_i915_gem_object *obj)
 			 frontbuffer_retire,
 			 I915_ACTIVE_RETIRE_SLEEPS);
 
-	spin_lock(&i915->fb_tracking.lock);
+	spin_lock(&i915->display->fb_tracking.lock);
 	if (rcu_access_pointer(obj->frontbuffer)) {
 		kfree(front);
 		front = rcu_dereference_protected(obj->frontbuffer, true);
@@ -278,7 +278,7 @@ intel_frontbuffer_get(struct drm_i915_gem_object *obj)
 		i915_gem_object_get(obj);
 		rcu_assign_pointer(obj->frontbuffer, front);
 	}
-	spin_unlock(&i915->fb_tracking.lock);
+	spin_unlock(&i915->display->fb_tracking.lock);
 
 	return front;
 }
@@ -287,7 +287,7 @@ void intel_frontbuffer_put(struct intel_frontbuffer *front)
 {
 	kref_put_lock(&front->ref,
 		      frontbuffer_release,
-		      &to_i915(front->obj->base.dev)->fb_tracking.lock);
+		      &to_i915(front->obj->base.dev)->display->fb_tracking.lock);
 }
 
 /**
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 5eaa06c98244..a487686b1b71 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -908,6 +908,8 @@ struct drm_i915_display {
 	/* list of fbdev register on this device */
 	struct intel_fbdev *fbdev;
 	struct work_struct fbdev_suspend_work;
+
+	struct i915_frontbuffer_tracking fb_tracking;
 };
 
 struct drm_i915_private {
@@ -1053,8 +1055,6 @@ struct drm_i915_private {
 
 	struct i915_wa_list gt_wa_list;
 
-	struct i915_frontbuffer_tracking fb_tracking;
-
 	struct intel_atomic_helper {
 		struct llist_head free_list;
 		struct work_struct free_work;
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 590efc8b0265..f01607461678 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1165,7 +1165,7 @@ void i915_gem_init_early(struct drm_i915_private *dev_priv)
 	i915_gem_init__mm(dev_priv);
 	i915_gem_init__contexts(dev_priv);
 
-	spin_lock_init(&dev_priv->fb_tracking.lock);
+	spin_lock_init(&dev_priv->display->fb_tracking.lock);
 }
 
 void i915_gem_cleanup_early(struct drm_i915_private *dev_priv)
-- 
2.31.1


  parent reply	other threads:[~2021-09-07  7:26 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-07  7:25 [Intel-gfx] [RFC PATCH 00/25] refactor display struct Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 01/25] drm/i915: move display funcs into a display struct. (v3) Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 02/25] drm/i915/display: move cdclk info into display Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 03/25] drm/i915: move more pll/clocks into display struct Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 04/25] drm/i915/display: move gmbus " Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 05/25] drm/i915/display: move intel_dmc " Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 06/25] drm/i915/display: move mipi_mmio_base to " Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 07/25] drm/i915/display: move pps_mmio_base " Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 08/25] drm/i915/drrs: just use some local vars to simplify drrs code Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 09/25] drm/i915/display: move drrs into display struct Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 10/25] drm/i915/display: move fbc " Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 11/25] drm/i915/display: move pipe/plane mappings to " Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 12/25] drm/i915/display: move properties into " Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 13/25] drm/i915/display: move audio related members " Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 14/25] drm/i915/display: move HDCP related items " Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 15/25] drm/i915/display: move hotplug struct to " Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 16/25] drm/i915/display: move overlay into " Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 17/25] drm/i915/display: move fbdev info to " Dave Airlie
2021-09-07  7:25 ` Dave Airlie [this message]
2021-09-07  7:25 ` [Intel-gfx] [PATCH 19/25] drm/i915/display: move delay and pch values " Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 20/25] drm/intel/display: move atomic related things to display Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 21/25] drm/i915/display: move a bunch of platform misc regs " Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 22/25] drm/i915/display: move dpll struct into display Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 23/25] drm/i915/display: move fdi_rx_config into display struct Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 24/25] drm/i915/display: move workqueues to " Dave Airlie
2021-09-07  7:25 ` [Intel-gfx] [PATCH 25/25] drm/i915/display: move pps/backlight mutexes into display Dave Airlie
2021-09-07  7:57 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for refactor display struct Patchwork
2021-09-07  8:28 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2021-09-07 10:19 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " 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=20210907072549.2962226-19-airlied@gmail.com \
    --to=airlied@gmail.com \
    --cc=airlied@redhat.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jani.nikula@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox