[PATCH 08/10] drm/i915: Lookup the memory region first in the BIOS FB takeover
Ville Syrjala
ville.syrjala at linux.intel.com
Thu Mar 13 14:08:36 UTC 2025
From: Ville Syrjälä <ville.syrjala at linux.intel.com>
When doing the BIOS FB takeover let's look up the appropriate
memory region first. If it doesn't exist there's not much point
in doing the PTE read/etc either.
Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
---
.../drm/i915/display/intel_plane_initial.c | 36 +++++++++----------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_plane_initial.c b/drivers/gpu/drm/i915/display/intel_plane_initial.c
index 5f75ef4ba3b1..d522da7000ff 100644
--- a/drivers/gpu/drm/i915/display/intel_plane_initial.c
+++ b/drivers/gpu/drm/i915/display/intel_plane_initial.c
@@ -75,6 +75,15 @@ initial_plane_phys_lmem(struct intel_display *display,
dma_addr_t dma_addr;
u32 base;
+ mem_type = initial_plane_memory_type(i915);
+ mem = intel_memory_region_by_type(i915, mem_type);
+ if (!mem) {
+ drm_dbg_kms(display->drm,
+ "Initial plane memory region (type %s) not initialized\n",
+ intel_memory_type_str(mem_type));
+ return false;
+ }
+
base = round_down(plane_config->base, I915_GTT_MIN_ALIGNMENT);
dma_addr = intel_ggtt_read_entry(&ggtt->vm, base, &is_present, &is_local);
@@ -91,15 +100,6 @@ initial_plane_phys_lmem(struct intel_display *display,
return false;
}
- mem_type = initial_plane_memory_type(i915);
- mem = intel_memory_region_by_type(i915, mem_type);
- if (!mem) {
- drm_dbg_kms(display->drm,
- "Initial plane memory region (type %s) not initialized\n",
- intel_memory_type_str(mem_type));
- return false;
- }
-
/*
* On lmem we don't currently expect this to
* ever be placed in the stolen portion.
@@ -133,6 +133,15 @@ initial_plane_phys_smem(struct intel_display *display,
dma_addr_t dma_addr;
u32 base;
+ mem_type = initial_plane_memory_type(i915);
+ mem = intel_memory_region_by_type(i915, mem_type);
+ if (!mem) {
+ drm_dbg_kms(display->drm,
+ "Initial plane memory region (type %s) not initialized\n",
+ intel_memory_type_str(mem_type));
+ return false;
+ }
+
base = round_down(plane_config->base, I915_GTT_MIN_ALIGNMENT);
dma_addr = intel_ggtt_read_entry(&ggtt->vm, base, &is_present, &is_local);
@@ -149,15 +158,6 @@ initial_plane_phys_smem(struct intel_display *display,
return false;
}
- mem_type = initial_plane_memory_type(i915);
- mem = intel_memory_region_by_type(i915, mem_type);
- if (!mem) {
- drm_dbg_kms(display->drm,
- "Initial plane memory region (type %s) not initialized\n",
- intel_memory_type_str(mem_type));
- return false;
- }
-
if (dma_addr < mem->region.start || dma_addr > mem->region.end) {
drm_err(display->drm,
"Initial plane programming using invalid range, dma_addr=%pa (%s [%pa-%pa])\n",
--
2.45.3
More information about the Intel-gfx
mailing list