Commit a47720c5 authored by Ville Syrjälä's avatar Ville Syrjälä
Browse files

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: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250313140838.29742-9-ville.syrjala@linux.intel.com


Reviewed-by: default avatarJouni Högander <jouni.hogander@intel.com>
parent 0cd161e9
Loading
Loading
Loading
Loading
+18 −18
Original line number Diff line number Diff line
@@ -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",