mirror of
https://github.com/torvalds/linux.git
synced 2026-07-31 11:37:06 +02:00
drm/i915: Lookup the memory region first in the BIOS FB takeover
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>
This commit is contained in:
parent
0cd161e947
commit
a47720c545
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user