diff mbox series

drm/nouveau/debugfs: Simplify character output in nouveau_debugfs_vbios_image()

Message ID cb21950b-286b-4630-9052-cff9e7e56337@web.de (mailing list archive)
State New, archived
Headers show
Series drm/nouveau/debugfs: Simplify character output in nouveau_debugfs_vbios_image() | expand

Commit Message

Markus Elfring July 15, 2024, 11:48 a.m. UTC
From: Markus Elfring <elfring@users.sourceforge.net>
Date: Mon, 15 Jul 2024 13:36:54 +0200

Single characters should be put into a sequence.
Thus use the corresponding function “seq_putc” for one selected call.

This issue was transformed by using the Coccinelle software.

Suggested-by: Christophe Jaillet <christophe.jaillet@wanadoo.fr>
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
---
 drivers/gpu/drm/nouveau/nouveau_debugfs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--
2.45.2

Comments

Ilia Mirkin July 15, 2024, 1:15 p.m. UTC | #1
On Mon, Jul 15, 2024 at 7:49 AM Markus Elfring <Markus.Elfring@web.de> wrote:
>
> From: Markus Elfring <elfring@users.sourceforge.net>
> Date: Mon, 15 Jul 2024 13:36:54 +0200
>
> Single characters should be put into a sequence.
> Thus use the corresponding function “seq_putc” for one selected call.
>
> This issue was transformed by using the Coccinelle software.
>
> Suggested-by: Christophe Jaillet <christophe.jaillet@wanadoo.fr>
> Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
> ---
>  drivers/gpu/drm/nouveau/nouveau_debugfs.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_debugfs.c b/drivers/gpu/drm/nouveau/nouveau_debugfs.c
> index e83db051e851..931b62097366 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_debugfs.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_debugfs.c
> @@ -42,7 +42,7 @@ nouveau_debugfs_vbios_image(struct seq_file *m, void *data)
>         int i;
>
>         for (i = 0; i < drm->vbios.length; i++)
> -               seq_printf(m, "%c", drm->vbios.data[i]);
> +               seq_putc(m, drm->vbios.data[i]);

Is there some reason this whole thing isn't just

seq_write(m, drm->vbios.data, drm->vbios.length)

>         return 0;
>  }
>
> --
> 2.45.2
>
Christophe JAILLET July 23, 2024, 4:57 p.m. UTC | #2
Le 15/07/2024 à 15:15, Ilia Mirkin a écrit :
> On Mon, Jul 15, 2024 at 7:49 AM Markus Elfring <Markus.Elfring@web.de> wrote:
>>
>> From: Markus Elfring <elfring@users.sourceforge.net>
>> Date: Mon, 15 Jul 2024 13:36:54 +0200
>>
>> Single characters should be put into a sequence.
>> Thus use the corresponding function “seq_putc” for one selected call.
>>
>> This issue was transformed by using the Coccinelle software.
>>
>> Suggested-by: Christophe Jaillet <christophe.jaillet@wanadoo.fr>
>> Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
>> ---
>>   drivers/gpu/drm/nouveau/nouveau_debugfs.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/nouveau/nouveau_debugfs.c b/drivers/gpu/drm/nouveau/nouveau_debugfs.c
>> index e83db051e851..931b62097366 100644
>> --- a/drivers/gpu/drm/nouveau/nouveau_debugfs.c
>> +++ b/drivers/gpu/drm/nouveau/nouveau_debugfs.c
>> @@ -42,7 +42,7 @@ nouveau_debugfs_vbios_image(struct seq_file *m, void *data)
>>          int i;
>>
>>          for (i = 0; i < drm->vbios.length; i++)
>> -               seq_printf(m, "%c", drm->vbios.data[i]);
>> +               seq_putc(m, drm->vbios.data[i]);
> 
> Is there some reason this whole thing isn't just
> 
> seq_write(m, drm->vbios.data, drm->vbios.length)

Hi,

I don't know if my answer is relevant or not here but:
	for () seq_putc();	==> will fill 'm' with everything that fits in
and
	seq_write()		==> is all or nothing. So if 'm' is too small, then 
nothing will be appended.

I've not looked at the calling tree, but I would expect 'm' to be able 
to have PAGE_SIZE chars, so most probably 4096.

And having gpu + "vbios.rom", I would expect it to be bigger than 4096.

If I'm correct, then changing for seq_write() would just show... nothing.


