[Intel-gfx] [PATCH 5/6] drm/ttm: Initialize debugfs from ttm_global_init()
Daniel Vetter
daniel at ffwll.ch
Tue Jul 20 14:22:18 UTC 2021
On Mon, Jul 19, 2021 at 01:30:46PM -0500, Jason Ekstrand wrote:
> We create a bunch of debugfs entries as a side-effect of
> ttm_global_init() and then never clean them up. This isn't usually a
> problem because we free the whole debugfs directory on module unload.
> However, if the global reference count ever goes to zero and then
> ttm_global_init() is called again, we'll re-create those debugfs entries
> and debugfs will complain in dmesg that we're creating entries that
> already exist. This patch fixes this problem by changing the lifetime
> of the whole TTM debugfs directory to match that of the TTM global
> state.
>
> Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
> ---
> drivers/gpu/drm/ttm/ttm_device.c | 12 ++++++++++++
> drivers/gpu/drm/ttm/ttm_module.c | 4 ----
> 2 files changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_device.c b/drivers/gpu/drm/ttm/ttm_device.c
> index 519deea8e39b7..74e3b460132b3 100644
> --- a/drivers/gpu/drm/ttm/ttm_device.c
> +++ b/drivers/gpu/drm/ttm/ttm_device.c
> @@ -44,6 +44,8 @@ static unsigned ttm_glob_use_count;
> struct ttm_global ttm_glob;
> EXPORT_SYMBOL(ttm_glob);
>
> +struct dentry *ttm_debugfs_root;
> +
> static void ttm_global_release(void)
> {
> struct ttm_global *glob = &ttm_glob;
> @@ -53,6 +55,7 @@ static void ttm_global_release(void)
> goto out;
>
> ttm_pool_mgr_fini();
> + debugfs_remove(ttm_debugfs_root);
>
> __free_page(glob->dummy_read_page);
> memset(glob, 0, sizeof(*glob));
> @@ -73,6 +76,13 @@ static int ttm_global_init(void)
>
> si_meminfo(&si);
>
> + ttm_debugfs_root = debugfs_create_dir("ttm", NULL);
> + if (IS_ERR(ttm_debugfs_root)) {
> + ret = PTR_ERR(ttm_debugfs_root);
> + ttm_debugfs_root = NULL;
> + goto out;
> + }
> +
> /* Limit the number of pages in the pool to about 50% of the total
> * system memory.
> */
> @@ -100,6 +110,8 @@ static int ttm_global_init(void)
> debugfs_create_atomic_t("buffer_objects", 0444, ttm_debugfs_root,
> &glob->bo_count);
> out:
> + if (ret && ttm_debugfs_root)
> + debugfs_remove(ttm_debugfs_root);
> if (ret)
> --ttm_glob_use_count;
> mutex_unlock(&ttm_global_mutex);
> diff --git a/drivers/gpu/drm/ttm/ttm_module.c b/drivers/gpu/drm/ttm/ttm_module.c
> index 997c458f68a9a..88554f2db11fe 100644
> --- a/drivers/gpu/drm/ttm/ttm_module.c
> +++ b/drivers/gpu/drm/ttm/ttm_module.c
> @@ -72,17 +72,13 @@ pgprot_t ttm_prot_from_caching(enum ttm_caching caching, pgprot_t tmp)
> return tmp;
> }
>
> -struct dentry *ttm_debugfs_root;
> -
> static int __init ttm_init(void)
> {
> - ttm_debugfs_root = debugfs_create_dir("ttm", NULL);
> return 0;
> }
>
> static void __exit ttm_exit(void)
> {
> - debugfs_remove(ttm_debugfs_root);
> }
I think you can delete these functions and the lines below too, they
should be optional. With that:
Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
-Daniel
>
> module_init(ttm_init);
> --
> 2.31.1
>
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
More information about the Intel-gfx
mailing list