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

Reply via email to