Message ID | 20180618141739.48151-10-noralf@tronnes.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, Jun 18, 2018 at 04:17:36PM +0200, Noralf Trønnes wrote: > Print the names of the internal clients currently attached. > > Signed-off-by: Noralf Trønnes <noralf@tronnes.org> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> > --- > drivers/gpu/drm/drm_client.c | 28 ++++++++++++++++++++++++++++ > drivers/gpu/drm/drm_debugfs.c | 7 +++++++ > include/drm/drm_client.h | 2 ++ > 3 files changed, 37 insertions(+) > > diff --git a/drivers/gpu/drm/drm_client.c b/drivers/gpu/drm/drm_client.c > index f1dc04d641cc..3ebb8fa34655 100644 > --- a/drivers/gpu/drm/drm_client.c > +++ b/drivers/gpu/drm/drm_client.c > @@ -405,3 +405,31 @@ void drm_client_framebuffer_delete(struct drm_client_buffer *buffer) > 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 > diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c > index b2482818fee8..50a20bfc07ea 100644 > --- a/drivers/gpu/drm/drm_debugfs.c > +++ b/drivers/gpu/drm/drm_debugfs.c > @@ -28,6 +28,7 @@ > #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> > @@ -164,6 +165,12 @@ int drm_debugfs_init(struct drm_minor *minor, int minor_id, > 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) { > diff --git a/include/drm/drm_client.h b/include/drm/drm_client.h > index 80fe21c86f69..c3a87d6c30fc 100644 > --- a/include/drm/drm_client.h > +++ b/include/drm/drm_client.h > @@ -151,4 +151,6 @@ struct drm_client_buffer * > 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 > -- > 2.15.1 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff --git a/drivers/gpu/drm/drm_client.c b/drivers/gpu/drm/drm_client.c index f1dc04d641cc..3ebb8fa34655 100644 --- a/drivers/gpu/drm/drm_client.c +++ b/drivers/gpu/drm/drm_client.c @@ -405,3 +405,31 @@ void drm_client_framebuffer_delete(struct drm_client_buffer *buffer) 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 diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c index b2482818fee8..50a20bfc07ea 100644 --- a/drivers/gpu/drm/drm_debugfs.c +++ b/drivers/gpu/drm/drm_debugfs.c @@ -28,6 +28,7 @@ #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> @@ -164,6 +165,12 @@ int drm_debugfs_init(struct drm_minor *minor, int minor_id, 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) { diff --git a/include/drm/drm_client.h b/include/drm/drm_client.h index 80fe21c86f69..c3a87d6c30fc 100644 --- a/include/drm/drm_client.h +++ b/include/drm/drm_client.h @@ -151,4 +151,6 @@ struct drm_client_buffer * 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
Print the names of the internal clients currently attached. Signed-off-by: Noralf Trønnes <noralf@tronnes.org> --- drivers/gpu/drm/drm_client.c | 28 ++++++++++++++++++++++++++++ drivers/gpu/drm/drm_debugfs.c | 7 +++++++ include/drm/drm_client.h | 2 ++ 3 files changed, 37 insertions(+)