drm_client_buffer_delete(buffer);
 }
 EXPORT_SYMBOL(drm_client_framebuffer_delete);
+
+#ifdef CONFIG_DEBUG_FS
+static int drm_client_debugfs_internal_clients(struct seq_file *m, void *data)
+{
+       struct drm_info_node *node = m->private;
+       struct drm_device *dev = node->minor->dev;
+       struct drm_printer p = drm_seq_file_printer(m);
+       struct drm_client_dev *client;
+
+       mutex_lock(&dev->clientlist_mutex);
+       list_for_each_entry(client, &dev->clientlist, list)
+               drm_printf(&p, "%s\n", client->name);
+       mutex_unlock(&dev->clientlist_mutex);
+
+       return 0;
+}
+
+static const struct drm_info_list drm_client_debugfs_list[] = {
+       { "internal_clients", drm_client_debugfs_internal_clients, 0 },
+};
+
+int drm_client_debugfs_init(struct drm_minor *minor)
+{
+       return drm_debugfs_create_files(drm_client_debugfs_list,
+                                       ARRAY_SIZE(drm_client_debugfs_list),
+                                       minor->debugfs_root, minor);
+}
+#endif
 
 #include <linux/slab.h>
 #include <linux/export.h>
 
+#include <drm/drm_client.h>
 #include <drm/drm_debugfs.h>
 #include <drm/drm_edid.h>
 #include <drm/drm_atomic.h>
                        DRM_ERROR("Failed to create framebuffer debugfs file\n");
                        return ret;
                }
+
+               ret = drm_client_debugfs_init(minor);
+               if (ret) {
+                       DRM_ERROR("Failed to create client debugfs file\n");
+                       return ret;
+               }
        }
 
        if (dev->driver->debugfs_init) {
 
 struct drm_file;
 struct drm_framebuffer;
 struct drm_gem_object;
+struct drm_minor;
 struct module;
 
 /**
 drm_client_framebuffer_create(struct drm_client_dev *client, u32 width, u32 height, u32 format);
 void drm_client_framebuffer_delete(struct drm_client_buffer *buffer);
 
+int drm_client_debugfs_init(struct drm_minor *minor);
+
 #endif