Linux console tools development discussion
 help / color / mirror / Atom feed
From: Andy Lutomirski <luto@amacapital.net>
To: Kay Sievers <kay@vrfy.org>
Cc: systemd Mailing List <systemd-devel@lists.freedesktop.org>,
	Lennart Poettering <lennart@poettering.net>,
	kbd@lists.altlinux.org
Subject: Re: [kbd] [systemd-devel] systemd-vconsole-setup fails very slowly
Date: Wed, 1 Apr 2015 13:45:11 -0700
Message-ID: <CALCETrUOFKkYydqeT-wcHPFRrWpmaP6pfHMiaGVNPP6z6YPRLA@mail.gmail.com> (raw)
In-Reply-To: <CAPXgP10KxNufT8zodh_rMxnnFe7uD40PhXjC1COGw6n=4=314w@mail.gmail.com>

On Apr 1, 2015 12:56 PM, "Kay Sievers" <kay@vrfy.org> wrote:
>
> On Wed, Apr 1, 2015 at 9:36 PM, Andy Lutomirski <luto@amacapital.net> wrote:
> > On Wed, Apr 1, 2015 at 12:32 PM, Kay Sievers <kay@vrfy.org> wrote:
> >> On Wed, Apr 1, 2015 at 8:56 PM, Andy Lutomirski <luto@amacapital.net> wrote:
> >>> On Thu, Jan 22, 2015 at 6:29 PM, Andy Lutomirski <luto@amacapital.net> wrote:
> >>>> On Thu, Jan 22, 2015 at 6:13 PM, Lennart Poettering
> >>>> <lennart@poettering.net> wrote:
> >>>>> On Wed, 21.01.15 19:15, Andy Lutomirski (luto@amacapital.net) wrote:
> >>>>>
> >>>>>> Hi all-
> >>>>>>
> >>>>>> When running virtme (a simple vm gadget) on Fedora 21, the slowest
> >>>>>> part of bootup by far appears to be systemd-vconsole-setup:
> >>>>>>
> >>>>>> # time /usr/lib/systemd/systemd-vconsole-setup
> >>>>>> putfont: PIO_FONT trying ...
> >>>>>> ...................
> >>>>>> setfont: putfont: 512,8x16:  failed: -1
> >>>>>> putfont: PIO_FONT: Invalid argument
> >>>>>> /usr/bin/setfont failed with error code 71.
> >>>>>
> >>>>> setfont is not part of systemd, we just invoke it. If that fails, this
> >>>>> is a problem somewhere between the VM, the kernel and console-tools.
> >>>>>
> >>>>
> >>>> Aha -- I missed that systemd-vconsole-setup calls setfont.  I can
> >>>> trigger the same problem by just typing setfont.  For whatever reason,
> >>>> my other Fedora 21 computer only has this problem if I type setfont
> >>>> and not if I run systemd-vconcole-setup.
> >>>>
> >>>>> My uneducated guess is that your virtual machine boots up with a
> >>>>> non-graphical console, and the tool thus tries to upload the fonts
> >>>>> into the good old VGA hw text mode glyph tables, and qemu is very slow
> >>>>> at that... Or something like that.
> >>>>
> >>>> setfont is doing this:
> >>>>
> >>>> nanosleep({0, 250000000}, NULL)         = 0
> >>>> ioctl(3, PIO_FONT, 0xfbc010)            = -1 EINVAL (Invalid argument)
> >>>> write(2, ".", 1.)                        = 1
> >>>> nanosleep({0, 250000000}, NULL)         = 0
> >>>> ioctl(3, PIO_FONT, 0xfbc010)            = -1 EINVAL (Invalid argument)
> >>>> write(2, ".", 1.)                        = 1
> >>>> nanosleep({0, 250000000}, NULL)         = 0
> >>>> ioctl(3, PIO_FONT, 0xfbc010)            = -1 EINVAL (Invalid argument)
> >>>> write(2, ".", 1.)                        = 1
> >>>> nanosleep({0, 250000000}, NULL)         = 0
> >>>> ioctl(3, PIO_FONT, 0xfbc010)            = -1 EINVAL (Invalid argument)
> >>>> write(2, ".", 1.)                        = 1
> >>>> nanosleep({0, 250000000}, NULL)         = 0
> >>>> ioctl(3, PIO_FONT, 0xfbc010)            = -1 EINVAL (Invalid argument)
> >>>> write(2, ".", 1.)                        = 1
> >>>>
> >>>> This thing has only a serial console:
> >>>>
> >>>> # cat /proc/consoles
> >>>> ttyS0                -W- (EC   a)    4:64
> >>>>
> >>>> setfont does this:
> >>>>
> >>>>         /* we allow ourselves to hang here for ca 5 seconds, xdm may
> >>>> be playing tricks on us. */
> >>>>         while ((loop++ < 20) && (i = ioctl(fd, PIO_FONT, buf)))
> >>>>           {
> >>>>             if (loop <= 1)
> >>>>               fprintf(stderr, "putfont: PIO_FONT trying ...\n");
> >>>>             else
> >>>>               fprintf(stderr, ".");
> >>>>             usleep(250000);
> >>>>           }
> >>>>         fprintf(stderr, "\n");
> >>>>
> >>>> Alexey, would it make sense to remove this loop or to add a way to turn it off?
> >>>
> >>> Ping, everyone?
> >>>
> >>> This issue still exists.  AFAICT systemd is relying on a really old
> >>> tool, that that really old tool (setfont) is sometimes delaying boot
> >>> by a very large amount.  Can we either fix the tool (Alexey) or stop
> >>> using it (systemd people)?
> >>
> >> Hmm, why is the "vm gadget" you run configuring a custom console font
> >> at all? If there is no custom font specified in t he config, systemd
> >> will not run setfont.
> >
> > It's not intentionally configuring a custom font, but it might be
> > inheriting Fedora's settings.
>
> Ideally, /etc/vconsole.conf does not even exist in a default setup. It
> is only needed for foreign language keyboard support or more exotic
> font requirements.
>
> >> Or did you mean to have vconsole-setup detect that it should not even
> >> try to run setfont? Not sure how to find that out.
> >>
> >> I don't really see how vconsole-setup could get rid of calling setfont
> >> from systemd, it is needed in many setups.
> >
> > vconsole-setup could set the font itself instead of using setfont if
> > setfont can't be configured or fixed not to keep retrying for five
> > seconds (!).
>
> It is a rather complex logic which would need to be duplicated in
> systemd. We so far have avoided it, because the kernel VC font and
> keymaps are so conceptually limited, that it does not really make
> sense to build a modern system on top of it.
>
> If systemd gets advanvced console support with systemd-consoled,
> we need full unicode support, high-dpi display support, display hotplug,
> ..., all things the kernel's vc stuff will never give us. That is why we rely
> on setfont and loadkeys for now.
>
> > Ideally, I think that setfont would just stop retrying on failure.
>
> Right, that sounds like a simple and sensible fix.

