All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile"
@ 2023-10-25 10:20 Maarten Lankhorst
  2023-10-25 10:20 ` [Intel-xe] [PATCH 01/10] revert fixme in intel_atomic_plane.c Maarten Lankhorst
                   ` (9 more replies)
  0 siblings, 10 replies; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
  To: intel-xe

A lot of  the changes are reverts that are no longer useful. In some cases the
compat headers provide functionality, in other cases it needs to be added.

With all reverts, the fixme patch should be mostly isolated to intel_fb.c and intel_fbdev.c

Untested.

Maarten Lankhorst (10):
  revert fixme in intel_atomic_plane.c
  drm/atomic: Add drm_atomic_helper_set_fence_deadline() function
  drm/i915: Implement fence->set_deadline.
  FIXME drm/i915/display: Use fence->set_deadline to boost requests
  fixup xe i915_drv.h compat header
  revert intel_frontbuffer changes.
  Update compat headers.
  more reverts
  drm/i915/display: Use i915_gem_object_get_dma_address to get dma
    address
  revert more (fbc)

 drivers/gpu/drm/drm_atomic_helper.c           | 15 ++--
 .../gpu/drm/i915/display/intel_atomic_plane.c | 70 ++++---------------
 drivers/gpu/drm/i915/display/intel_cursor.c   | 12 ++--
 drivers/gpu/drm/i915/display/intel_display.c  | 37 +---------
 .../drm/i915/display/intel_display_types.h    |  4 --
 drivers/gpu/drm/i915/display/intel_fbc.c      | 13 ++--
 .../gpu/drm/i915/display/intel_frontbuffer.c  |  7 +-
 .../gpu/drm/i915/display/intel_frontbuffer.h  |  4 --
 .../drm/i915/display/skl_universal_plane.c    |  4 --
 drivers/gpu/drm/i915/i915_request.c           |  9 +++
 .../compat-i915-headers/gem/i915_gem_lmem.h   |  2 +
 .../compat-i915-headers/gem/i915_gem_object.h | 58 +++++++++++++++
 .../gem/i915_gem_object_frontbuffer.h         |  4 +-
 .../gpu/drm/xe/compat-i915-headers/i915_drv.h |  1 +
 .../xe/compat-i915-headers/i915_gem_stolen.h  |  4 +-
 .../gpu/drm/xe/compat-i915-headers/i915_vma.h |  6 ++
 include/drm/drm_atomic_helper.h               |  3 +-
 17 files changed, 126 insertions(+), 127 deletions(-)
 create mode 100644 drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_lmem.h
 create mode 100644 drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object.h

-- 
2.39.2


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Intel-xe] [PATCH 01/10] revert fixme in intel_atomic_plane.c
  2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
  2023-10-25 10:20 ` [Intel-xe] [PATCH 02/10] drm/atomic: Add drm_atomic_helper_set_fence_deadline() function Maarten Lankhorst
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
  To: intel-xe

Revert the plane_fb changes, so we can fix it properly.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 .../gpu/drm/i915/display/intel_atomic_plane.c | 25 +++----------------
 1 file changed, 4 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
index 62b6108c43808..dd65498166fbf 100644
--- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
@@ -1033,11 +1033,10 @@ static int
 intel_prepare_plane_fb(struct drm_plane *_plane,
 		       struct drm_plane_state *_new_plane_state)
 {
-	struct intel_plane_state *new_plane_state =
-		to_intel_plane_state(_new_plane_state);
-#ifdef I915
 	struct i915_sched_attr attr = { .priority = I915_PRIORITY_DISPLAY };
 	struct intel_plane *plane = to_intel_plane(_plane);
+	struct intel_plane_state *new_plane_state =
+		to_intel_plane_state(_new_plane_state);
 	struct intel_atomic_state *state =
 		to_intel_atomic_state(new_plane_state->uapi.state);
 	struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
@@ -1133,22 +1132,6 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
 	intel_plane_unpin_fb(new_plane_state);
 
 	return ret;
-#else
-	int ret;
-
-	if (!intel_fb_obj(new_plane_state->hw.fb))
-		return 0;
-
-	ret = intel_plane_pin_fb(new_plane_state);
-	if (ret)
-		return ret;
-
-	ret = drm_gem_plane_helper_prepare_fb(_plane, _new_plane_state);
-	if (ret)
-		intel_plane_unpin_fb(new_plane_state);
-
-	return ret;
-#endif
 }
 
 /**
@@ -1164,9 +1147,9 @@ intel_cleanup_plane_fb(struct drm_plane *plane,
 {
 	struct intel_plane_state *old_plane_state =
 		to_intel_plane_state(_old_plane_state);
-	__maybe_unused struct intel_atomic_state *state =
+	struct intel_atomic_state *state =
 		to_intel_atomic_state(old_plane_state->uapi.state);
-	__maybe_unused struct drm_i915_private *dev_priv = to_i915(plane->dev);
+	struct drm_i915_private *dev_priv = to_i915(plane->dev);
 	struct drm_i915_gem_object *obj = intel_fb_obj(old_plane_state->hw.fb);
 
 	if (!obj)
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Intel-xe] [PATCH 02/10] drm/atomic: Add drm_atomic_helper_set_fence_deadline() function
  2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
  2023-10-25 10:20 ` [Intel-xe] [PATCH 01/10] revert fixme in intel_atomic_plane.c Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
  2023-10-25 10:20 ` [Intel-xe] [PATCH 03/10] drm/i915: Implement fence->set_deadline Maarten Lankhorst
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
  To: intel-xe

i915 has an i915 specific boost. Use set_fence_deadline instead.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 drivers/gpu/drm/drm_atomic_helper.c | 15 +++++++++++----
 include/drm/drm_atomic_helper.h     |  3 ++-
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index 71d3993971075..47ccbe1192658 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -1520,12 +1520,16 @@ void drm_atomic_helper_commit_modeset_enables(struct drm_device *dev,
 }
 EXPORT_SYMBOL(drm_atomic_helper_commit_modeset_enables);
 
-/*
+/**
+ * drm_atomic_helper_set_fence_deadline - update fence deadlines.
+ * @dev: DRM device
+ * @state: atomic state object with new state structures
+ *
  * For atomic updates which touch just a single CRTC, calculate the time of the
  * next vblank, and inform all the fences of the deadline.
  */
-static void set_fence_deadline(struct drm_device *dev,
-			       struct drm_atomic_state *state)
+void drm_atomic_helper_set_fence_deadline(struct drm_device *dev,
+					  struct drm_atomic_state *state)
 {
 	struct drm_crtc *crtc;
 	struct drm_crtc_state *new_crtc_state;
@@ -1560,6 +1564,7 @@ static void set_fence_deadline(struct drm_device *dev,
 		dma_fence_set_deadline(new_plane_state->fence, vbltime);
 	}
 }
+EXPORT_SYMBOL(drm_atomic_helper_set_fence_deadline);
 
 /**
  * drm_atomic_helper_wait_for_fences - wait for fences stashed in plane state
@@ -1580,6 +1585,8 @@ static void set_fence_deadline(struct drm_device *dev,
  * to wait **before** we do anything that can't be easily rolled back. That is
  * before we call drm_atomic_helper_swap_state().
  *
+ * Calls drm_atomic_helper_set_fence_deadline().
+ *
  * Returns zero if success or < 0 if dma_fence_wait() fails.
  */
 int drm_atomic_helper_wait_for_fences(struct drm_device *dev,
@@ -1590,7 +1597,7 @@ int drm_atomic_helper_wait_for_fences(struct drm_device *dev,
 	struct drm_plane_state *new_plane_state;
 	int i, ret;
 
-	set_fence_deadline(dev, state);
+	drm_atomic_helper_set_fence_deadline(dev, state);
 
 	for_each_new_plane_in_state(state, plane, new_plane_state, i) {
 		if (!new_plane_state->fence)
diff --git a/include/drm/drm_atomic_helper.h b/include/drm/drm_atomic_helper.h
index 536a0b0091c3a..37c6df1db5e0d 100644
--- a/include/drm/drm_atomic_helper.h
+++ b/include/drm/drm_atomic_helper.h
@@ -72,7 +72,8 @@ int drm_atomic_helper_async_check(struct drm_device *dev,
 				  struct drm_atomic_state *state);
 void drm_atomic_helper_async_commit(struct drm_device *dev,
 				    struct drm_atomic_state *state);
-
+void drm_atomic_helper_set_fence_deadline(struct drm_device *dev,
+					  struct drm_atomic_state *state);
 int drm_atomic_helper_wait_for_fences(struct drm_device *dev,
 					struct drm_atomic_state *state,
 					bool pre_swap);
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Intel-xe] [PATCH 03/10] drm/i915: Implement fence->set_deadline.
  2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
  2023-10-25 10:20 ` [Intel-xe] [PATCH 01/10] revert fixme in intel_atomic_plane.c Maarten Lankhorst
  2023-10-25 10:20 ` [Intel-xe] [PATCH 02/10] drm/atomic: Add drm_atomic_helper_set_fence_deadline() function Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
  2023-10-25 10:20 ` [Intel-xe] [PATCH 04/10] FIXME drm/i915/display: Use fence->set_deadline to boost requests Maarten Lankhorst
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
  To: intel-xe

