2023-11-23 04:27:24

by Woody Suwalski

[permalink] [raw]
Subject: [PATCH] drm/radeon: Prevent multiple error lines on suspend

# Fix to avoid multiple error lines printed on every suspend by Radeon
driver's debugfs.
#
# radeon_debugfs_init() calls debugfs_create_file() for every ring.
#
# This results in printing multiple error lines to the screen and dmesg
similar to this:
# debugfs: File 'radeon_ring_vce2' in directory '0000:00:01.0' already
present!
#
# The fix is to run lookup for the file before trying to (re)create that
debug file.

# Signed-off-by: Woody Suwalski <[email protected]>

diff --git a/drivers/gpu/drm/radeon/radeon_ring.c
b/drivers/gpu/drm/radeon/radeon_ring.c
index e6534fa9f1fb..72b1d2d31295 100644
--- a/drivers/gpu/drm/radeon/radeon_ring.c
+++ b/drivers/gpu/drm/radeon/radeon_ring.c
@@ -549,10 +549,15 @@ static void radeon_debugfs_ring_init(struct
radeon_device *rdev, struct radeon_r
 #if defined(CONFIG_DEBUG_FS)
     const char *ring_name = radeon_debugfs_ring_idx_to_name(ring->idx);
     struct dentry *root = rdev->ddev->primary->debugfs_root;
-
-    if (ring_name)
-        debugfs_create_file(ring_name, 0444, root, ring,
-                    &radeon_debugfs_ring_info_fops);
+    struct dentry *lookup;
+
+    if (ring_name) {
+        if ((lookup = debugfs_lookup(ring_name, root)) == NULL)
+            debugfs_create_file(ring_name, 0444, root, ring,
+                        &radeon_debugfs_ring_info_fops);
+        else
+            dput(lookup);
+    }

 #endif
 }


Attachments:
dmesg_radeon.txt (97.75 kB)

2023-12-10 18:24:48

by Woody Suwalski

[permalink] [raw]
Subject: Re: [PATCH] drm/radeon: Prevent multiple error lines on suspend

Hello, it has been now over 2 weeks and I have not seen any response to
this patch.
Has it been lost in the cracks of the wide internet ? :-(

Thanks, Woody


Woody Suwalski wrote:
> # Fix to avoid multiple error lines printed on every suspend by Radeon
> driver's debugfs.
> #
> # radeon_debugfs_init() calls debugfs_create_file() for every ring.
> #
> # This results in printing multiple error lines to the screen and
> dmesg similar to this:
> # debugfs: File 'radeon_ring_vce2' in directory '0000:00:01.0' already
> present!
> #
> # The fix is to run lookup for the file before trying to (re)create
> that debug file.
>
> # Signed-off-by: Woody Suwalski <[email protected]>
>
> diff --git a/drivers/gpu/drm/radeon/radeon_ring.c
> b/drivers/gpu/drm/radeon/radeon_ring.c
> index e6534fa9f1fb..72b1d2d31295 100644
> --- a/drivers/gpu/drm/radeon/radeon_ring.c
> +++ b/drivers/gpu/drm/radeon/radeon_ring.c
> @@ -549,10 +549,15 @@ static void radeon_debugfs_ring_init(struct
> radeon_device *rdev, struct radeon_r
>  #if defined(CONFIG_DEBUG_FS)
>      const char *ring_name = radeon_debugfs_ring_idx_to_name(ring->idx);
>      struct dentry *root = rdev->ddev->primary->debugfs_root;
> -
> -    if (ring_name)
> -        debugfs_create_file(ring_name, 0444, root, ring,
> -                    &radeon_debugfs_ring_info_fops);
> +    struct dentry *lookup;
> +
> +    if (ring_name) {
> +        if ((lookup = debugfs_lookup(ring_name, root)) == NULL)
> +            debugfs_create_file(ring_name, 0444, root, ring,
> +                        &radeon_debugfs_ring_info_fops);
> +        else
> +            dput(lookup);
> +    }
>
>  #endif
>  }
>

2023-12-11 10:55:14

by Christian König

[permalink] [raw]
Subject: Re: [PATCH] drm/radeon: Prevent multiple error lines on suspend

Am 10.12.23 um 19:24 schrieb Woody Suwalski:
> Hello, it has been now over 2 weeks and I have not seen any response
> to this patch.
> Has it been lost in the cracks of the wide internet ? :-(

Well your patch is malformed ("#" before each line in the commit
message) and probably ended up being ignored because of that.

Apart from that it would probably be much easier to move the call to
radeon_debugfs_ring_init() into the if (ring->ring_obj == NULL) check in
the caller.

Regards,
Christian.

>
> Thanks, Woody
>
>
> Woody Suwalski wrote:
>> # Fix to avoid multiple error lines printed on every suspend by
>> Radeon driver's debugfs.
>> #
>> # radeon_debugfs_init() calls debugfs_create_file() for every ring.
>> #
>> # This results in printing multiple error lines to the screen and
>> dmesg similar to this:
>> # debugfs: File 'radeon_ring_vce2' in directory '0000:00:01.0'
>> already present!
>> #
>> # The fix is to run lookup for the file before trying to (re)create
>> that debug file.
>>
>> # Signed-off-by: Woody Suwalski <[email protected]>
>>
>> diff --git a/drivers/gpu/drm/radeon/radeon_ring.c
>> b/drivers/gpu/drm/radeon/radeon_ring.c
>> index e6534fa9f1fb..72b1d2d31295 100644
>> --- a/drivers/gpu/drm/radeon/radeon_ring.c
>> +++ b/drivers/gpu/drm/radeon/radeon_ring.c
>> @@ -549,10 +549,15 @@ static void radeon_debugfs_ring_init(struct
>> radeon_device *rdev, struct radeon_r
>>  #if defined(CONFIG_DEBUG_FS)
>>      const char *ring_name = radeon_debugfs_ring_idx_to_name(ring->idx);
>>      struct dentry *root = rdev->ddev->primary->debugfs_root;
>> -
>> -    if (ring_name)
>> -        debugfs_create_file(ring_name, 0444, root, ring,
>> -                    &radeon_debugfs_ring_info_fops);
>> +    struct dentry *lookup;
>> +
>> +    if (ring_name) {
>> +        if ((lookup = debugfs_lookup(ring_name, root)) == NULL)
>> +            debugfs_create_file(ring_name, 0444, root, ring,
>> +                        &radeon_debugfs_ring_info_fops);
>> +        else
>> +            dput(lookup);
>> +    }
>>
>>  #endif
>>  }
>>
>