Too bad no one from the kbd list has replied :(

>
> > Or
> > perhaps all of this could go through udev or some other mechanism that
> > doesn't try to set the font until the device actually exists.  But the
> > console system is weird and may be that's hard.
>
> The devices should be always there, /dev/tty1-15. It looks like the
> driver behind the ttys seems not to accept the font and return EINVAL.
> Not sure if udev could make a difference here.
>
> 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.

--Andy


  reply	other threads:[~2015-04-01 20:45 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-23  2:29   ` Andy Lutomirski
2015-01-26 10:39     ` Alexey Gladkov
2015-04-01 18:56     ` Andy Lutomirski
2015-04-01 19:32       ` Kay Sievers
2015-04-01 19:36         ` Andy Lutomirski
2015-04-01 19:55           ` Kay Sievers
2015-04-01 20:45             ` Andy Lutomirski [this message]
2015-04-01 20:53               ` Kay Sievers
2015-04-01 21:19                 ` Andy Lutomirski
2015-04-01 21:36                   ` Kay Sievers
2015-04-01 21:38                     ` Andy Lutomirski
2015-04-01 21:47                       ` Kay Sievers
2015-04-01 22:00                         ` Andy Lutomirski
2015-04-01 22:28                           ` Kay Sievers
2015-04-01 21:20       ` Alexey Gladkov
2015-04-06 21:48     ` Alexey Gladkov
2015-04-06 22:55       ` Andy Lutomirski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CALCETrUOFKkYydqeT-wcHPFRrWpmaP6pfHMiaGVNPP6z6YPRLA@mail.gmail.com \
    --to=luto@amacapital.net \
    --cc=kay@vrfy.org \
    --cc=kbd@lists.altlinux.org \
    --cc=lennart@poettering.net \
    --cc=systemd-devel@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux console tools development discussion

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/kbd/0 kbd/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 kbd kbd/ http://lore.altlinux.org/kbd \
		kbd@lists.altlinux.org kbd@lists.altlinux.ru kbd@lists.altlinux.com
	public-inbox-index kbd

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.kbd


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git