Useful when we want to start using it in display.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 drivers/gpu/drm/i915/i915_request.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
index f59081066a197..72e6d0e705231 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -105,6 +105,14 @@ static signed long i915_fence_wait(struct dma_fence *fence,
 					 timeout);
 }
 
+static void i915_fence_set_deadline(struct dma_fence *fence,
+				    ktime_t deadline)
+{
+	struct i915_sched_attr attr = { .priority = I915_PRIORITY_DISPLAY };
+
+	i915_gem_fence_wait_priority(fence, &attr);
+}
+
 struct kmem_cache *i915_request_slab_cache(void)
 {
 	return slab_requests;
@@ -177,6 +185,7 @@ const struct dma_fence_ops i915_fence_ops = {
 	.enable_signaling = i915_fence_enable_signaling,
 	.signaled = i915_fence_signaled,
 	.wait = i915_fence_wait,
+	.set_deadline = i915_fence_set_deadline,
 	.release = i915_fence_release,
 };
 
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Intel-xe] [PATCH 04/10] FIXME drm/i915/display: Use fence->set_deadline to boost requests
  2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
                   ` (2 preceding siblings ...)
  2023-10-25 10:20 ` [Intel-xe] [PATCH 03/10] drm/i915: Implement fence->set_deadline Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
  2023-10-27 10:05   ` [Intel-xe] [04/10] " Hogander, Jouni
  2023-10-25 10:20 ` [Intel-xe] [PATCH 05/10] fixup xe i915_drv.h compat header Maarten Lankhorst
                   ` (5 subsequent siblings)
  9 siblings, 1 reply; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
  To: intel-xe

Instead of using a i915 specific method, use the generic helper to
combine fences and set the deadline.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 .../gpu/drm/i915/display/intel_atomic_plane.c | 47 ++++---------------
 drivers/gpu/drm/i915/display/intel_display.c  |  2 +
 2 files changed, 11 insertions(+), 38 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
index dd65498166fbf..98a59445e6f45 100644
--- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
@@ -1033,7 +1033,6 @@ static int
 intel_prepare_plane_fb(struct drm_plane *_plane,
 		       struct drm_plane_state *_new_plane_state)
 {
-	struct i915_sched_attr attr = { .priority = I915_PRIORITY_DISPLAY };
 	struct intel_plane *plane = to_intel_plane(_plane);
 	struct intel_plane_state *new_plane_state =
 		to_intel_plane_state(_new_plane_state);
@@ -1072,49 +1071,20 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
 		}
 	}
 
-	if (new_plane_state->uapi.fence) { /* explicit fencing */
-		i915_gem_fence_wait_priority(new_plane_state->uapi.fence,
-					     &attr);
-		ret = i915_sw_fence_await_dma_fence(&state->commit_ready,
-						    new_plane_state->uapi.fence,
-						    i915_fence_timeout(dev_priv),
-						    GFP_KERNEL);
-		if (ret < 0)
+	if (obj) {
+		ret = intel_plane_pin_fb(new_plane_state);
+		if (ret)
 			return ret;
 	}
 
-	if (!obj)
-		return 0;
-
-
-	ret = intel_plane_pin_fb(new_plane_state);
+	/* prepare after pinning */
+	ret = drm_gem_plane_helper_prepare_fb(_plane, _new_plane_state);
 	if (ret)
-		return ret;
+		goto unpin_fb;
 
-	i915_gem_object_wait_priority(obj, 0, &attr);
-
-	if (!new_plane_state->uapi.fence) { /* implicit fencing */
-		struct dma_resv_iter cursor;
-		struct dma_fence *fence;
-
-		ret = i915_sw_fence_await_reservation(&state->commit_ready,
-						      obj->base.resv, false,
-						      i915_fence_timeout(dev_priv),
-						      GFP_KERNEL);
-		if (ret < 0)
-			goto unpin_fb;
-
-		dma_resv_iter_begin(&cursor, obj->base.resv,
-				    DMA_RESV_USAGE_WRITE);
-		dma_resv_for_each_fence_unlocked(&cursor, fence) {
-			intel_display_rps_boost_after_vblank(new_plane_state->hw.crtc,
-							     fence);
-		}
-		dma_resv_iter_end(&cursor);
-	} else {
+	if (new_plane_state->uapi.fence)
 		intel_display_rps_boost_after_vblank(new_plane_state->hw.crtc,
 						     new_plane_state->uapi.fence);
-	}
 
 	/*
 	 * We declare pageflips to be interactive and so merit a small bias
@@ -1124,7 +1094,8 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
 	 * that are not quite steady state without resorting to forcing
 	 * maximum clocks following a vblank miss (see do_rps_boost()).
 	 */
-	intel_display_rps_mark_interactive(dev_priv, state, true);
+	if (obj)
+		intel_display_rps_mark_interactive(dev_priv, state, true);
 
 	return 0;
 
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 478b8764101a2..1b66d5adcebee 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -6599,6 +6599,8 @@ static int intel_atomic_prepare_commit(struct intel_atomic_state *state)
 	if (ret < 0)
 		return ret;
 
+	drm_atomic_helper_set_fence_deadline(state->base.dev, &state->base);
+
 	for_each_new_intel_crtc_in_state(state, crtc, crtc_state, i) {
 		if (intel_crtc_needs_color_update(crtc_state))
 			intel_color_prepare_commit(crtc_state);
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Intel-xe] [PATCH 05/10] fixup xe i915_drv.h compat header
  2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
                   ` (3 preceding siblings ...)
  2023-10-25 10:20 ` [Intel-xe] [PATCH 04/10] FIXME drm/i915/display: Use fence->set_deadline to boost requests Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
  2023-10-25 10:20 ` [Intel-xe] [PATCH 06/10] revert intel_frontbuffer changes Maarten Lankhorst
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
  To: intel-xe

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
index 4e922446e40ef..5f24befb198fc 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
@@ -202,6 +202,7 @@ static inline void intel_runtime_pm_put(struct xe_runtime_pm *pm, bool wakeref)
 
 #define intel_uncore_arm_unclaimed_mmio_detection(x) do { } while (0)
 #define i915_sw_fence_commit(x) do { } while (0)
