diff mbox series

[v2,2/3] fbdev: fbmem: allow overriding the number of bootup logos

Message ID 20190826195740.29415-3-peda@axentia.se (mailing list archive)
State New, archived
Headers show
Series Add possibility to specify the number of displayed logos | expand

Commit Message

Peter Rosin Aug. 26, 2019, 7:58 p.m. UTC
Probably most useful if you only want one logo regardless of how many
CPU cores you have.

Signed-off-by: Peter Rosin <peda@axentia.se>
---
 Documentation/fb/fbcon.rst       | 5 +++++
 drivers/video/fbdev/core/fbcon.c | 7 +++++++
 drivers/video/fbdev/core/fbmem.c | 4 +++-
 include/linux/fb.h               | 1 +
 4 files changed, 16 insertions(+), 1 deletion(-)

Comments

Geert Uytterhoeven Aug. 27, 2019, 8:36 a.m. UTC | #1
Hi Peter,

On Mon, Aug 26, 2019 at 10:46 PM Peter Rosin <peda@axentia.se> wrote:
> Probably most useful if you only want one logo regardless of how many
> CPU cores you have.
>
> Signed-off-by: Peter Rosin <peda@axentia.se>

Thanks for your patch!

> --- a/Documentation/fb/fbcon.rst
> +++ b/Documentation/fb/fbcon.rst
> @@ -174,6 +174,11 @@ C. Boot options
>         displayed due to multiple CPUs, the collected line of logos is moved
>         as a whole.
>
> +9. fbcon=logo-count:<n>
> +
> +       The value 'n' overrides the number of bootup logos. Zero gives the
> +       default, which is the number of online cpus.

Isn't that a bit unexpected for the user?
What about making -1 the default (auto), and zero meaning no logos?

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Peter Rosin Aug. 27, 2019, 8:54 a.m. UTC | #2
On 2019-08-27 10:36, Geert Uytterhoeven wrote:
> Hi Peter,
> 
> On Mon, Aug 26, 2019 at 10:46 PM Peter Rosin <peda@axentia.se> wrote:
>> Probably most useful if you only want one logo regardless of how many
>> CPU cores you have.
>>
>> Signed-off-by: Peter Rosin <peda@axentia.se>
> 
> Thanks for your patch!
> 
>> --- a/Documentation/fb/fbcon.rst
>> +++ b/Documentation/fb/fbcon.rst
>> @@ -174,6 +174,11 @@ C. Boot options
>>         displayed due to multiple CPUs, the collected line of logos is moved
>>         as a whole.
>>
>> +9. fbcon=logo-count:<n>
>> +
>> +       The value 'n' overrides the number of bootup logos. Zero gives the
>> +       default, which is the number of online cpus.
> 
> Isn't that a bit unexpected for the user?
> What about making -1 the default (auto), and zero meaning no logos?

I just naively assumed there was some other mechanism to disable it.

Sigh, I'll take a look. v3 coming up...

Cheers,
Peter
Geert Uytterhoeven Aug. 27, 2019, 9:18 a.m. UTC | #3
Hi Peter,

On Tue, Aug 27, 2019 at 10:54 AM Peter Rosin <peda@axentia.se> wrote:
> On 2019-08-27 10:36, Geert Uytterhoeven wrote:
> > On Mon, Aug 26, 2019 at 10:46 PM Peter Rosin <peda@axentia.se> wrote:
> >> Probably most useful if you only want one logo regardless of how many
> >> CPU cores you have.
> >>
> >> Signed-off-by: Peter Rosin <peda@axentia.se>
> >
> > Thanks for your patch!
> >
> >> --- a/Documentation/fb/fbcon.rst
> >> +++ b/Documentation/fb/fbcon.rst
> >> @@ -174,6 +174,11 @@ C. Boot options
> >>         displayed due to multiple CPUs, the collected line of logos is moved
> >>         as a whole.
> >>
> >> +9. fbcon=logo-count:<n>
> >> +
> >> +       The value 'n' overrides the number of bootup logos. Zero gives the
> >> +       default, which is the number of online cpus.
> >
> > Isn't that a bit unexpected for the user?
> > What about making -1 the default (auto), and zero meaning no logos?
>
> I just naively assumed there was some other mechanism to disable it.

That was my first thought, too, but I couldn't find one.

Gr{oetje,eeting}s,

                        Geert
diff mbox series

Patch

diff --git a/Documentation/fb/fbcon.rst b/Documentation/fb/fbcon.rst
index 65ba40255137..9f0b399d8d4e 100644
--- a/Documentation/fb/fbcon.rst
+++ b/Documentation/fb/fbcon.rst
@@ -174,6 +174,11 @@  C. Boot options
 	displayed due to multiple CPUs, the collected line of logos is moved
 	as a whole.
 
+9. fbcon=logo-count:<n>
+
+	The value 'n' overrides the number of bootup logos. Zero gives the
+	default, which is the number of online cpus.
+
 C. Attaching, Detaching and Unloading
 
 Before going on to how to attach, detach and unload the framebuffer console, an
diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
index c9235a2f42f8..be4bc5540aad 100644
--- a/drivers/video/fbdev/core/fbcon.c
+++ b/drivers/video/fbdev/core/fbcon.c
@@ -536,6 +536,13 @@  static int __init fb_console_setup(char *this_opt)
 				fb_center_logo = true;
 			continue;
 		}
+
+		if (!strncmp(options, "logo-count:", 11)) {
+			options += 11;
+			if (*options)
+				fb_logo_count = simple_strtoul(options, &options, 0);
+			continue;
+		}
 	}
 	return 1;
 }
diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
index 64dd732021d8..a7d8022db516 100644
--- a/drivers/video/fbdev/core/fbmem.c
+++ b/drivers/video/fbdev/core/fbmem.c
@@ -56,6 +56,8 @@  EXPORT_SYMBOL(num_registered_fb);
 bool fb_center_logo __read_mostly;
 EXPORT_SYMBOL(fb_center_logo);
 
+unsigned int fb_logo_count __read_mostly;
+
 static struct fb_info *get_fb_info(unsigned int idx)
 {
 	struct fb_info *fb_info;
@@ -689,7 +691,7 @@  int fb_show_logo(struct fb_info *info, int rotate)
 	int y;
 
 	y = fb_show_logo_line(info, rotate, fb_logo.logo, 0,
-			      num_online_cpus());
+			      fb_logo_count ?: num_online_cpus());
 	y = fb_show_extra_logos(info, y, rotate);
 
 	return y;
diff --git a/include/linux/fb.h b/include/linux/fb.h
index 303771264644..5f2b05406262 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -630,6 +630,7 @@  extern int fb_new_modelist(struct fb_info *info);
 extern struct fb_info *registered_fb[FB_MAX];
 extern int num_registered_fb;
 extern bool fb_center_logo;
+extern unsigned int fb_logo_count;
 extern struct class *fb_class;
 
 #define for_each_registered_fb(i)		\