public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915/display: Fix phys_base to be relative not absolute
@ 2023-11-05 17:27 Paz Zcharya
  2023-11-15  3:13 ` [Intel-gfx] " Rodrigo Vivi
  0 siblings, 1 reply; 10+ messages in thread
From: Paz Zcharya @ 2023-11-05 17:27 UTC (permalink / raw)
  To: matthew.auld, Tvrtko Ursulin
  Cc: Sean Paul, Subrata Banik, Manasi Navare, Marcin Wojtas,
	Drew Davenport, Paz Zcharya, Andrzej Hajda, Daniel Vetter,
	David Airlie, Jani Nikula, Joonas Lahtinen, Jouni Högander,
	Nirmoy Das, Rodrigo Vivi, Tvrtko Ursulin, Ville Syrjälä,
	dri-devel, intel-gfx, linux-kernel

Fix the value of variable `phys_base` to be the relative offset in
stolen memory, and not the absolute offset of the GSM.

Currently, the value of `phys_base` is set to "Surface Base Address,"
which in the case of Meter Lake is 0xfc00_0000. This causes the
function `i915_gem_object_create_region_at` to fail in line 128, when
it attempts to verify that the range does not overflow:

if (range_overflows(offset, size, resource_size(&mem->region)))
      return ERR_PTR(-EINVAL);

where:
  offset = 0xfc000000
  size = 0x8ca000
  mem->region.end + 1 = 0x4400000
  mem->region.start = 0x800000
  resource_size(&mem->region) = 0x3c00000

call stack:
  i915_gem_object_create_region_at
  initial_plane_vma
  intel_alloc_initial_plane_obj
  intel_find_initial_plane_obj
  intel_crtc_initial_plane_config

Looking at the flow coming next, we see that `phys_base` is only used
once, in function `_i915_gem_object_stolen_init`, in the context of
the offset *in* the stolen memory. Combining that with an
examinination of the history of the file seems to indicate the
current value set is invalid.

call stack (functions using `phys_base`)
  _i915_gem_object_stolen_init
  __i915_gem_object_create_region
  i915_gem_object_create_region_at
  initial_plane_vma
  intel_alloc_initial_plane_obj
  intel_find_initial_plane_obj
  intel_crtc_initial_plane_config

[drm:_i915_gem_object_stolen_init] creating preallocated stolen
object: stolen_offset=0x0000000000000000, size=0x00000000008ca000

Signed-off-by: Paz Zcharya <pazz@chromium.org>
---

 drivers/gpu/drm/i915/display/intel_plane_initial.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_plane_initial.c b/drivers/gpu/drm/i915/display/intel_plane_initial.c
index a55c09cbd0e4..e696cb13756a 100644
--- a/drivers/gpu/drm/i915/display/intel_plane_initial.c
+++ b/drivers/gpu/drm/i915/display/intel_plane_initial.c
@@ -90,7 +90,7 @@ initial_plane_vma(struct drm_i915_private *i915,
 			"Using phys_base=%pa, based on initial plane programming\n",
 			&phys_base);
 	} else {
-		phys_base = base;
+		phys_base = 0;
 		mem = i915->mm.stolen_region;
 	}
 
-- 
2.42.0.869.gea05f2083d-goog


^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2023-11-30 16:25 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-05 17:27 [PATCH] drm/i915/display: Fix phys_base to be relative not absolute Paz Zcharya
2023-11-15  3:13 ` [Intel-gfx] " Rodrigo Vivi
2023-11-17 23:01   ` Paz Zcharya
2023-11-21 12:06     ` Andrzej Hajda
2023-11-22 13:26       ` Andrzej Hajda
2023-11-28  1:20         ` Paz Zcharya
2023-11-28  3:47         ` Paz Zcharya
2023-11-28 11:12           ` Andrzej Hajda
2023-11-28 11:19             ` Paz Zcharya
2023-11-30 16:24             ` Paz Zcharya

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox