mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-23 05:56:14 -04:00
drm/i915: Fix MTL initial plane readout
MTL stolen memory looks more like local memory, so use the (now fixed) lmem path when doing the initial plane readout. Reviewed-by: Uma Shankar <uma.shankar@intel.com> Tested-by: Paz Zcharya <pazz@chromium.org> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240202224340.30647-10-ville.syrjala@linux.intel.com
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user