[PATCH v2 09/15] drm/i915: Fix MTL initial plane readout
Andrzej Hajda
andrzej.hajda at intel.com
Tue Dec 19 10:58:36 UTC 2023
On 15.12.2023 11:59, Ville Syrjala wrote:
> 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.
>
> 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;
> + }
Code duplication suggests, we could try to move this out ifs.
The extra check should be harmless in case of 1:1.
Regards
Andrzej
> }
>
> - if (!mem)
> - return NULL;
> -
> size = round_up(plane_config->base + plane_config->size,
> mem->min_page_size);
> size -= base;
More information about the Intel-gfx
mailing list