[kbd] [systemd-devel] systemd-vconsole-setup fails very slowly

Andy Lutomirski luto at amacapital.net
Thu Apr 2 00:38:55 MSK 2015


On Wed, Apr 1, 2015 at 2:36 PM, Kay Sievers <kay at vrfy.org> wrote:
> On Wed, Apr 1, 2015 at 11:19 PM, Andy Lutomirski <luto at amacapital.net> wrote:
>> On Wed, Apr 1, 2015 at 1:53 PM, Kay Sievers <kay at vrfy.org> wrote:
>>> On Wed, Apr 1, 2015 at 10:45 PM, Andy Lutomirski <luto at amacapital.net> wrote:
>>>> On Apr 1, 2015 12:56 PM, "Kay Sievers" <kay at vrfy.org> wrote:
>>>
>>>>> Do you have an idea why the VM does not accept the custom font? If
>>>>> that is something obvious, and we can detect it, we could make
>>>>> vconsole-setup check for it. But then again, fixing setfont seems like
>>>>> the obvious fix here.
>>>>
>>>> I assume it's because the VM has no graphical console at all.
>>>
>>> We check the existence of the corresponding /dev/vcs%i, to check if
>>> the tty is allocated where we want to apply the font to. Do these
>>> devices exist on the running machine?
>>
>> Yes:
>>
>> # ls /dev/vcs*
>> /dev/vcs   /dev/vcs2  /dev/vcs4  /dev/vcsa1  /dev/vcsa3
>> /dev/vcs1  /dev/vcs3  /dev/vcsa  /dev/vcsa2  /dev/vcsa4
>>
>> Looking at the code, the vc_screen.c code seems to create those
>> devices unconditionally.
>
> They should only get created when something accesses the corresponding
> tty. deallocvt(1) can kill unused ones and the device nodes should
> disappear.
>

deallocvt doesn't seem to kill those device nodes for me.

>>> And what does this say?
>>>   grep . /sys/class/tty/tty0/active /sys/class/tty/console/active
>>
>> # grep . /sys/class/tty/tty0/active /sys/class/tty/console/active
>> /sys/class/tty/tty0/active:tty1
>> /sys/class/tty/console/active:ttyS0
>>
>> vcs1 has, roughly:
>>
>> early console in decompress_kernel
>> Decompressing Linux... Parsing ELF... done.
>> Booting the kernel.
>>
>> Now I'm wondering how that buffer came to be.
>>
>> In any event, some tracing of the code suggests that I have
>> vga_video_type == VIDEO_TYPE_CGA, and that fails "if (vga_video_type <
>> VIDEO_TYPE_EGAM)" in vgacon_font_set.
>>
>> Indeed, /proc/ioports has:
>>
>>   03d4-03d5 : cga
>>
>> and dmesg says:
>>
>> [    0.000000] Console: colour *CGA 80x25
>>
>> I don't see this information in sysfs anywhere.  Perhaps checking for
>> an active console and detecting -EINVAL from vgacon_font_get would
>> work.
>
> Hmm, yeah, maybe we could try one of the font-related ioctls to find
> out if the driver supports that before we spawn setfont.
>
>> /proc/fb is empty on this VM, so maybe that would help.  Grr, this
>> stuff is really old and crufty.
>>
>> The offending qemu command line args appear to be -vga none -display
>> none.  I assume I have "CGA" because it's the fallback case in
>> vgacon.c if nothing matches.
>
> Hehe, blast from the past. :) If you give kvm a VGA device, it all works fine?

I just tried it.  setfont succeeds, and the VGA device matches
/dev/vcs's contents.

--Andy


More information about the kbd mailing list