+#define i915_sw_fence_await_reservation(...) (0)
 
 #define with_intel_runtime_pm(rpm, wf) \
 	for ((wf) = intel_runtime_pm_get(rpm); (wf); \
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Intel-xe] [PATCH 06/10] revert intel_frontbuffer changes.
  2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
                   ` (4 preceding siblings ...)
  2023-10-25 10:20 ` [Intel-xe] [PATCH 05/10] fixup xe i915_drv.h compat header Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
  2023-10-27 10:17   ` [Intel-xe] [06/10] " Hogander, Jouni
  2023-10-25 10:20 ` [Intel-xe] [PATCH 07/10] Update compat headers Maarten Lankhorst
                   ` (3 subsequent siblings)
  9 siblings, 1 reply; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
  To: intel-xe

No functional change, just things removed.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_frontbuffer.c | 7 ++++---
 drivers/gpu/drm/i915/display/intel_frontbuffer.h | 4 ----
 2 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.c b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
index d64ce5bfeca82..2ea37c0414a95 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.c
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
@@ -190,7 +190,7 @@ void __intel_fb_flush(struct intel_frontbuffer *front,
 		      enum fb_op_origin origin,
 		      unsigned int frontbuffer_bits)
 {
-	struct drm_i915_private *i915 = intel_bo_to_i915((front->obj));
+	struct drm_i915_private *i915 = intel_bo_to_i915(front->obj);
 
 	if (origin == ORIGIN_CS) {
 		spin_lock(&i915->display.fb_tracking.lock);
@@ -259,6 +259,7 @@ static void frontbuffer_release(struct kref *ref)
 	drm_WARN_ON(&intel_bo_to_i915(obj)->drm, atomic_read(&front->bits));
 
 	i915_ggtt_clear_scanout(obj);
+
 	ret = i915_gem_object_set_frontbuffer(obj, NULL);
 	drm_WARN_ON(&intel_bo_to_i915(obj)->drm, ret);
 	spin_unlock(&intel_bo_to_i915(obj)->display.fb_tracking.lock);
@@ -289,12 +290,12 @@ intel_frontbuffer_get(struct drm_i915_gem_object *obj)
 			 frontbuffer_retire,
 			 I915_ACTIVE_RETIRE_SLEEPS);
 	INIT_WORK(&front->flush_work, intel_frontbuffer_flush_work);
+
 	spin_lock(&i915->display.fb_tracking.lock);
 	cur = i915_gem_object_set_frontbuffer(obj, front);
 	spin_unlock(&i915->display.fb_tracking.lock);
 	if (cur != front)
 		kfree(front);
-
 	return cur;
 }
 
@@ -337,7 +338,7 @@ void intel_frontbuffer_track(struct intel_frontbuffer *old,
 	}
 
 	if (new) {
-		drm_WARN_ON(&intel_bo_to_i915(old->obj)->drm,
+		drm_WARN_ON(&intel_bo_to_i915(new->obj)->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 00467d513e74d..abb51e8bb9200 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.h
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
@@ -28,10 +28,6 @@
 #include <linux/bits.h>
 #include <linux/kref.h>
 
-#ifndef I915
-#include "xe_bo.h"
-#endif
-
 #include "i915_active_types.h"
 
 struct drm_i915_private;
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Intel-xe] [PATCH 07/10] Update compat headers.
  2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
                   ` (5 preceding siblings ...)
  2023-10-25 10:20 ` [Intel-xe] [PATCH 06/10] revert intel_frontbuffer changes Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
  2023-10-25 10:20 ` [Intel-xe] [PATCH 08/10] more reverts Maarten Lankhorst
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
  To: intel-xe

