[PATCH] drm: Merge drm_info.c into drm_debugfs.c

Daniel Vetter daniel at ffwll.ch
Thu Nov 22 08:52:42 UTC 2018


On Wed, Nov 21, 2018 at 10:35:10PM +0100, Daniel Vetter wrote:
> Ever since
> 
> commit cb6458f97b53d7f73043206c18014b3ca63ac345
> Author: Daniel Vetter <daniel.vetter at ffwll.ch>
> Date:   Thu Aug 8 15:41:34 2013 +0200
> 
>     drm: remove procfs code, take 2
> 
> Having the code shared between procfs and debugfs in the separate
> drm_info.c file stopped making sense. Merge them.
> 
> Noticed because Lyude asked some questions on irc about why we even
> have drm_info_node and I remember this old story.
> 
> Cc: Lyude Paul <lyude at redhat.com>
> Reviewed-by: Lyude Paul <lyude at redhat.com>
> Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>

Applied for drm-misc-next.
-Daniel

> ---
>  drivers/gpu/drm/Makefile       |   2 +-
>  drivers/gpu/drm/drm_debugfs.c  |  89 +++++++++++++++++++++
>  drivers/gpu/drm/drm_info.c     | 137 ---------------------------------
>  drivers/gpu/drm/drm_internal.h |   5 --
>  4 files changed, 90 insertions(+), 143 deletions(-)
>  delete mode 100644 drivers/gpu/drm/drm_info.c
> 
> diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
> index 576ba985e138..7c88f12096c5 100644
> --- a/drivers/gpu/drm/Makefile
> +++ b/drivers/gpu/drm/Makefile
> @@ -10,7 +10,7 @@ drm-y       :=	drm_auth.o drm_bufs.o drm_cache.o \
>  		drm_scatter.o drm_pci.o \
>  		drm_sysfs.o drm_hashtab.o drm_mm.o \
>  		drm_crtc.o drm_fourcc.o drm_modes.o drm_edid.o \
> -		drm_info.o drm_encoder_slave.o \
> +		drm_encoder_slave.o \
>  		drm_trace_points.o drm_global.o drm_prime.o \
>  		drm_rect.o drm_vma_manager.o drm_flip_work.o \
>  		drm_modeset_lock.o drm_atomic.o drm_bridge.o \
> diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
> index 373bd4c2b698..f8468eae0503 100644
> --- a/drivers/gpu/drm/drm_debugfs.c
> +++ b/drivers/gpu/drm/drm_debugfs.c
> @@ -32,6 +32,8 @@
>  #include <drm/drm_debugfs.h>
>  #include <drm/drm_edid.h>
>  #include <drm/drm_atomic.h>
> +#include <drm/drm_auth.h>
> +#include <drm/drm_gem.h>
>  #include <drm/drmP.h>
>  
>  #include "drm_internal.h"
> @@ -43,6 +45,93 @@
>   * Initialization, etc.
>   **************************************************/
>  
> +static int drm_name_info(struct seq_file *m, void *data)
> +{
> +	struct drm_info_node *node = (struct drm_info_node *) m->private;
> +	struct drm_minor *minor = node->minor;
> +	struct drm_device *dev = minor->dev;
> +	struct drm_master *master;
> +
> +	mutex_lock(&dev->master_mutex);
> +	master = dev->master;
> +	seq_printf(m, "%s", dev->driver->name);
> +	if (dev->dev)
> +		seq_printf(m, " dev=%s", dev_name(dev->dev));
> +	if (master && master->unique)
> +		seq_printf(m, " master=%s", master->unique);
> +	if (dev->unique)
> +		seq_printf(m, " unique=%s", dev->unique);
> +	seq_printf(m, "\n");
> +	mutex_unlock(&dev->master_mutex);
> +
> +	return 0;
> +}
> +
> +static int drm_clients_info(struct seq_file *m, void *data)
> +{
> +	struct drm_info_node *node = (struct drm_info_node *) m->private;
> +	struct drm_device *dev = node->minor->dev;
> +	struct drm_file *priv;
> +	kuid_t uid;
> +
> +	seq_printf(m,
> +		   "%20s %5s %3s master a %5s %10s\n",
> +		   "command",
> +		   "pid",
> +		   "dev",
> +		   "uid",
> +		   "magic");
> +
> +	/* dev->filelist is sorted youngest first, but we want to present
> +	 * oldest first (i.e. kernel, servers, clients), so walk backwardss.
> +	 */
> +	mutex_lock(&dev->filelist_mutex);
> +	list_for_each_entry_reverse(priv, &dev->filelist, lhead) {
> +		struct task_struct *task;
> +
> +		rcu_read_lock(); /* locks pid_task()->comm */
> +		task = pid_task(priv->pid, PIDTYPE_PID);
> +		uid = task ? __task_cred(task)->euid : GLOBAL_ROOT_UID;
> +		seq_printf(m, "%20s %5d %3d   %c    %c %5d %10u\n",
> +			   task ? task->comm : "<unknown>",
> +			   pid_vnr(priv->pid),
> +			   priv->minor->index,
> +			   drm_is_current_master(priv) ? 'y' : 'n',
> +			   priv->authenticated ? 'y' : 'n',
> +			   from_kuid_munged(seq_user_ns(m), uid),
> +			   priv->magic);
> +		rcu_read_unlock();
> +	}
> +	mutex_unlock(&dev->filelist_mutex);
> +	return 0;
> +}
> +
> +static int drm_gem_one_name_info(int id, void *ptr, void *data)
> +{
> +	struct drm_gem_object *obj = ptr;
> +	struct seq_file *m = data;
> +
> +	seq_printf(m, "%6d %8zd %7d %8d\n",
> +		   obj->name, obj->size,
> +		   obj->handle_count,
> +		   kref_read(&obj->refcount));
> +	return 0;
> +}
> +
> +static int drm_gem_name_info(struct seq_file *m, void *data)
> +{
> +	struct drm_info_node *node = (struct drm_info_node *) m->private;
> +	struct drm_device *dev = node->minor->dev;
> +
> +	seq_printf(m, "  name     size handles refcount\n");
> +
> +	mutex_lock(&dev->object_name_lock);
> +	idr_for_each(&dev->object_name_idr, drm_gem_one_name_info, m);
> +	mutex_unlock(&dev->object_name_lock);
> +
> +	return 0;
> +}
> +
>  static const struct drm_info_list drm_debugfs_list[] = {
>  	{"name", drm_name_info, 0},
>  	{"clients", drm_clients_info, 0},
> diff --git a/drivers/gpu/drm/drm_info.c b/drivers/gpu/drm/drm_info.c
> deleted file mode 100644
> index 6b68e9088436..000000000000
> --- a/drivers/gpu/drm/drm_info.c
> +++ /dev/null
> @@ -1,137 +0,0 @@
> -/**
> - * \file drm_info.c
> - * DRM info file implementations
> - *
> - * \author Ben Gamari <bgamari at gmail.com>
> - */
> -
> -/*
> - * Created: Sun Dec 21 13:09:50 2008 by bgamari at gmail.com
> - *
> - * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
> - * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
> - * Copyright 2008 Ben Gamari <bgamari at gmail.com>
> - * All Rights Reserved.
> - *
> - * Permission is hereby granted, free of charge, to any person obtaining a
> - * copy of this software and associated documentation files (the "Software"),
> - * to deal in the Software without restriction, including without limitation
> - * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> - * and/or sell copies of the Software, and to permit persons to whom the
> - * Software is furnished to do so, subject to the following conditions:
> - *
> - * The above copyright notice and this permission notice (including the next
> - * paragraph) shall be included in all copies or substantial portions of the
> - * Software.
> - *
> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> - * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
> - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
> - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> - * OTHER DEALINGS IN THE SOFTWARE.
> - */
> -
> -#include <linux/seq_file.h>
> -#include <drm/drmP.h>
> -#include <drm/drm_gem.h>
> -
> -#include "drm_internal.h"
> -#include "drm_legacy.h"
> -
> -/**
> - * Called when "/proc/dri/.../name" is read.
> - *
> - * Prints the device name together with the bus id if available.
> - */
> -int drm_name_info(struct seq_file *m, void *data)
> -{
> -	struct drm_info_node *node = (struct drm_info_node *) m->private;
> -	struct drm_minor *minor = node->minor;
> -	struct drm_device *dev = minor->dev;
> -	struct drm_master *master;
> -
> -	mutex_lock(&dev->master_mutex);
> -	master = dev->master;
> -	seq_printf(m, "%s", dev->driver->name);
> -	if (dev->dev)
> -		seq_printf(m, " dev=%s", dev_name(dev->dev));
> -	if (master && master->unique)
> -		seq_printf(m, " master=%s", master->unique);
> -	if (dev->unique)
> -		seq_printf(m, " unique=%s", dev->unique);
> -	seq_printf(m, "\n");
> -	mutex_unlock(&dev->master_mutex);
> -
> -	return 0;
> -}
> -
> -/**
> - * Called when "/proc/dri/.../clients" is read.
> - *
> - */
> -int drm_clients_info(struct seq_file *m, void *data)
> -{
> -	struct drm_info_node *node = (struct drm_info_node *) m->private;
> -	struct drm_device *dev = node->minor->dev;
> -	struct drm_file *priv;
> -	kuid_t uid;
> -
> -	seq_printf(m,
> -		   "%20s %5s %3s master a %5s %10s\n",
> -		   "command",
> -		   "pid",
> -		   "dev",
> -		   "uid",
> -		   "magic");
> -
> -	/* dev->filelist is sorted youngest first, but we want to present
> -	 * oldest first (i.e. kernel, servers, clients), so walk backwardss.
> -	 */
> -	mutex_lock(&dev->filelist_mutex);
> -	list_for_each_entry_reverse(priv, &dev->filelist, lhead) {
> -		struct task_struct *task;
> -
> -		rcu_read_lock(); /* locks pid_task()->comm */
> -		task = pid_task(priv->pid, PIDTYPE_PID);
> -		uid = task ? __task_cred(task)->euid : GLOBAL_ROOT_UID;
> -		seq_printf(m, "%20s %5d %3d   %c    %c %5d %10u\n",
> -			   task ? task->comm : "<unknown>",
> -			   pid_vnr(priv->pid),
> -			   priv->minor->index,
> -			   drm_is_current_master(priv) ? 'y' : 'n',
> -			   priv->authenticated ? 'y' : 'n',
> -			   from_kuid_munged(seq_user_ns(m), uid),
> -			   priv->magic);
> -		rcu_read_unlock();
> -	}
> -	mutex_unlock(&dev->filelist_mutex);
> -	return 0;
> -}
> -
> -static int drm_gem_one_name_info(int id, void *ptr, void *data)
> -{
> -	struct drm_gem_object *obj = ptr;
> -	struct seq_file *m = data;
> -
> -	seq_printf(m, "%6d %8zd %7d %8d\n",
> -		   obj->name, obj->size,
> -		   obj->handle_count,
> -		   kref_read(&obj->refcount));
> -	return 0;
> -}
> -
> -int drm_gem_name_info(struct seq_file *m, void *data)
> -{
> -	struct drm_info_node *node = (struct drm_info_node *) m->private;
> -	struct drm_device *dev = node->minor->dev;
> -
> -	seq_printf(m, "  name     size handles refcount\n");
> -
> -	mutex_lock(&dev->object_name_lock);
> -	idr_for_each(&dev->object_name_idr, drm_gem_one_name_info, m);
> -	mutex_unlock(&dev->object_name_lock);
> -
> -	return 0;
> -}
> diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h
> index 0c4eb4a9ab31..c7a7d7ce5d1c 100644
> --- a/drivers/gpu/drm/drm_internal.h
> +++ b/drivers/gpu/drm/drm_internal.h
> @@ -56,11 +56,6 @@ void drm_prime_remove_buf_handle_locked(struct drm_prime_file_private *prime_fpr
>  struct drm_minor *drm_minor_acquire(unsigned int minor_id);
>  void drm_minor_release(struct drm_minor *minor);
>  
> -/* drm_info.c */
> -int drm_name_info(struct seq_file *m, void *data);
> -int drm_clients_info(struct seq_file *m, void* data);
> -int drm_gem_name_info(struct seq_file *m, void *data);
> -
>  /* drm_vblank.c */
>  void drm_vblank_disable_and_save(struct drm_device *dev, unsigned int pipe);
>  void drm_vblank_cleanup(struct drm_device *dev);
> -- 
> 2.19.1
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the dri-devel mailing list