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 |
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 >
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 >> > >
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
>> 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 --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; }