From: Daniel Vetter <daniel@ffwll.ch>
To: "Christian König" <ckoenig.leichtzumerken@gmail.com>
Cc: ray.huang@amd.com, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 1/4] drm/ttm: add debugfs directory v2
Date: Tue, 22 Dec 2020 14:31:56 +0100 [thread overview]
Message-ID: <X+H1TB7AFi5iChOy@phenom.ffwll.local> (raw)
In-Reply-To: <20201218175538.1364-1-christian.koenig@amd.com>
On Fri, Dec 18, 2020 at 06:55:35PM +0100, Christian König wrote:
> As far as I can tell the buffer_count was never used by an
> userspace application.
>
> The number of BOs in the system is far better suited in
> debugfs than sysfs and we now should be able to add other
> information here as well.
>
> v2: add that additionally to sysfs
>
> Signed-off-by: Christian König <christian.koenig@amd.com>
> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Not sure where I acked this, but looks reasonable.
-Daniel
> ---
> drivers/gpu/drm/ttm/ttm_bo.c | 48 ++------------------------------
> drivers/gpu/drm/ttm/ttm_module.c | 4 +++
> drivers/gpu/drm/ttm/ttm_module.h | 6 ++--
> 3 files changed, 11 insertions(+), 47 deletions(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
> index 31e8b3da5563..cd55e3104e50 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
> @@ -44,8 +44,6 @@
>
> #include "ttm_module.h"
>
> -static void ttm_bo_global_kobj_release(struct kobject *kobj);
> -
> /*
> * ttm_global_mutex - protecting the global BO state
> */
> @@ -54,11 +52,6 @@ unsigned ttm_bo_glob_use_count;
> struct ttm_bo_global ttm_bo_glob;
> EXPORT_SYMBOL(ttm_bo_glob);
>
> -static struct attribute ttm_bo_count = {
> - .name = "bo_count",
> - .mode = S_IRUGO
> -};
> -
> /* default destructor */
> static void ttm_bo_default_destroy(struct ttm_buffer_object *bo)
> {
> @@ -84,32 +77,6 @@ static void ttm_bo_mem_space_debug(struct ttm_buffer_object *bo,
> }
> }
>
> -static ssize_t ttm_bo_global_show(struct kobject *kobj,
> - struct attribute *attr,
> - char *buffer)
> -{
> - struct ttm_bo_global *glob =
> - container_of(kobj, struct ttm_bo_global, kobj);
> -
> - return snprintf(buffer, PAGE_SIZE, "%d\n",
> - atomic_read(&glob->bo_count));
> -}
> -
> -static struct attribute *ttm_bo_global_attrs[] = {
> - &ttm_bo_count,
> - NULL
> -};
> -
> -static const struct sysfs_ops ttm_bo_global_ops = {
> - .show = &ttm_bo_global_show
> -};
> -
> -static struct kobj_type ttm_bo_glob_kobj_type = {
> - .release = &ttm_bo_global_kobj_release,
> - .sysfs_ops = &ttm_bo_global_ops,
> - .default_attrs = ttm_bo_global_attrs
> -};
> -
> static void ttm_bo_del_from_lru(struct ttm_buffer_object *bo)
> {
> struct ttm_bo_device *bdev = bo->bdev;
> @@ -1226,14 +1193,6 @@ size_t ttm_bo_dma_acc_size(struct ttm_bo_device *bdev,
> }
> EXPORT_SYMBOL(ttm_bo_dma_acc_size);
>
> -static void ttm_bo_global_kobj_release(struct kobject *kobj)
> -{
> - struct ttm_bo_global *glob =
> - container_of(kobj, struct ttm_bo_global, kobj);
> -
> - __free_page(glob->dummy_read_page);
> -}
> -
> static void ttm_bo_global_release(void)
> {
> struct ttm_bo_global *glob = &ttm_bo_glob;
> @@ -1245,6 +1204,7 @@ static void ttm_bo_global_release(void)
> kobject_del(&glob->kobj);
> kobject_put(&glob->kobj);
> ttm_mem_global_release(&ttm_mem_glob);
> + __free_page(glob->dummy_read_page);
> memset(glob, 0, sizeof(*glob));
> out:
> mutex_unlock(&ttm_global_mutex);
> @@ -1277,10 +1237,8 @@ static int ttm_bo_global_init(void)
> INIT_LIST_HEAD(&glob->device_list);
> atomic_set(&glob->bo_count, 0);
>
> - ret = kobject_init_and_add(
> - &glob->kobj, &ttm_bo_glob_kobj_type, ttm_get_kobj(), "buffer_objects");
> - if (unlikely(ret != 0))
> - kobject_put(&glob->kobj);
> + debugfs_create_atomic_t("buffer_objects", 0444, ttm_debugfs_root,
> + &glob->bo_count);
> out:
> mutex_unlock(&ttm_global_mutex);
> return ret;
> diff --git a/drivers/gpu/drm/ttm/ttm_module.c b/drivers/gpu/drm/ttm/ttm_module.c
> index c0906437cb1c..f6566603a60f 100644
> --- a/drivers/gpu/drm/ttm/ttm_module.c
> +++ b/drivers/gpu/drm/ttm/ttm_module.c
> @@ -32,12 +32,14 @@
> #include <linux/module.h>
> #include <linux/device.h>
> #include <linux/sched.h>
> +#include <linux/debugfs.h>
> #include <drm/drm_sysfs.h>
>
> #include "ttm_module.h"
>
> static DECLARE_WAIT_QUEUE_HEAD(exit_q);
> static atomic_t device_released;
> +struct dentry *ttm_debugfs_root;
>
> static struct device_type ttm_drm_class_type = {
> .name = "ttm",
> @@ -77,6 +79,7 @@ static int __init ttm_init(void)
> if (unlikely(ret != 0))
> goto out_no_dev_reg;
>
> + ttm_debugfs_root = debugfs_create_dir("ttm", NULL);
> return 0;
> out_no_dev_reg:
> atomic_set(&device_released, 1);
> @@ -94,6 +97,7 @@ static void __exit ttm_exit(void)
> */
>
> wait_event(exit_q, atomic_read(&device_released) == 1);
> + debugfs_remove(ttm_debugfs_root);
> }
>
> module_init(ttm_init);
> diff --git a/drivers/gpu/drm/ttm/ttm_module.h b/drivers/gpu/drm/ttm/ttm_module.h
> index 45fa318c1585..2f03c2fcf570 100644
> --- a/drivers/gpu/drm/ttm/ttm_module.h
> +++ b/drivers/gpu/drm/ttm/ttm_module.h
> @@ -31,10 +31,12 @@
> #ifndef _TTM_MODULE_H_
> #define _TTM_MODULE_H_
>
> -#include <linux/kernel.h>
> +#define TTM_PFX "[TTM] "
> +
> struct kobject;
> +struct dentry;
>
> -#define TTM_PFX "[TTM] "
> extern struct kobject *ttm_get_kobj(void);
> +extern struct dentry *ttm_debugfs_root;
>
> #endif /* _TTM_MODULE_H_ */
> --
> 2.25.1
>
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2020-12-22 13:32 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-18 17:55 [PATCH 1/4] drm/ttm: add debugfs directory v2 Christian König
2020-12-18 17:55 ` [PATCH 2/4] drm/ttm: add a debugfs file for the global page pools Christian König
2020-12-22 13:36 ` Daniel Vetter
2020-12-18 17:55 ` [PATCH 3/4] drm/ttm: add debugfs entry to test pool shrinker Christian König
2020-12-22 13:43 ` Daniel Vetter
2020-12-18 17:55 ` [PATCH 4/4] drm/ttm: optimize ttm pool shrinker a bit Christian König
2020-12-22 13:51 ` Daniel Vetter
2021-01-07 12:49 ` Christian König
2021-01-07 16:38 ` Daniel Vetter
2021-01-19 12:11 ` Christian König
2021-01-19 13:22 ` Daniel Vetter
2020-12-22 13:31 ` Daniel Vetter [this message]
-- strict thread matches above, loose matches on Subject: below --
2021-01-19 12:18 [PATCH 1/4] drm/ttm: add debugfs directory v2 Christian König
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=X+H1TB7AFi5iChOy@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=ckoenig.leichtzumerken@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=ray.huang@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).