drm/v3d: Expose memory stats through fdinfo
authorMaíra Canal <mcanal@igalia.com>
Thu, 11 Jul 2024 14:25:24 +0000 (11:25 -0300)
committerMaíra Canal <mcanal@igalia.com>
Sat, 13 Jul 2024 14:00:32 +0000 (11:00 -0300)
Use the common DRM function `drm_show_memory_stats()` to expose standard
fdinfo memory stats.

V3D exposes global GPU memory stats through debugfs. Those stats will be
preserved while the DRM subsystem doesn't have a standard solution to
expose global GPU stats.

Signed-off-by: Maíra Canal <mcanal@igalia.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240711142736.783816-1-mcanal@igalia.com
drivers/gpu/drm/v3d/v3d_bo.c
drivers/gpu/drm/v3d/v3d_drv.c

index a165cbcdd27b944ceeb9a8824d2f38cc4f1e7d05..ecb80fd75b1a0e2b2ec699134dca282f850be963 100644 (file)
 #include "v3d_drv.h"
 #include "uapi/drm/v3d_drm.h"
 
+static enum drm_gem_object_status v3d_gem_status(struct drm_gem_object *obj)
+{
+       struct v3d_bo *bo = to_v3d_bo(obj);
+       enum drm_gem_object_status res = 0;
+
+       if (bo->base.pages)
+               res |= DRM_GEM_OBJECT_RESIDENT;
+
+       return res;
+}
+
 /* Called DRM core on the last userspace/kernel unreference of the
  * BO.
  */
@@ -63,6 +74,7 @@ static const struct drm_gem_object_funcs v3d_gem_funcs = {
        .vmap = drm_gem_shmem_object_vmap,
        .vunmap = drm_gem_shmem_object_vunmap,
        .mmap = drm_gem_shmem_object_mmap,
+       .status = v3d_gem_status,
        .vm_ops = &drm_gem_shmem_vm_ops,
 };
 
index 491c638a4d7410665830577cd632f7860cc1c29e..d38628e4fc2f0f63c395adfdce552b9263a28f8b 100644 (file)
@@ -184,6 +184,8 @@ static void v3d_show_fdinfo(struct drm_printer *p, struct drm_file *file)
                drm_printf(p, "v3d-jobs-%s: \t%llu jobs\n",
                           v3d_queue_to_string(queue), jobs_completed);
        }
+
+       drm_show_memory_stats(p, file);
 }
 
 static const struct file_operations v3d_drm_fops = {