]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
drm/msm: Add $debugfs/gem stats on resident objects
authorRob Clark <robdclark@chromium.org>
Mon, 5 Apr 2021 17:45:28 +0000 (10:45 -0700)
committerRob Clark <robdclark@chromium.org>
Wed, 7 Apr 2021 18:05:47 +0000 (11:05 -0700)
Currently nearly everything, other than newly allocated objects which
are not yet backed by pages, is pinned and resident in RAM.  But it will
be nice to have some stats on what is unpinned once that is supported.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Link: https://lore.kernel.org/r/20210405174532.1441497-6-robdclark@gmail.com
Signed-off-by: Rob Clark <robdclark@chromium.org>
drivers/gpu/drm/msm/msm_gem.c
drivers/gpu/drm/msm/msm_gem.h

index 46d3a96dce86ef1046c154073d623521f9450ff6..124306bec6f84f3871eec5169a8a42b55518932f 100644 (file)
@@ -902,6 +902,11 @@ void msm_gem_describe(struct drm_gem_object *obj, struct seq_file *m,
                stats->active.size += obj->size;
        }
 
+       if (msm_obj->pages) {
+               stats->resident.count++;
+               stats->resident.size += obj->size;
+       }
+
        switch (msm_obj->madv) {
        case __MSM_MADV_PURGED:
                stats->purged.count++;
@@ -991,6 +996,8 @@ void msm_gem_describe_objects(struct list_head *list, struct seq_file *m)
                        stats.all.count, stats.all.size);
        seq_printf(m, "Active:    %4d objects, %9zu bytes\n",
                        stats.active.count, stats.active.size);
+       seq_printf(m, "Resident:  %4d objects, %9zu bytes\n",
+                       stats.resident.count, stats.resident.size);
        seq_printf(m, "Purgeable: %4d objects, %9zu bytes\n",
                        stats.purgeable.count, stats.purgeable.size);
        seq_printf(m, "Purged:    %4d objects, %9zu bytes\n",
index 1ee06b34582d9cc75a01f12a2becbed2387f36fd..4ac0062312d4afea27f39220c842ffd0f7ce33f0 100644 (file)
@@ -162,13 +162,13 @@ struct drm_gem_object *msm_gem_import(struct drm_device *dev,
                struct dma_buf *dmabuf, struct sg_table *sgt);
 __printf(2, 3)
 void msm_gem_object_set_name(struct drm_gem_object *bo, const char *fmt, ...);
-#ifdef CONFIG_DEBUG_FS
 
+#ifdef CONFIG_DEBUG_FS
 struct msm_gem_stats {
        struct {
                unsigned count;
                size_t size;
-       } all, active, purgeable, purged;
+       } all, active, resident, purgeable, purged;
 };
 
 void msm_gem_describe(struct drm_gem_object *obj, struct seq_file *m,