Mailinglist Archive: opensuse-bugs (15856 mails)

< Previous Next >
[Bug 302010] /etc/init.d/kbd: setfont breaks first Xserver start
  • From: bugzilla_noreply@xxxxxxxxxx
  • Date: Fri, 24 Aug 2007 04:31:12 -0600 (MDT)
  • Message-id: <20070824103113.00636CC796@xxxxxxxxxxxxxxxxxxxxxx>
https://bugzilla.novell.com/show_bug.cgi?id=302010#c19





--- Comment #19 from Egbert Eich <eich@xxxxxxxxxx>  2007-08-24 04:31:12 MST ---
I'm not really sure if patch 2 and 3 are correct. On fbdev consoles the fonts
can be set per console and the font data is not kept in hardware. So there is
no reason to restrict setting fonts to be set only on the visible console. 
In fact the patch may break our setfont stuff as it will only set the correct
font on the visible console.
That the font data is kept in hardware (and only there) and can only be set for
all consoles at once is a property of the VGA console. 
This this problem should there be fixed there, which means the VGA console
should bail out if someone tries to write a font while the console is in
KD_GRAPHICS mode. 
According to the other comments here I assume (but have not checked) that only
the console that is opened by the Xserver is actually put into KD_GRAPHICS.
Therefore we need to check all consoles in vgacon if one of them is this mode
and bail if this is the case. 
This tiny (completely untested patch) should do this job:

--- a/drivers/video/console/vgacon.c
+++ b/drivers/video/console/vgacon.c
@@ -1032,6 +1032,11 @@ static int vgacon_do_font_op(struct vgas
        unsigned short video_port_status = vga_video_port_reg + 6;
        int font_select = 0x00, beg, i;
        char *charmap;
+
+       for (i = 0; i < MAX_NR_CONSOLES; i++) {
+               if (vc_cons[i].d->vc_mode == KD_GRAPHICS)
+                       return -EINVAL;
+       }

        if (vga_video_type != VIDEO_TYPE_EGAM) {
                charmap = (char *) VGA_MAP_MEM(colourmap, 0);

This also means that we need to make rcxdm run *after* setfonts() has run.


(The only way to save/restore fonts on vga console is to read them out to user
space and restore them from there).


-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

< Previous Next >
References