Skip to content

Commit

Permalink
drm/i915: Lookup the memory region first in the BIOS FB takeover
Browse files Browse the repository at this point in the history
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@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250313140838.29742-9-ville.syrjala@linux.intel.com
Reviewed-by: Jouni Högander <jouni.hogander@intel.com>
  • Loading branch information
Ville Syrjälä committed Apr 1, 2025
1 parent 0cd161e commit a47720c
Showing 1 changed file with 18 additions and 18 deletions.
36 changes: 18 additions & 18 deletions drivers/gpu/drm/i915/display/intel_plane_initial.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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.
Expand Down Expand Up @@ -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);
Expand All @@ -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",
Expand Down

0 comments on commit a47720c

Please sign in to comment.