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

Andy Lutomirski <[email protected]>
Newsgroups dev.linux.lists.kbd
Message-ID <CALCETrVZUS8OCfmAH_ZiZXZm7rMPY7ve7E2t_n__mE5MCiv0+g@mail.gmail.com>
On Wed, Apr 1, 2015 at 2:36 PM, Kay Sievers <[email protected]> wrote:
> On Wed, Apr 1, 2015 at 11:19 PM, Andy Lutomirski <[email protected]> wrote:
>> On Wed, Apr 1, 2015 at 1:53 PM, Kay Sievers <[email protected]> wrote:
>>> On Wed, Apr 1, 2015 at 10:45 PM, Andy Lutomirski <[email protected]> wrote:
>>>> On Apr 1, 2015 12:56 PM, "Kay Sievers" <[email protected]> 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.