[PATCH] fbcon: Don't reset logo_shown when logo is currently shown

Andreas Schwab schwab at linux-m68k.org
Tue Apr 2 18:09:27 UTC 2019


When the logo is currently drawn on a virtual console, and the console
loglevel is reduced to quiet, logo_shown must be left alone, so that it
the scrolling region on that virtual console is properly reset.

Fixes: 10993504d647 ("fbcon: Silence fbcon logo on 'quiet' boots")
Signed-off-by: Andreas Schwab <schwab at linux-m68k.org>
---
On Apr 02 2019, Prarit Bhargava <prarit at redhat.com> wrote:

> On 4/1/19 3:31 PM, Andreas Schwab wrote:
>> On Jan 29 2019, Prarit Bhargava <prarit at redhat.com> wrote:
>> 
>>> @@ -1066,6 +1069,9 @@ static void fbcon_init(struct vc_data *vc, int init)
>>>  
>>>  	cap = info->flags;
>>>  
>>> +	if (console_loglevel <= CONSOLE_LOGLEVEL_QUIET)
>>> +		logo_shown = FBCON_LOGO_DONTSHOW;
>>> +
>>>  	if (vc != svc || logo_shown == FBCON_LOGO_DONTSHOW ||
>>>  	    (info->fix.type == FB_TYPE_TEXT))
>>>  		logo = 0;
>> 
>> This causes the scroll region to no longer be reset when the logo is
>> removed.
>> 
>
> Andreas, my apologies but I'm not sure what you mean.  Could you elaborate on
> the broken and expected behaviour?

[    3.204286] fbcon_init: logo_shown = -1, console_loglevel = 7
[   11.840899] fbcon_init: logo_shown = 0, console_loglevel = 1
[   35.344877] fbcon_init: logo_shown = -3, console_loglevel = 1
[   35.345274] fbcon_init: logo_shown = -3, console_loglevel = 1
[   35.345622] fbcon_init: logo_shown = -3, console_loglevel = 1
[   35.345974] fbcon_init: logo_shown = -3, console_loglevel = 1
[   35.346375] fbcon_init: logo_shown = -3, console_loglevel = 1

logo_shown must not be reset when non-negative.

Andreas.
---
 drivers/video/fbdev/core/fbcon.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
index cd059a801662..786f9aab55df 100644
--- a/drivers/video/fbdev/core/fbcon.c
+++ b/drivers/video/fbdev/core/fbcon.c
@@ -1069,7 +1069,7 @@ static void fbcon_init(struct vc_data *vc, int init)
 
 	cap = info->flags;
 
-	if (console_loglevel <= CONSOLE_LOGLEVEL_QUIET)
+	if (logo_shown < 0 && console_loglevel <= CONSOLE_LOGLEVEL_QUIET)
 		logo_shown = FBCON_LOGO_DONTSHOW;
 
 	if (vc != svc || logo_shown == FBCON_LOGO_DONTSHOW ||
-- 
2.21.0

-- 
Andreas Schwab, schwab at linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."


More information about the dri-devel mailing list