diff mbox series

[v2] drm/i915: Check stolen memory size before calling drm_mm_init

Message ID 20220223194946.725328-1-jose.souza@intel.com (mailing list archive)
State New, archived
Headers show
Series [v2] drm/i915: Check stolen memory size before calling drm_mm_init | expand

Commit Message

Souza, Jose Feb. 23, 2022, 7:49 p.m. UTC
Add check for zero usable stolen memory before calling drm_mm_init
to support configurations where stolen memory exists but is fully
reserved.

Also skip memory test in cases that usable stolen is smaller than
page size(amount mapped and used to test memory).

v2:
- skiping test if available memory is smaller than page size (Lucas)

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Signed-off-by: Steve Carbonari <steven.carbonari@intel.com>
---
 drivers/gpu/drm/i915/gem/i915_gem_stolen.c | 9 ++++++---
 drivers/gpu/drm/i915/intel_memory_region.c | 8 ++++++--
 2 files changed, 12 insertions(+), 5 deletions(-)

Comments

Lucas De Marchi Feb. 23, 2022, 9:43 p.m. UTC | #1
On Wed, Feb 23, 2022 at 11:49:46AM -0800, Jose Souza wrote:
>Add check for zero usable stolen memory before calling drm_mm_init
>to support configurations where stolen memory exists but is fully
>reserved.
>
>Also skip memory test in cases that usable stolen is smaller than
>page size(amount mapped and used to test memory).
>
>v2:
>- skiping test if available memory is smaller than page size (Lucas)
>
>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
>Signed-off-by: Steve Carbonari <steven.carbonari@intel.com>


Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>

thanks
Lucas De Marchi
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
index b9c3196b91cab..636cdf8a73b0a 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
@@ -497,13 +497,16 @@  static int i915_gem_init_stolen(struct intel_memory_region *mem)
 	 * memory, so just consider the start. */
 	reserved_total = stolen_top - reserved_base;
 
+	i915->stolen_usable_size =
+		resource_size(&i915->dsm) - reserved_total;
+
 	drm_dbg(&i915->drm,
 		"Memory reserved for graphics device: %lluK, usable: %lluK\n",
 		(u64)resource_size(&i915->dsm) >> 10,
-		((u64)resource_size(&i915->dsm) - reserved_total) >> 10);
+		(u64)i915->stolen_usable_size >> 10);
 
-	i915->stolen_usable_size =
-		resource_size(&i915->dsm) - reserved_total;
+	if (i915->stolen_usable_size == 0)
+		return 0;
 
 	/* Basic memrange allocator for stolen space. */
 	drm_mm_init(&i915->mm.stolen, 0, i915->stolen_usable_size);
diff --git a/drivers/gpu/drm/i915/intel_memory_region.c b/drivers/gpu/drm/i915/intel_memory_region.c
index c70d7e286a512..16ab62d605b1a 100644
--- a/drivers/gpu/drm/i915/intel_memory_region.c
+++ b/drivers/gpu/drm/i915/intel_memory_region.c
@@ -97,10 +97,14 @@  static int iomemtest(struct intel_memory_region *mem,
 		     bool test_all,
 		     const void *caller)
 {
-	resource_size_t last = resource_size(&mem->region) - PAGE_SIZE;
-	resource_size_t page;
+	resource_size_t last, page;
 	int err;
 
+	if (resource_size(&mem->region) < PAGE_SIZE)
+		return 0;
+
+	last = resource_size(&mem->region) - PAGE_SIZE;
+
 	/*
 	 * Quick test to check read/write access to the iomap (backing store).
 	 *