I don't know if it can happen., but testing should be easy enough to 
figure it out.

just my 2c.

CJ



> 
>>          return 0;
>>   }
>>
>> --
>> 2.45.2
>>
> 
>
Ilia Mirkin July 23, 2024, 5:03 p.m. UTC | #3
On Tue, Jul 23, 2024 at 12:58 PM Christophe JAILLET
<christophe.jaillet@wanadoo.fr> wrote:
>
> Le 15/07/2024 à 15:15, Ilia Mirkin a écrit :
> > On Mon, Jul 15, 2024 at 7:49 AM Markus Elfring <Markus.Elfring@web.de> wrote:
> >>
> >> From: Markus Elfring <elfring@users.sourceforge.net>
> >> Date: Mon, 15 Jul 2024 13:36:54 +0200
> >>
> >> Single characters should be put into a sequence.
> >> Thus use the corresponding function “seq_putc” for one selected call.
> >>
> >> This issue was transformed by using the Coccinelle software.
> >>
> >> Suggested-by: Christophe Jaillet <christophe.jaillet@wanadoo.fr>
> >> Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
> >> ---
> >>   drivers/gpu/drm/nouveau/nouveau_debugfs.c | 2 +-
> >>   1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/gpu/drm/nouveau/nouveau_debugfs.c b/drivers/gpu/drm/nouveau/nouveau_debugfs.c
> >> index e83db051e851..931b62097366 100644
> >> --- a/drivers/gpu/drm/nouveau/nouveau_debugfs.c
> >> +++ b/drivers/gpu/drm/nouveau/nouveau_debugfs.c
> >> @@ -42,7 +42,7 @@ nouveau_debugfs_vbios_image(struct seq_file *m, void *data)
> >>          int i;
> >>
> >>          for (i = 0; i < drm->vbios.length; i++)
> >> -               seq_printf(m, "%c", drm->vbios.data[i]);
> >> +               seq_putc(m, drm->vbios.data[i]);
> >
> > Is there some reason this whole thing isn't just
> >
> > seq_write(m, drm->vbios.data, drm->vbios.length)
>
> Hi,
>
> I don't know if my answer is relevant or not here but:
>         for () seq_putc();      ==> will fill 'm' with everything that fits in
> and
>         seq_write()             ==> is all or nothing. So if 'm' is too small, then
> nothing will be appended.
>
> I've not looked at the calling tree, but I would expect 'm' to be able
> to have PAGE_SIZE chars, so most probably 4096.
>
> And having gpu + "vbios.rom", I would expect it to be bigger than 4096.
>
> If I'm correct, then changing for seq_write() would just show... nothing.
>
>
> I don't know if it can happen., but testing should be easy enough to
> figure it out.

The vbios can definitely be much much larger than 4k. But it does
currently work as-is, i.e. you don't just get the first 4k, you get
everything. So I think there's some internal resizing/extension/etc
going on.

But I totally agree -- testing required here. Not sure if the author
has done that.

Cheers,

  -ilia
Markus Elfring July 24, 2024, 9:30 a.m. UTC | #4
>> Is there some reason this whole thing isn't just
>>
>> seq_write(m, drm->vbios.data, drm->vbios.length)> I don't know if my answer is relevant or not here but:
>     for () seq_putc();    ==> will fill 'm' with everything that fits in

I find such a discussion approach strange.


> and
>     seq_write()        ==> is all or nothing. So if 'm' is too small, then nothing will be appended.

The clarification can become more interesting for this system detail.
https://elixir.bootlin.com/linux/v6.10/source/fs/seq_file.c#L816

Was the sequence size (or the file capacity) appropriately configured?

Regards,
Markus
diff mbox series

Patch

diff --git a/drivers/gpu/drm/nouveau/nouveau_debugfs.c b/drivers/gpu/drm/nouveau/nouveau_debugfs.c
index e83db051e851..931b62097366 100644
--- a/drivers/gpu/drm/nouveau/nouveau_debugfs.c
+++ b/drivers/gpu/drm/nouveau/nouveau_debugfs.c
@@ -42,7 +42,7 @@  nouveau_debugfs_vbios_image(struct seq_file *m, void *data)
 	int i;

 	for (i = 0; i < drm->vbios.length; i++)
-		seq_printf(m, "%c", drm->vbios.data[i]);
+		seq_putc(m, drm->vbios.data[i]);
 	return 0;
 }