Ilia Mirkin
2024-Jul-15 13:15 UTC
[PATCH] drm/nouveau/debugfs: Simplify character output in nouveau_debugfs_vbios_image()
On Mon, Jul 15, 2024 at 7:49?AM Markus Elfring <Markus.Elfring at web.de> wrote:> > From: Markus Elfring <elfring at 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 at wanadoo.fr> > Signed-off-by: Markus Elfring <elfring at 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 >
Markus Elfring
2024-Jul-23 16:23 UTC
[PATCH v2] drm/nouveau/debugfs: Optimise data output in nouveau_debugfs_vbios_image()
From: Markus Elfring <elfring at users.sourceforge.net> Date: Tue, 23 Jul 2024 18:08:15 +0200 Some characters should be put into a sequence. * Thus print all data by the corresponding function ?seq_write? at once. * Return also the value from this function call. * Omit a local variable which became redundant with this refactoring. This issue was detected by using the Coccinelle software. Signed-off-by: Markus Elfring <elfring at users.sourceforge.net> --- V2: A patch review suggestion from Ilia Mirkin was integrated. drivers/gpu/drm/nouveau/nouveau_debugfs.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_debugfs.c b/drivers/gpu/drm/nouveau/nouveau_debugfs.c index e83db051e851..980cff265060 100644 --- a/drivers/gpu/drm/nouveau/nouveau_debugfs.c +++ b/drivers/gpu/drm/nouveau/nouveau_debugfs.c @@ -39,11 +39,8 @@ nouveau_debugfs_vbios_image(struct seq_file *m, void *data) { struct drm_info_node *node = (struct drm_info_node *) m->private; struct nouveau_drm *drm = nouveau_drm(node->minor->dev); - int i; - for (i = 0; i < drm->vbios.length; i++) - seq_printf(m, "%c", drm->vbios.data[i]); - return 0; + return seq_write(m, drm->vbios.data, drm->vbios.length); } static int -- 2.45.2
Christophe JAILLET
2024-Jul-23 16:57 UTC
[PATCH] drm/nouveau/debugfs: Simplify character output in nouveau_debugfs_vbios_image()
Le 15/07/2024 ? 15:15, Ilia Mirkin a ?crit?:> On Mon, Jul 15, 2024 at 7:49?AM Markus Elfring <Markus.Elfring at web.de> wrote: >> >> From: Markus Elfring <elfring at 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 at wanadoo.fr> >> Signed-off-by: Markus Elfring <elfring at 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
2024-Jul-23 17:03 UTC
[PATCH] drm/nouveau/debugfs: Simplify character output in nouveau_debugfs_vbios_image()
On Tue, Jul 23, 2024 at 12:58?PM Christophe JAILLET <christophe.jaillet at 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 at web.de> wrote: > >> > >> From: Markus Elfring <elfring at 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 at wanadoo.fr> > >> Signed-off-by: Markus Elfring <elfring at 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
Reasonably Related Threads
- [PATCH] drm/nouveau/debugfs: Simplify character output in nouveau_debugfs_vbios_image()
- [PATCH] drm/nouveau/debugfs: Simplify character output in nouveau_debugfs_vbios_image()
- [PATCH] drm/nouveau/debugfs: Simplify character output in nouveau_debugfs_vbios_image()
- [PATCH 3/9] drm/nouveau/debugfs: Use seq_putc() in nouveau_debugfs_pstate_get()
- [PATCH 4/9] drm/nouveau/debugfs: Replace five seq_printf() calls by seq_puts() in nouveau_debugfs_pstate_get()