Some naughty headers used I915_GEM_OBJECT_H instead of their own name,
fix it.

Update headers to move some stuff out from the messy patch.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 .../compat-i915-headers/gem/i915_gem_lmem.h   |  2 +
 .../compat-i915-headers/gem/i915_gem_object.h | 58 +++++++++++++++++++
 .../gem/i915_gem_object_frontbuffer.h         |  4 +-
 .../xe/compat-i915-headers/i915_gem_stolen.h  |  4 +-
 .../gpu/drm/xe/compat-i915-headers/i915_vma.h |  6 ++
 5 files changed, 70 insertions(+), 4 deletions(-)
 create mode 100644 drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_lmem.h
 create mode 100644 drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object.h

diff --git a/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_lmem.h b/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_lmem.h
new file mode 100644
index 0000000000000..2f55e7e951e8c
--- /dev/null
+++ b/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_lmem.h
@@ -0,0 +1,2 @@
+/* Empty */
+
diff --git a/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object.h b/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object.h
new file mode 100644
index 0000000000000..5f0545a3a99b1
--- /dev/null
+++ b/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object.h
@@ -0,0 +1,58 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2023 Intel Corporation
+ */
+
+#ifndef _I915_GEM_OBJECT_H_
+#define _I915_GEM_OBJECT_H_
+
+/* For tiling definitions */
+#include <uapi/drm/i915_drm.h>
+
+#undef I915_TILING_X
+#undef I915_TILING_Y
+#define I915_TILING_X 0
+#define I915_TILING_Y 0
+
+#include "xe_bo.h"
+#include <linux/types.h>
+
+static inline int i915_gem_object_read_from_page(struct xe_bo *bo,
+						 u32 ofs, u64 *ptr, u32 size)
+{
+	struct ttm_bo_kmap_obj map;
+	void *virtual;
+	bool is_iomem;
+	int ret;
+
+	WARN_ON(size != 8);
+
+	ret = xe_bo_lock(bo, true);
+	if (ret)
+		return ret;
+
+	ret = ttm_bo_kmap(&bo->ttm, ofs >> PAGE_SHIFT, 1, &map);
+	if (ret)
+		goto out_unlock;
+
+	ofs &= ~PAGE_MASK;
+	virtual = ttm_kmap_obj_virtual(&map, &is_iomem);
+	if (is_iomem)
+		*ptr = readq((void __iomem *)(virtual + ofs));
+	else
+		*ptr = *(u64 *)(virtual + ofs);
+
+	ttm_bo_kunmap(&map);
+out_unlock:
+	xe_bo_unlock(bo);
+	return ret;
+}
+
+static inline dma_addr_t i915_gem_object_get_dma_address(const struct xe_bo *bo, pgoff_t n)
+{
+	/* Should never be called */
+	WARN_ON(1);
+	return n;
+}
+
+#endif
diff --git a/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object_frontbuffer.h b/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object_frontbuffer.h
index 227965e5f7846..6d883aca48b6e 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object_frontbuffer.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object_frontbuffer.h
@@ -3,8 +3,8 @@
  * Copyright © 2022 Intel Corporation
  */
 
-#ifndef _I915_GEM_OBJECT_H_
-#define _I915_GEM_OBJECT_H_
+#ifndef _I915_GEM_OBJECT_FB_H_
+#define _I915_GEM_OBJECT_FB_H_
 
 #define i915_gem_object_get_frontbuffer(obj)		NULL
 #define i915_gem_object_set_frontbuffer(obj, front)	(front)
diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_gem_stolen.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_gem_stolen.h
index 32f60258ded69..888e7a87a9257 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/i915_gem_stolen.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_gem_stolen.h
@@ -1,5 +1,5 @@
-#ifndef _I915_GEM_OBJECT_H_
-#define _I915_GEM_OBJECT_H_
+#ifndef _I915_GEM_STOLEN_H_
+#define _I915_GEM_STOLEN_H_
 
 #include "xe_ttm_stolen_mgr.h"
 #include "xe_res_cursor.h"
diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
index 9424144b1b5aa..23f2d037c313e 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
@@ -19,4 +19,10 @@ struct i915_vma {
 #define i915_ggtt_clear_scanout(bo) do { } while (0)
 
 #define i915_vma_fence_id(vma) -1
+
+static inline u32 i915_ggtt_offset(const struct i915_vma *vma)
+{
+	return vma->node.start;
+}
+
 #endif
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Intel-xe] [PATCH 08/10] more reverts
  2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
                   ` (6 preceding siblings ...)
  2023-10-25 10:20 ` [Intel-xe] [PATCH 07/10] Update compat headers Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
  2023-10-25 10:20 ` [Intel-xe] [PATCH 09/10] drm/i915/display: Use i915_gem_object_get_dma_address to get dma address Maarten Lankhorst
  2023-10-25 10:20 ` [Intel-xe] [PATCH 10/10] revert more (fbc) Maarten Lankhorst
  9 siblings, 0 replies; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
  To: intel-xe

---
 drivers/gpu/drm/i915/display/intel_cursor.c   |  8 ++---
 drivers/gpu/drm/i915/display/intel_display.c  | 35 -------------------
 .../drm/i915/display/intel_display_types.h    |  4 ---
 .../drm/i915/display/skl_universal_plane.c    |  4 ---
 4 files changed, 3 insertions(+), 48 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
