]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/etnaviv: Add fdinfo support for memory stats
authorChristian Gmeiner <cgmeiner@igalia.com>
Thu, 21 Nov 2024 09:24:08 +0000 (10:24 +0100)
committerLucas Stach <l.stach@pengutronix.de>
Tue, 3 Dec 2024 17:39:31 +0000 (18:39 +0100)
Use the new helper to export stats about memory usage.

Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
drivers/gpu/drm/etnaviv/etnaviv_drv.c
drivers/gpu/drm/etnaviv/etnaviv_gem.c

index 9b4e2f4b1bc711de6bf65c122d8f4e3591c1c2e2..1927669da1f84b23bb5a68c1c3df33f98e96f756 100644 (file)
@@ -488,7 +488,16 @@ static const struct drm_ioctl_desc etnaviv_ioctls[] = {
        ETNA_IOCTL(PM_QUERY_SIG, pm_query_sig, DRM_RENDER_ALLOW),
 };
 
-DEFINE_DRM_GEM_FOPS(fops);
+static void etnaviv_show_fdinfo(struct drm_printer *p, struct drm_file *file)
+{
+       drm_show_memory_stats(p, file);
+}
+
+static const struct file_operations fops = {
+       .owner = THIS_MODULE,
+       DRM_GEM_FOPS,
+       .show_fdinfo = drm_show_fdinfo,
+};
 
 static const struct drm_driver etnaviv_drm_driver = {
        .driver_features    = DRIVER_GEM | DRIVER_RENDER,
@@ -498,6 +507,7 @@ static const struct drm_driver etnaviv_drm_driver = {
 #ifdef CONFIG_DEBUG_FS
        .debugfs_init       = etnaviv_debugfs_init,
 #endif
+       .show_fdinfo        = etnaviv_show_fdinfo,
        .ioctls             = etnaviv_ioctls,
        .num_ioctls         = DRM_ETNAVIV_NUM_IOCTLS,
        .fops               = &fops,
index da30179de02b53c6bfaee370ebd7df6b211f9c25..2f844e82bc46f5d48b3f2ebb2199fb9679df0e22 100644 (file)
@@ -540,6 +540,17 @@ void etnaviv_gem_obj_add(struct drm_device *dev, struct drm_gem_object *obj)
        mutex_unlock(&priv->gem_lock);
 }
 
+static enum drm_gem_object_status etnaviv_gem_status(struct drm_gem_object *obj)
+{
+       struct etnaviv_gem_object *etnaviv_obj = to_etnaviv_bo(obj);
+       enum drm_gem_object_status status = 0;
+
+       if (etnaviv_obj->pages)
+               status |= DRM_GEM_OBJECT_RESIDENT;
+
+       return status;
+}
+
 static const struct vm_operations_struct vm_ops = {
        .fault = etnaviv_gem_fault,
        .open = drm_gem_vm_open,
@@ -553,6 +564,7 @@ static const struct drm_gem_object_funcs etnaviv_gem_object_funcs = {
        .get_sg_table = etnaviv_gem_prime_get_sg_table,
        .vmap = etnaviv_gem_prime_vmap,
        .mmap = etnaviv_gem_mmap,
+       .status = etnaviv_gem_status,
        .vm_ops = &vm_ops,
 };