[PATCH v3 09/16] drm/i915: Fix MTL initial plane readout
Shankar, Uma
uma.shankar at intel.com
Mon Jan 22 15:09:23 UTC 2024
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces at lists.freedesktop.org> On Behalf Of Ville
> Syrjala
> Sent: Tuesday, January 16, 2024 1:26 PM
> To: intel-gfx at lists.freedesktop.org
> Subject: [PATCH v3 09/16] drm/i915: Fix MTL initial plane readout
>
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> MTL stolen memory looks more like local memory, so use the (now fixed) lmem
> path when doing the initial plane readout.
Looks Good to me.
Reviewed-by: Uma Shankar <uma.shankar at intel.com>
> Cc: Paz Zcharya <pazz at chromium.org>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
> .../drm/i915/display/intel_plane_initial.c | 25 +++++++++++++------
> 1 file changed, 18 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_plane_initial.c
> b/drivers/gpu/drm/i915/display/intel_plane_initial.c
> index db594ccf0323..c72d4cacf631 100644
> --- a/drivers/gpu/drm/i915/display/intel_plane_initial.c
> +++ b/drivers/gpu/drm/i915/display/intel_plane_initial.c
> @@ -59,7 +59,7 @@ initial_plane_vma(struct drm_i915_private *i915,
> return NULL;
>
> base = round_down(plane_config->base, I915_GTT_MIN_ALIGNMENT);
> - if (IS_DGFX(i915)) {
> + if (IS_DGFX(i915) || HAS_LMEMBAR_SMEM_STOLEN(i915)) {
> gen8_pte_t __iomem *gte = to_gt(i915)->ggtt->gsm;
> gen8_pte_t pte;
>
> @@ -73,11 +73,20 @@ initial_plane_vma(struct drm_i915_private *i915,
> }
>
> phys_base = pte & GEN12_GGTT_PTE_ADDR_MASK;
> - mem = i915->mm.regions[INTEL_REGION_LMEM_0];
> +
> + if (IS_DGFX(i915))
> + mem = i915->mm.regions[INTEL_REGION_LMEM_0];
> + else
> + mem = i915->mm.stolen_region;
> + if (!mem) {
> + drm_dbg_kms(&i915->drm,
> + "Initial plane memory region not
> initialized\n");
> + return NULL;
> + }
>
> /*
> - * We don't currently expect this to ever be placed in the
> - * stolen portion.
> + * On lmem we don't currently expect this to
> + * ever be placed in the stolen portion.
> */
> if (phys_base < mem->region.start || phys_base > mem-
> >region.end) {
> drm_err(&i915->drm,
> @@ -94,11 +103,13 @@ initial_plane_vma(struct drm_i915_private *i915,
> } else {
> phys_base = base;
> mem = i915->mm.stolen_region;
> + if (!mem) {
> + drm_dbg_kms(&i915->drm,
> + "Initial plane memory region not
> initialized\n");
> + return NULL;
> + }
> }
>
> - if (!mem)
> - return NULL;
> -
> size = round_up(plane_config->base + plane_config->size,
> mem->min_page_size);
> size -= base;
> --
> 2.41.0
More information about the Intel-gfx
mailing list