[PATCH 2/7] drm/i915: Don't pass the vma to parent->initial_plane->setup()

Ville Syrjala <[email protected]>
Newsgroups org.freedesktop.lists.intel-gfx,org.freedesktop.lists.intel-xe
Organization Intel Finland Oy - BIC 0357606-4 - c/o Alberga Business Park, 6 krs Bertel Jungin Aukio 5, 02600 Espoo, Finland
Message-ID <[email protected]>
From: Ville Syrjälä <[email protected]>

Stop passing the vma via intel_find_initial_plane_obj() to
parent->initial_plane->setup(), and instead just look up the
vma again in the i915 implementation (xe already did that
on account of using xe_fb_pin_ggtt_pin()).

The goal is to simplify the parent interface, and eventually
get rid of all this special case pinning code in the BIOS FB
readout path.

Signed-off-by: Ville Syrjälä <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_initial_plane.c | 5 +----
 drivers/gpu/drm/i915/i915_initial_plane.c          | 9 +++++++--
 drivers/gpu/drm/xe/display/xe_initial_plane.c      | 3 +--
 include/drm/intel/display_parent_interface.h       | 2 +-
 4 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_initial_plane.c b/drivers/gpu/drm/i915/display/intel_initial_plane.c
index 4c7e5de924cf..ea3defcc760b 100644
--- a/drivers/gpu/drm/i915/display/intel_initial_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_initial_plane.c
@@ -123,7 +123,6 @@ intel_find_initial_plane_obj(struct intel_crtc *crtc,
 	struct intel_plane *plane = to_intel_plane(crtc->base.primary);
 	struct intel_plane_state *plane_state = to_intel_plane_state(plane->base.state);
 	struct drm_framebuffer *fb;
-	struct i915_vma *vma;
 	int ret;
 
 	/*
@@ -135,7 +134,6 @@ intel_find_initial_plane_obj(struct intel_crtc *crtc,
 
 	if (intel_alloc_initial_plane_obj(display, plane_config)) {
 		fb = plane_config->fb;
-		vma = plane_config->vma;
 	} else {
 		const struct intel_plane_state *other_plane_state;
 
@@ -144,14 +142,13 @@ intel_find_initial_plane_obj(struct intel_crtc *crtc,
 			goto nofb;
 
 		fb = other_plane_state->hw.fb;
-		vma = other_plane_state->ggtt_vma;
 	}
 
 	plane_state->uapi.rotation = plane_config->rotation;
 	intel_fb_fill_view(to_intel_framebuffer(fb),
 			   plane_state->uapi.rotation, &plane_state->view);
 
-	ret = display->parent->initial_plane->setup(plane->base.state, plane_config, fb, vma);
+	ret = display->parent->initial_plane->setup(plane->base.state, plane_config, fb);
 	if (ret)
 		goto nofb;
 
diff --git a/drivers/gpu/drm/i915/i915_initial_plane.c b/drivers/gpu/drm/i915/i915_initial_plane.c
index 98858a78e46a..bd5fd11fdc49 100644
--- a/drivers/gpu/drm/i915/i915_initial_plane.c
+++ b/drivers/gpu/drm/i915/i915_initial_plane.c
@@ -250,11 +250,16 @@ i915_alloc_initial_plane_obj(struct drm_device *drm,
 static int
 i915_initial_plane_setup(struct drm_plane_state *_plane_state,
 			 struct intel_initial_plane_config *plane_config,
-			 struct drm_framebuffer *fb,
-			 struct i915_vma *vma)
+			 struct drm_framebuffer *fb)
 {
 	struct intel_plane_state *plane_state = to_intel_plane_state(_plane_state);
 	struct drm_i915_private *dev_priv = to_i915(_plane_state->plane->dev);
+	struct drm_gem_object *obj = intel_fb_bo(fb);
+	struct i915_vma *vma;
+
+	vma = i915_vma_instance(to_intel_bo(obj), &to_gt(dev_priv)->ggtt->vm, NULL);
+	if (IS_ERR(vma))
+		return PTR_ERR(vma);
 
 	__i915_vma_pin(vma);
 	plane_state->ggtt_vma = i915_vma_get(vma);
diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c
index 0f86b73036d0..1aff8a8304b0 100644
--- a/drivers/gpu/drm/xe/display/xe_initial_plane.c
+++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c
@@ -161,8 +161,7 @@ xe_alloc_initial_plane_obj(struct drm_device *drm,
 static int
 xe_initial_plane_setup(struct drm_plane_state *_plane_state,
 		       struct intel_initial_plane_config *plane_config,
-		       struct drm_framebuffer *fb,
-		       struct i915_vma *_unused)
+		       struct drm_framebuffer *fb)
 {
 	struct intel_plane_state *plane_state = to_intel_plane_state(_plane_state);
 	struct i915_vma *vma;
diff --git a/include/drm/intel/display_parent_interface.h b/include/drm/intel/display_parent_interface.h
index de395df9ca30..26aed8878b16 100644
--- a/include/drm/intel/display_parent_interface.h
+++ b/include/drm/intel/display_parent_interface.h
@@ -127,7 +127,7 @@ struct intel_display_hdcp_interface {
 struct intel_display_initial_plane_interface {
 	struct drm_gem_object *(*alloc_obj)(struct drm_device *drm, struct intel_initial_plane_config *plane_config);
 	int (*setup)(struct drm_plane_state *plane_state, struct intel_initial_plane_config *plane_config,
-		     struct drm_framebuffer *fb, struct i915_vma *vma);
+		     struct drm_framebuffer *fb);
 	void (*config_fini)(struct intel_initial_plane_config *plane_config);
 };
 
-- 
2.54.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.