index 8ed8a623fa98b..b342fad180ca5 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -30,17 +30,15 @@ static const u32 intel_cursor_formats[] = {
 
 static u32 intel_cursor_base(const struct intel_plane_state *plane_state)
 {
-	__maybe_unused struct drm_i915_private *dev_priv =
+	struct drm_i915_private *dev_priv =
 		to_i915(plane_state->uapi.plane->dev);
-	__maybe_unused const struct drm_framebuffer *fb = plane_state->hw.fb;
-	__maybe_unused const struct drm_i915_gem_object *obj = intel_fb_obj(fb);
+	const struct drm_framebuffer *fb = plane_state->hw.fb;
+	const struct drm_i915_gem_object *obj = intel_fb_obj(fb);
 	u32 base;
 
-#ifdef I915
 	if (DISPLAY_INFO(dev_priv)->cursor_needs_physical)
 		base = sg_dma_address(obj->mm.pages->sgl);
 	else
-#endif
 		base = intel_plane_ggtt_offset(plane_state);
 
 	return base + plane_state->view.color_plane[0].offset;
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 1b66d5adcebee..2f012ea75fba6 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -42,10 +42,8 @@
 #include <drm/drm_probe_helper.h>
 #include <drm/drm_rect.h>
 
-#ifdef I915
 #include "gem/i915_gem_lmem.h"
 #include "gem/i915_gem_object.h"
-#endif
 
 #include "g4x_dp.h"
 #include "g4x_hdmi.h"
@@ -7121,39 +7119,6 @@ static void intel_atomic_cleanup_work(struct work_struct *work)
 	intel_atomic_helper_free_state(i915);
 }
 
-#ifndef I915
-static int i915_gem_object_read_from_page(struct xe_bo *bo,
-					  u32 ofs, u64 *ptr, u32 size)
-{
-	struct ttm_bo_kmap_obj map;
-	void *virtual;
-	bool is_iomem;
-	int ret;
-
-	XE_WARN_ON(size != 8);
-
-	ret = xe_bo_lock(bo, true);
-	if (ret)
-		return ret;
-
-	ret = ttm_bo_kmap(&bo->ttm, ofs >> PAGE_SHIFT, 1, &map);
-	if (ret)
-		goto out_unlock;
-
-	ofs &= ~PAGE_MASK;
-	virtual = ttm_kmap_obj_virtual(&map, &is_iomem);
-	if (is_iomem)
-		*ptr = readq((void __iomem *)(virtual + ofs));
-	else
-		*ptr = *(u64 *)(virtual + ofs);
-
-	ttm_bo_kunmap(&map);
-out_unlock:
-	xe_bo_unlock(bo);
-	return ret;
-}
-#endif
-
 static void intel_atomic_prepare_plane_clear_colors(struct intel_atomic_state *state)
 {
 	struct drm_i915_private *i915 = to_i915(state->base.dev);
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 1861372077f01..e7d4cdfbd62de 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -2115,11 +2115,7 @@ intel_crtc_needs_color_update(const struct intel_crtc_state *crtc_state)
 
 static inline u32 intel_plane_ggtt_offset(const struct intel_plane_state *plane_state)
 {
-#ifdef I915
 	return i915_ggtt_offset(plane_state->ggtt_vma);
-#else
-	return plane_state->ggtt_vma->node.start;
-#endif
 }
 
 static inline struct intel_frontbuffer *
diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
index 7d91344ec1aa2..5de0cff00e7d5 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -2454,15 +2454,11 @@ skl_get_initial_plane_config(struct intel_crtc *crtc,
 		fb->modifier = DRM_FORMAT_MOD_LINEAR;
 		break;
 	case PLANE_CTL_TILED_X:
-#ifdef I915
 		plane_config->tiling = I915_TILING_X;
-#endif
 		fb->modifier = I915_FORMAT_MOD_X_TILED;
 		break;
 	case PLANE_CTL_TILED_Y:
-#ifdef I915
 		plane_config->tiling = I915_TILING_Y;
-#endif
 		if (val & PLANE_CTL_RENDER_DECOMPRESSION_ENABLE)
 			if (DISPLAY_VER(dev_priv) >= 14)
 				fb->modifier = I915_FORMAT_MOD_4_TILED_MTL_RC_CCS;
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Intel-xe] [PATCH 09/10] drm/i915/display: Use i915_gem_object_get_dma_address to get dma address
  2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
                   ` (7 preceding siblings ...)
  2023-10-25 10:20 ` [Intel-xe] [PATCH 08/10] more reverts Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
  2023-10-25 10:20 ` [Intel-xe] [PATCH 10/10] revert more (fbc) Maarten Lankhorst
  9 siblings, 0 replies; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
  To: intel-xe

Works better for xe like that. obj is no longer const.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_cursor.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
index b342fad180ca5..0d21c34f74990 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -23,6 +23,8 @@
 #include "intel_psr.h"
 #include "skl_watermark.h"
 
+#include "gem/i915_gem_object.h"
+
 /* Cursor formats */
 static const u32 intel_cursor_formats[] = {
 	DRM_FORMAT_ARGB8888,
@@ -33,11 +35,11 @@ static u32 intel_cursor_base(const struct intel_plane_state *plane_state)
 	struct drm_i915_private *dev_priv =
 		to_i915(plane_state->uapi.plane->dev);
 	const struct drm_framebuffer *fb = plane_state->hw.fb;
-	const struct drm_i915_gem_object *obj = intel_fb_obj(fb);
+	struct drm_i915_gem_object *obj = intel_fb_obj(fb);
 	u32 base;
 
 	if (DISPLAY_INFO(dev_priv)->cursor_needs_physical)
-		base = sg_dma_address(obj->mm.pages->sgl);
+		base = i915_gem_object_get_dma_address(obj, 0);
 	else
 		base = intel_plane_ggtt_offset(plane_state);
 
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Intel-xe] [PATCH 10/10] revert more (fbc)
  2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
                   ` (8 preceding siblings ...)
  2023-10-25 10:20 ` [Intel-xe] [PATCH 09/10] drm/i915/display: Use i915_gem_object_get_dma_address to get dma address Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
  2023-10-27 10:01   ` [Intel-xe] [10/10] " Hogander, Jouni
  9 siblings, 1 reply; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
  To: intel-xe

Should be a noop.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_fbc.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
index cd316e0caaa41..713210f6d7c13 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -453,7 +453,6 @@ static void g4x_fbc_program_cfb(struct intel_fbc *fbc)
 
 	intel_de_write(i915, DPFC_CB_BASE,
 		       i915_gem_stolen_node_offset(&fbc->compressed_fb));
-
 }
 
 static const struct intel_fbc_funcs g4x_fbc_funcs = {
@@ -612,8 +611,10 @@ static void ivb_fbc_activate(struct intel_fbc *fbc)
 	else if (DISPLAY_VER(i915) == 9)
 		skl_fbc_program_cfb_stride(fbc);
 
+#ifdef I915
 	if (intel_gt_support_legacy_fencing(to_gt(i915)))
 		snb_fbc_program_fence(fbc);
+#endif
 
 	intel_de_write(i915, ILK_DPFC_CONTROL(fbc->id),
 		       DPFC_CTL_EN | ivb_dpfc_ctl(fbc));
@@ -800,7 +801,6 @@ static int intel_fbc_alloc_cfb(struct intel_fbc *fbc,
 	drm_dbg_kms(&i915->drm,
 		    "reserved %llu bytes of contiguous stolen space for FBC, limit: %d\n",
 		    i915_gem_stolen_node_size(&fbc->compressed_fb), fbc->limit);
-
 	return 0;
 
 err_llb:
@@ -978,7 +978,7 @@ static void intel_fbc_update_state(struct intel_atomic_state *state,
 				   struct intel_crtc *crtc,
 				   struct intel_plane *plane)
 {
-	struct drm_i915_private *i915 = to_i915(state->base.dev);
+	__maybe_unused struct drm_i915_private *i915 = to_i915(state->base.dev);
 	const struct intel_crtc_state *crtc_state =
 		intel_atomic_get_new_crtc_state(state, crtc);
 	const struct intel_plane_state *plane_state =
@@ -993,7 +993,7 @@ static void intel_fbc_update_state(struct intel_atomic_state *state,
 
 	/* FBC1 compression interval: arbitrary choice of 1 second */
 	fbc_state->interval = drm_mode_vrefresh(&crtc_state->hw.adjusted_mode);
-
+#ifdef I915
 	fbc_state->fence_y_offset = intel_plane_fence_y_offset(plane_state);
 
 	drm_WARN_ON(&i915->drm, plane_state->flags & PLANE_HAS_FENCE &&
@@ -1002,6 +1002,7 @@ static void intel_fbc_update_state(struct intel_atomic_state *state,
 	if (plane_state->flags & PLANE_HAS_FENCE)
 		fbc_state->fence_id =  i915_vma_fence_id(plane_state->ggtt_vma);
 	else
+#endif
 		fbc_state->fence_id = -1;
 
 	fbc_state->cfb_stride = intel_fbc_cfb_stride(plane_state);
@@ -1011,6 +1012,7 @@ static void intel_fbc_update_state(struct intel_atomic_state *state,
 
 static bool intel_fbc_is_fence_ok(const struct intel_plane_state *plane_state)
 {
+#ifdef I915
 	struct drm_i915_private *i915 = to_i915(plane_state->uapi.plane->dev);
 
 	/*
@@ -1028,6 +1030,9 @@ static bool intel_fbc_is_fence_ok(const struct intel_plane_state *plane_state)
 	return DISPLAY_VER(i915) >= 9 ||
 		(plane_state->flags & PLANE_HAS_FENCE &&
 		 i915_vma_fence_id(plane_state->ggtt_vma) != -1);
+#else
+	return true;
+#endif
 }
 
 static bool intel_fbc_is_cfb_ok(const struct intel_plane_state *plane_state)
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [Intel-xe] [10/10] revert more (fbc)
  2023-10-25 10:20 ` [Intel-xe] [PATCH 10/10] revert more (fbc) Maarten Lankhorst
@ 2023-10-27 10:01   ` Hogander, Jouni
  0 siblings, 0 replies; 14+ messages in thread
From: Hogander, Jouni @ 2023-10-27 10:01 UTC (permalink / raw)
  To: intel-xe@lists.freedesktop.org, maarten.lankhorst@linux.intel.com

On Wed, 2023-10-25 at 12:20 +0200, Maarten Lankhorst wrote:
> Should be a noop.

Hello Maarten. I couldn't figure out for what branch this patch is
prepared for? All the removed ifdefs in this patch are already removed
earlier. See my (merged) patch set here:

https://patchwork.freedesktop.org/series/122905/

BR,

Jouni Högander

> 
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_fbc.c | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c
> b/drivers/gpu/drm/i915/display/intel_fbc.c
> index cd316e0caaa41..713210f6d7c13 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> @@ -453,7 +453,6 @@ static void g4x_fbc_program_cfb(struct intel_fbc
> *fbc)
>  
>         intel_de_write(i915, DPFC_CB_BASE,
>                        i915_gem_stolen_node_offset(&fbc-
> >compressed_fb));
> -
>  }
>  
>  static const struct intel_fbc_funcs g4x_fbc_funcs = {
> @@ -612,8 +611,10 @@ static void ivb_fbc_activate(struct intel_fbc
> *fbc)
>         else if (DISPLAY_VER(i915) == 9)
>                 skl_fbc_program_cfb_stride(fbc);
>  
> +#ifdef I915
>         if (intel_gt_support_legacy_fencing(to_gt(i915)))
>                 snb_fbc_program_fence(fbc);
> +#endif
>  
>         intel_de_write(i915, ILK_DPFC_CONTROL(fbc->id),
>                        DPFC_CTL_EN | ivb_dpfc_ctl(fbc));
> @@ -800,7 +801,6 @@ static int intel_fbc_alloc_cfb(struct intel_fbc
> *fbc,
>         drm_dbg_kms(&i915->drm,
>                     "reserved %llu bytes of contiguous stolen space
> for FBC, limit: %d\n",
>                     i915_gem_stolen_node_size(&fbc->compressed_fb),
> fbc->limit);
> -
>         return 0;
>  
>  err_llb:
> @@ -978,7 +978,7 @@ static void intel_fbc_update_state(struct
> intel_atomic_state *state,
>                                    struct intel_crtc *crtc,
>                                    struct intel_plane *plane)
>  {
> -       struct drm_i915_private *i915 = to_i915(state->base.dev);
> +       __maybe_unused struct drm_i915_private *i915 = to_i915(state-
> >base.dev);
>         const struct intel_crtc_state *crtc_state =
>                 intel_atomic_get_new_crtc_state(state, crtc);
>         const struct intel_plane_state *plane_state =
> @@ -993,7 +993,7 @@ static void intel_fbc_update_state(struct
> intel_atomic_state *state,
>  
>         /* FBC1 compression interval: arbitrary choice of 1 second */
>         fbc_state->interval = drm_mode_vrefresh(&crtc_state-
> >hw.adjusted_mode);
> -
> +#ifdef I915
>         fbc_state->fence_y_offset =
> intel_plane_fence_y_offset(plane_state);
>  
>         drm_WARN_ON(&i915->drm, plane_state->flags & PLANE_HAS_FENCE
> &&
> @@ -1002,6 +1002,7 @@ static void intel_fbc_update_state(struct
> intel_atomic_state *state,
>         if (plane_state->flags & PLANE_HAS_FENCE)
>                 fbc_state->fence_id =  i915_vma_fence_id(plane_state-
> >ggtt_vma);
>         else
> +#endif
>                 fbc_state->fence_id = -1;
>  
>         fbc_state->cfb_stride = intel_fbc_cfb_stride(plane_state);
> @@ -1011,6 +1012,7 @@ static void intel_fbc_update_state(struct
> intel_atomic_state *state,
>  
>  static bool intel_fbc_is_fence_ok(const struct intel_plane_state
> *plane_state)
>  {
> +#ifdef I915
>         struct drm_i915_private *i915 = to_i915(plane_state-
> >uapi.plane->dev);
>  
>         /*
> @@ -1028,6 +1030,9 @@ static bool intel_fbc_is_fence_ok(const struct
> intel_plane_state *plane_state)
>         return DISPLAY_VER(i915) >= 9 ||
>                 (plane_state->flags & PLANE_HAS_FENCE &&
>                  i915_vma_fence_id(plane_state->ggtt_vma) != -1);
> +#else
> +       return true;
> +#endif
>  }
>  
>  static bool intel_fbc_is_cfb_ok(const struct intel_plane_state
> *plane_state)


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Intel-xe] [04/10] FIXME drm/i915/display: Use fence->set_deadline to boost requests
  2023-10-25 10:20 ` [Intel-xe] [PATCH 04/10] FIXME drm/i915/display: Use fence->set_deadline to boost requests Maarten Lankhorst
@ 2023-10-27 10:05   ` Hogander, Jouni
  0 siblings, 0 replies; 14+ messages in thread
From: Hogander, Jouni @ 2023-10-27 10:05 UTC (permalink / raw)
  To: intel-xe@lists.freedesktop.org, maarten.lankhorst@linux.intel.com

Hello Maarten,

We have ongoing discussion in gfx mailing list
(https://patchwork.freedesktop.org/series/125160/). I understood we
have now there clear path forward. I will prepare one more addresing
recent comments from Ville. That patch set which will take care of
this. After getting it merged into drm-intel-next I will backport it to
drm-xe-next and it will solve this.

BR,

Jouni Högander
On Wed, 2023-10-25 at 12:20 +0200, Maarten Lankhorst wrote:
> Instead of using a i915 specific method, use the generic helper to
> combine fences and set the deadline.
> 
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
>  .../gpu/drm/i915/display/intel_atomic_plane.c | 47 ++++-------------
> --
>  drivers/gpu/drm/i915/display/intel_display.c  |  2 +
>  2 files changed, 11 insertions(+), 38 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> index dd65498166fbf..98a59445e6f45 100644
> --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> @@ -1033,7 +1033,6 @@ static int
>  intel_prepare_plane_fb(struct drm_plane *_plane,
>                        struct drm_plane_state *_new_plane_state)
>  {
> -       struct i915_sched_attr attr = { .priority =
> I915_PRIORITY_DISPLAY };
>         struct intel_plane *plane = to_intel_plane(_plane);
>         struct intel_plane_state *new_plane_state =
>                 to_intel_plane_state(_new_plane_state);
> @@ -1072,49 +1071,20 @@ intel_prepare_plane_fb(struct drm_plane
> *_plane,
>                 }
>         }
>  
> -       if (new_plane_state->uapi.fence) { /* explicit fencing */
> -               i915_gem_fence_wait_priority(new_plane_state-
> >uapi.fence,
> -                                            &attr);
> -               ret = i915_sw_fence_await_dma_fence(&state-
> >commit_ready,
> -                                                   new_plane_state-
> >uapi.fence,
> -                                                  
> i915_fence_timeout(dev_priv),
> -                                                   GFP_KERNEL);
> -               if (ret < 0)
> +       if (obj) {
> +               ret = intel_plane_pin_fb(new_plane_state);
> +               if (ret)
>                         return ret;
>         }
>  
> -       if (!obj)
> -               return 0;
> -
> -
> -       ret = intel_plane_pin_fb(new_plane_state);
> +       /* prepare after pinning */
> +       ret = drm_gem_plane_helper_prepare_fb(_plane,
> _new_plane_state);
>         if (ret)
> -               return ret;
> +               goto unpin_fb;
>  
> -       i915_gem_object_wait_priority(obj, 0, &attr);
> -
> -       if (!new_plane_state->uapi.fence) { /* implicit fencing */
> -               struct dma_resv_iter cursor;
> -               struct dma_fence *fence;
> -
> -               ret = i915_sw_fence_await_reservation(&state-
> >commit_ready,
> -                                                     obj->base.resv,
> false,
> -                                                    
> i915_fence_timeout(dev_priv),
> -                                                     GFP_KERNEL);
> -               if (ret < 0)
> -                       goto unpin_fb;
> -
> -               dma_resv_iter_begin(&cursor, obj->base.resv,
> -                                   DMA_RESV_USAGE_WRITE);
> -               dma_resv_for_each_fence_unlocked(&cursor, fence) {
> -
>                        intel_display_rps_boost_after_vblank(new_plane_
> state->hw.crtc,
> -                                                            fence);
> -               }
> -               dma_resv_iter_end(&cursor);
> -       } else {
> +       if (new_plane_state->uapi.fence)
>                 intel_display_rps_boost_after_vblank(new_plane_state-
> >hw.crtc,
>                                                      new_plane_state-
> >uapi.fence);
> -       }
>  
>         /*
>          * We declare pageflips to be interactive and so merit a
> small bias
> @@ -1124,7 +1094,8 @@ intel_prepare_plane_fb(struct drm_plane
> *_plane,
>          * that are not quite steady state without resorting to
> forcing
>          * maximum clocks following a vblank miss (see
> do_rps_boost()).
>          */
> -       intel_display_rps_mark_interactive(dev_priv, state, true);
> +       if (obj)
> +               intel_display_rps_mark_interactive(dev_priv, state,
> true);
>  
>         return 0;
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index 478b8764101a2..1b66d5adcebee 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -6599,6 +6599,8 @@ static int intel_atomic_prepare_commit(struct
> intel_atomic_state *state)
>         if (ret < 0)
>                 return ret;
>  
> +       drm_atomic_helper_set_fence_deadline(state->base.dev, &state-
> >base);
> +
>         for_each_new_intel_crtc_in_state(state, crtc, crtc_state, i)
> {
>                 if (intel_crtc_needs_color_update(crtc_state))
>                         intel_color_prepare_commit(crtc_state);


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Intel-xe] [06/10] revert intel_frontbuffer changes.
  2023-10-25 10:20 ` [Intel-xe] [PATCH 06/10] revert intel_frontbuffer changes Maarten Lankhorst
@ 2023-10-27 10:17   ` Hogander, Jouni
  0 siblings, 0 replies; 14+ messages in thread
From: Hogander, Jouni @ 2023-10-27 10:17 UTC (permalink / raw)
  To: intel-xe@lists.freedesktop.org, maarten.lankhorst@linux.intel.com

On Wed, 2023-10-25 at 12:20 +0200, Maarten Lankhorst wrote:
> No functional change, just things removed.

Hello Maarten.

Instead of introducing completely new patch I think you should change
this as a fixup patch for "FIXME: drm/i915/display: Remaining changes
to make xe compile"

BR,

Jouni Högander

> 
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_frontbuffer.c | 7 ++++---
>  drivers/gpu/drm/i915/display/intel_frontbuffer.h | 4 ----
>  2 files changed, 4 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.c
> b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
> index d64ce5bfeca82..2ea37c0414a95 100644
> --- a/drivers/gpu/drm/i915/display/intel_frontbuffer.c
> +++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
> @@ -190,7 +190,7 @@ void __intel_fb_flush(struct intel_frontbuffer
> *front,
>                       enum fb_op_origin origin,
>                       unsigned int frontbuffer_bits)
>  {
> -       struct drm_i915_private *i915 = intel_bo_to_i915((front-
> >obj));
> +       struct drm_i915_private *i915 = intel_bo_to_i915(front->obj);
>  
>         if (origin == ORIGIN_CS) {
>                 spin_lock(&i915->display.fb_tracking.lock);
> @@ -259,6 +259,7 @@ static void frontbuffer_release(struct kref *ref)
>         drm_WARN_ON(&intel_bo_to_i915(obj)->drm, atomic_read(&front-
> >bits));
>  
>         i915_ggtt_clear_scanout(obj);
> +
>         ret = i915_gem_object_set_frontbuffer(obj, NULL);
>         drm_WARN_ON(&intel_bo_to_i915(obj)->drm, ret);
>         spin_unlock(&intel_bo_to_i915(obj)-
> >display.fb_tracking.lock);
> @@ -289,12 +290,12 @@ intel_frontbuffer_get(struct
> drm_i915_gem_object *obj)
>                          frontbuffer_retire,
>                          I915_ACTIVE_RETIRE_SLEEPS);
>         INIT_WORK(&front->flush_work, intel_frontbuffer_flush_work);
> +
>         spin_lock(&i915->display.fb_tracking.lock);
>         cur = i915_gem_object_set_frontbuffer(obj, front);
>         spin_unlock(&i915->display.fb_tracking.lock);
>         if (cur != front)
>                 kfree(front);
> -
>         return cur;
>  }
>  
> @@ -337,7 +338,7 @@ void intel_frontbuffer_track(struct
> intel_frontbuffer *old,
>         }
>  
>         if (new) {
> -               drm_WARN_ON(&intel_bo_to_i915(old->obj)->drm,
> +               drm_WARN_ON(&intel_bo_to_i915(new->obj)->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 00467d513e74d..abb51e8bb9200 100644
> --- a/drivers/gpu/drm/i915/display/intel_frontbuffer.h
> +++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
> @@ -28,10 +28,6 @@
>  #include <linux/bits.h>
>  #include <linux/kref.h>
>  
> -#ifndef I915
> -#include "xe_bo.h"
> -#endif
> -
>  #include "i915_active_types.h"
>  
>  struct drm_i915_private;


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2023-10-27 10:18 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
2023-10-25 10:20 ` [Intel-xe] [PATCH 01/10] revert fixme in intel_atomic_plane.c Maarten Lankhorst
2023-10-25 10:20 ` [Intel-xe] [PATCH 02/10] drm/atomic: Add drm_atomic_helper_set_fence_deadline() function Maarten Lankhorst
2023-10-25 10:20 ` [Intel-xe] [PATCH 03/10] drm/i915: Implement fence->set_deadline Maarten Lankhorst
2023-10-25 10:20 ` [Intel-xe] [PATCH 04/10] FIXME drm/i915/display: Use fence->set_deadline to boost requests Maarten Lankhorst
2023-10-27 10:05   ` [Intel-xe] [04/10] " Hogander, Jouni
2023-10-25 10:20 ` [Intel-xe] [PATCH 05/10] fixup xe i915_drv.h compat header Maarten Lankhorst
2023-10-25 10:20 ` [Intel-xe] [PATCH 06/10] revert intel_frontbuffer changes Maarten Lankhorst
2023-10-27 10:17   ` [Intel-xe] [06/10] " Hogander, Jouni
2023-10-25 10:20 ` [Intel-xe] [PATCH 07/10] Update compat headers Maarten Lankhorst
2023-10-25 10:20 ` [Intel-xe] [PATCH 08/10] more reverts Maarten Lankhorst
2023-10-25 10:20 ` [Intel-xe] [PATCH 09/10] drm/i915/display: Use i915_gem_object_get_dma_address to get dma address Maarten Lankhorst
2023-10-25 10:20 ` [Intel-xe] [PATCH 10/10] revert more (fbc) Maarten Lankhorst
2023-10-27 10:01   ` [Intel-xe] [10/10] " Hogander, Jouni

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.