Skip to content

Commit e896c13

Browse files
committed
drm/debugfs: Add internal client debugfs file
Print the names of the internal clients currently attached. Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Noralf Trønnes <noralf@tronnes.org> Link: https://patchwork.freedesktop.org/patch/msgid/20180703160354.59955-6-noralf@tronnes.org
1 parent 894a677 commit e896c13

File tree

3 files changed

+38
-0
lines changed

3 files changed

+38
-0
lines changed

drivers/gpu/drm/drm_client.c

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,3 +385,31 @@ void drm_client_framebuffer_delete(struct drm_client_buffer *buffer)
385385
drm_client_buffer_delete(buffer);
386386
}
387387
EXPORT_SYMBOL(drm_client_framebuffer_delete);
388+
389+
#ifdef CONFIG_DEBUG_FS
390+
static int drm_client_debugfs_internal_clients(struct seq_file *m, void *data)
391+
{
392+
struct drm_info_node *node = m->private;
393+
struct drm_device *dev = node->minor->dev;
394+
struct drm_printer p = drm_seq_file_printer(m);
395+
struct drm_client_dev *client;
396+
397+
mutex_lock(&dev->clientlist_mutex);
398+
list_for_each_entry(client, &dev->clientlist, list)
399+
drm_printf(&p, "%s\n", client->name);
400+
mutex_unlock(&dev->clientlist_mutex);
401+
402+
return 0;
403+
}
404+
405+
static const struct drm_info_list drm_client_debugfs_list[] = {
406+
{ "internal_clients", drm_client_debugfs_internal_clients, 0 },
407+
};
408+
409+
int drm_client_debugfs_init(struct drm_minor *minor)
410+
{
411+
return drm_debugfs_create_files(drm_client_debugfs_list,
412+
ARRAY_SIZE(drm_client_debugfs_list),
413+
minor->debugfs_root, minor);
414+
}
415+
#endif

drivers/gpu/drm/drm_debugfs.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include <linux/slab.h>
2929
#include <linux/export.h>
3030

31+
#include <drm/drm_client.h>
3132
#include <drm/drm_debugfs.h>
3233
#include <drm/drm_edid.h>
3334
#include <drm/drm_atomic.h>
@@ -164,6 +165,12 @@ int drm_debugfs_init(struct drm_minor *minor, int minor_id,
164165
DRM_ERROR("Failed to create framebuffer debugfs file\n");
165166
return ret;
166167
}
168+
169+
ret = drm_client_debugfs_init(minor);
170+
if (ret) {
171+
DRM_ERROR("Failed to create client debugfs file\n");
172+
return ret;
173+
}
167174
}
168175

169176
if (dev->driver->debugfs_init) {

include/drm/drm_client.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ struct drm_device;
1010
struct drm_file;
1111
struct drm_framebuffer;
1212
struct drm_gem_object;
13+
struct drm_minor;
1314
struct module;
1415

1516
/**
@@ -133,4 +134,6 @@ struct drm_client_buffer *
133134
drm_client_framebuffer_create(struct drm_client_dev *client, u32 width, u32 height, u32 format);
134135
void drm_client_framebuffer_delete(struct drm_client_buffer *buffer);
135136

137+
int drm_client_debugfs_init(struct drm_minor *minor);
138+
136139
#endif

0 commit comments

Comments
 (0)