If the regions query fails then the error will be encoded in the
item.length, while the ioctl will still return success.

Reported-by: Ville Syrjala <[email protected]>
Signed-off-by: Matthew Auld <[email protected]>
---
 lib/i915/intel_memory_region.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/lib/i915/intel_memory_region.c b/lib/i915/intel_memory_region.c
index 144ae12c..e1e210f2 100644
--- a/lib/i915/intel_memory_region.c
+++ b/lib/i915/intel_memory_region.c
@@ -119,6 +119,13 @@ struct drm_i915_query_memory_regions 
*gem_get_query_memory_regions(int fd)
        memset(&item, 0, sizeof(item));
        item.query_id = DRM_I915_QUERY_MEMORY_REGIONS;
        i915_query_items(fd, &item, 1);
+       /*
+        * Any DRM_I915_QUERY_MEMORY_REGIONS specific errors are encoded in the
+        * item.length, even though the ioctl might still return success.
+        */
+       igt_assert_f(item.length > 0,
+                    "DRM_I915_QUERY_MEMORY_REGIONS failed with %d\n",
+                    item.length);
 
        query_info = calloc(1, item.length);
 
-- 
2.26.3

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to