NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

kern/46574: wsfb/genfb: single user boot sets the wrong colour palette if SPLASHSCREEN



>Number:         46574
>Category:       kern
>Synopsis:       wsfb/genfb: single user boot sets the wrong colour palette if 
>SPLASHSCREEN
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Jun 10 11:10:00 +0000 2012
>Originator:     Nat Sloss
>Release:        NetBSD Current 6.99.7
>Organization:
>Environment:
NetBSD beast 6.99.7 NetBSD 6.99.7 (LOCKDEBUG) #81: Sun Jun 10 19:35:53 EST 2012 
 build@beast:/usr/src/sys/arch/i386/compile/obj/LOCKDEBUG i386

>Description:
If you're using a kernel with the SPLASHSCREEN option and you boot with an 8 
bit colour depth vesa screen and single user the kernel messages change to blue 
when genfb attaches.

This is because wsfb/genfb.c sets the colour palette if there is a splashscreen 
or not (This is only relevant at 8 bit colour depth).

I tried testing if not DISABLESPLASH before restoring the palette in genfb.c to 
no avail as other parts of the code must be using the colour palette settings.
>How-To-Repeat:
On a kernel compiled with the SPLASHSCREEN option type the following at the 
boot prompt:

vesa 640x480x8
boot -s

Then you will notice about half way through the booting process the kernel 
messages change to blue (as soon as genfb attaches).
>Fix:
Just one of many solutions is to initialise the colour palette and redraw the 
screen if DISABLESPLASH is set:

Index: sys/dev/wsfb/genfb.c
===================================================================
RCS file: /cvsroot/src/sys/dev/wsfb/genfb.c,v
retrieving revision 1.48
diff -u -r1.48 genfb.c
--- sys/dev/wsfb/genfb.c        12 Apr 2012 22:36:15 -0000      1.48
+++ sys/dev/wsfb/genfb.c        10 Jun 2012 10:45:37 -0000
@@ -314,6 +314,9 @@
                        genfb_init_palette(sc);
                        vcons_replay_msgbuf(&sc->sc_console_screen);
                }
+       } else {
+               genfb_init_palette(sc);
+               vcons_replay_msgbuf(&sc->sc_console_screen);
        }
 #else
        genfb_init_palette(sc);


Note: This patch is my own work which I submit under the NetBSD license.

Regards,

Nat.



Home | Main Index | Thread Index | Old Index