drm/xe/uapi: restrict system wide accounting
authorMatthew Auld <matthew.auld@intel.com>
Fri, 31 Mar 2023 08:46:24 +0000 (09:46 +0100)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Thu, 21 Dec 2023 16:34:59 +0000 (11:34 -0500)
Since this is considered an info leak (system wide accounting), rather
hide behind perfmon_capable().

v2:
  - Without perfmon_capable() it likely makes more sense to report as zero,
    instead of reporting as used == total size. This should give similar
    behaviour as i915 which rather tracks free instead of used.

Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: José Roberto de Souza <jose.souza@intel.com>
Cc: Filip Hazubski <filip.hazubski@intel.com>
Cc: Carl Zhang <carl.zhang@intel.com>
Cc: Effie Yu <effie.yu@intel.com>
Cc: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/xe_query.c

index c4165fa3428e49ef5a23ebd564d7844368f0ce18..15e171ca7e62800bdeb1e9d04095033b85626e0d 100644 (file)
@@ -128,7 +128,8 @@ static int query_memory_usage(struct xe_device *xe,
        usage->regions[0].min_page_size = PAGE_SIZE;
        usage->regions[0].max_page_size = PAGE_SIZE;
        usage->regions[0].total_size = man->size << PAGE_SHIFT;
-       usage->regions[0].used = ttm_resource_manager_usage(man);
+       if (perfmon_capable())
+               usage->regions[0].used = ttm_resource_manager_usage(man);
        usage->num_regions = 1;
 
        for (i = XE_PL_VRAM0; i <= XE_PL_VRAM1; ++i) {
@@ -145,8 +146,13 @@ static int query_memory_usage(struct xe_device *xe,
                                SZ_1G;
                        usage->regions[usage->num_regions].total_size =
                                man->size;
-                       usage->regions[usage->num_regions++].used =
-                               ttm_resource_manager_usage(man);
+
+                       if (perfmon_capable()) {
+                               usage->regions[usage->num_regions].used =
+                                       ttm_resource_manager_usage(man);
+                       }
+
+                       usage->num_regions++;
                }
        }