[igt-dev] [PATCH i-g-t v2] lib/xe_query: fix vram_memory() and vram_if_possible()

Matthew Auld matthew.auld at intel.com
Thu Apr 6 08:21:57 UTC 2023


vram_memory() is meant to return VRAM if supported. If we call this on
igpu it should return zero. There is at least one user relying on this
in xe_mmap at vram, where we want to skip if the mask here is zero.

vram_if_possible() should account for the per GT VRAM when returning
the mask. Currently it just returns the mask for all VRAM instances.

v2 (Niranjana):
  - Squash into a single patch
  - Fold in the differences from the version by Matt Brost & Zbigniew

Reported-by: Gwan-gyeong Mun <gwan-gyeong.mun at intel.com>
Signed-off-by: Matthew Auld <matthew.auld at intel.com>
Cc: Niranjana Vishwanathapura <niranjana.vishwanathapura at intel.com>
Cc: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
Cc: Matthew Brost <matthew.brost at intel.com>
---
 lib/xe/xe_query.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/lib/xe/xe_query.c b/lib/xe/xe_query.c
index 24a258a5e..2b627a78a 100644
--- a/lib/xe/xe_query.c
+++ b/lib/xe/xe_query.c
@@ -380,7 +380,7 @@ uint64_t vram_memory(int fd, int gt)
 	igt_assert(xe_dev);
 	igt_assert(gt >= 0 && gt < xe_dev->number_gt);
 
-	return native_region_for_gt(xe_dev->gts, gt);
+	return xe_has_vram(fd) ? native_region_for_gt(xe_dev->gts, gt) : 0;
 }
 
 /**
@@ -393,11 +393,7 @@ uint64_t vram_memory(int fd, int gt)
  */
 uint64_t vram_if_possible(int fd, int gt)
 {
-	uint64_t regions = all_memory_regions(fd);
-	uint64_t system_memory = regions & 0x1;
-	uint64_t vram = regions & (~0x1);
-
-	return vram ? vram : system_memory;
+	return vram_memory(fd, gt) ?: system_memory(fd);
 }
 
 /**
-- 
2.39.2



More information about the igt-dev mailing list