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
