All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ray Strode <halfline@gmail.com>
To: Max Staudt <mstaudt@suse.de>
Cc: b.zolnierkie@samsung.com, linux-fbdev@vger.kernel.org,
	michal@markovi.net, sndirsch@suse.com, oneukum@suse.com,
	tiwai@suse.com, dri-devel@lists.freedesktop.org,
	"Linux-Kernel@Vger. Kernel. Org" <linux-kernel@vger.kernel.org>,
	bernhard.rosenkranzer@linaro.org, philm@manjaro.org
Subject: Re: [RFC PATCH v2 00/13] Kernel based bootsplash
Date: Tue, 19 Dec 2017 15:30:36 -0500	[thread overview]
Message-ID: <CAA_UwzJNC0rJxpH95UwwyT=d1JHLzSUTmiPeZhWpjguP-kV_Ow@mail.gmail.com> (raw)
In-Reply-To: <2f8a1a08-911d-a511-2968-4d89418ac212@suse.de>

Hi,

> For example, having a userspace splash that starts as early as it can
> (thus on vesafb/efifb on a PC) will cause the KMS driver to fail
> reserving the entirety of video RAM, and thus fail loading. This cannot be fixed.
well the fix there is to use drm devices... like this:

https://cgit.freedesktop.org/plymouth/commit/?id=97f02ee959374afb1b8a78dc67116cd880cf2d23

> Furthermore, Plymouth is quite broken. For example, it may lock
> (via VT_SETMODE) the VT even though Plymouth is in "disabled"
> state and X has already taken control of the VT.
What do you mean by "disabled" (plymouth.enable=0?) ?  if it's
disabled, it's not going to call VT_SETMODE ...

Why do you refer to VT_SETMODE as locking ?  VT_SETMODE sets
whether a process handles VT changes or the kernel does.  There is a
long standing kernel issue where a mode of VT_AUTO (kernel handles
vt switching) + KDGRAPHICS means VTs can't be changed. is that what
you're talking about?

Anyway plymouth is only going to step on X's toes, if the distro erroneously
asks it to.  Normally, a distro would run "plymouth deactivate" before
starting X, instead of trying to run them at the same time...

> This causes the kernel to throw away X's PID as the VT owner, and thus
> chvt and Ctrl-Alt-Fx no longer work because X can neither release the
> console (VT_RELDISP fails), nor does the kernel send it the signal to do
> so. This is hard to impossible to fix.
Unless i'm missing something, this is totally just a problem with startup
scripts not doing the right thing?  Plymouth shouldn't be doing anything
once X is started.  If it is, that's either a plymouth bug (or more likely a
distro integration problem)

> A third reason is that in practice, Plymouth's start is delayed for reasons
> such as the above. Yes, race conditions are being worked around with
> sleeps.
??? that's not true.  We don't have any sleep statements in the code to work
around race conditions with X.

We do have two configurable delays in the code, are you talking about one of
them?

1) The first is a ShowDelay option.  The point of this option is,
"If boot takes 5 seconds or less, it's essentially instant and we
shouldn't show a splash at all".  Nothing to do with race conditions.
You can set it to 0 if you want.

2) The second is DeviceTimeout option.  The point of this option is to
decide how long to wait for udev coldplug to finish.  It's mostly
relevant for systems that don't have kms drivers.  The point is at
somepoint during boot we need to decide to stop waiting for a drm
device to show up and just fallback to showing graphics using
legacy interfaces (like /dev/fb).  We used to wait until the udev
queue went empty, but that's error prone since it gets cleared when
the root is switched.  See

https://lists.freedesktop.org/archives/systemd-devel/2015-March/029184.html


> So some issues are hard to fix, others are impossible to fix in userspace.
I'm not convinced there are any insurmountable problems here...

One thing i'd like to do is change boot to not map fbcon at first, and
only map it in on the fly when the user hits escape, or after boot
finishes.  like, for instance, try booting with fbcon=vc:2 or
fbcon=map:9 to see how it improves the boot experience.

--Ray

WARNING: multiple messages have this Message-ID (diff)
From: Ray Strode <halfline@gmail.com>
To: Max Staudt <mstaudt@suse.de>
Cc: linux-fbdev@vger.kernel.org, michal@markovi.net,
	b.zolnierkie@samsung.com, sndirsch@suse.com, oneukum@suse.com,
	tiwai@suse.com, dri-devel@lists.freedesktop.org,
	"Linux-Kernel@Vger. Kernel. Org" <linux-kernel@vger.kernel.org>,
	philm@manjaro.org, bernhard.rosenkranzer@linaro.org
Subject: Re: [RFC PATCH v2 00/13] Kernel based bootsplash
Date: Tue, 19 Dec 2017 20:30:36 +0000	[thread overview]
Message-ID: <CAA_UwzJNC0rJxpH95UwwyT=d1JHLzSUTmiPeZhWpjguP-kV_Ow@mail.gmail.com> (raw)
In-Reply-To: <2f8a1a08-911d-a511-2968-4d89418ac212@suse.de>

Hi,

> For example, having a userspace splash that starts as early as it can
> (thus on vesafb/efifb on a PC) will cause the KMS driver to fail
> reserving the entirety of video RAM, and thus fail loading. This cannot be fixed.
well the fix there is to use drm devices... like this:

https://cgit.freedesktop.org/plymouth/commit/?id—f02ee959374afb1b8a78dc67116cd880cf2d23

> Furthermore, Plymouth is quite broken. For example, it may lock
> (via VT_SETMODE) the VT even though Plymouth is in "disabled"
> state and X has already taken control of the VT.
What do you mean by "disabled" (plymouth.enable=0?) ?  if it's
disabled, it's not going to call VT_SETMODE ...

Why do you refer to VT_SETMODE as locking ?  VT_SETMODE sets
whether a process handles VT changes or the kernel does.  There is a
long standing kernel issue where a mode of VT_AUTO (kernel handles
vt switching) + KDGRAPHICS means VTs can't be changed. is that what
you're talking about?

Anyway plymouth is only going to step on X's toes, if the distro erroneously
asks it to.  Normally, a distro would run "plymouth deactivate" before
starting X, instead of trying to run them at the same time...

> This causes the kernel to throw away X's PID as the VT owner, and thus
> chvt and Ctrl-Alt-Fx no longer work because X can neither release the
> console (VT_RELDISP fails), nor does the kernel send it the signal to do
> so. This is hard to impossible to fix.
Unless i'm missing something, this is totally just a problem with startup
scripts not doing the right thing?  Plymouth shouldn't be doing anything
once X is started.  If it is, that's either a plymouth bug (or more likely a
distro integration problem)

> A third reason is that in practice, Plymouth's start is delayed for reasons
> such as the above. Yes, race conditions are being worked around with
> sleeps.
??? that's not true.  We don't have any sleep statements in the code to work
around race conditions with X.

We do have two configurable delays in the code, are you talking about one of
them?

1) The first is a ShowDelay option.  The point of this option is,
"If boot takes 5 seconds or less, it's essentially instant and we
shouldn't show a splash at all".  Nothing to do with race conditions.
You can set it to 0 if you want.

2) The second is DeviceTimeout option.  The point of this option is to
decide how long to wait for udev coldplug to finish.  It's mostly
relevant for systems that don't have kms drivers.  The point is at
somepoint during boot we need to decide to stop waiting for a drm
device to show up and just fallback to showing graphics using
legacy interfaces (like /dev/fb).  We used to wait until the udev
queue went empty, but that's error prone since it gets cleared when
the root is switched.  See

https://lists.freedesktop.org/archives/systemd-devel/2015-March/029184.html


> So some issues are hard to fix, others are impossible to fix in userspace.
I'm not convinced there are any insurmountable problems here...

One thing i'd like to do is change boot to not map fbcon at first, and
only map it in on the fly when the user hits escape, or after boot
finishes.  like, for instance, try booting with fbcon=vc:2 or
fbcon=map:9 to see how it improves the boot experience.

--Ray

WARNING: multiple messages have this Message-ID (diff)
From: Ray Strode <halfline@gmail.com>
To: Max Staudt <mstaudt@suse.de>
Cc: linux-fbdev@vger.kernel.org, michal@markovi.net,
	b.zolnierkie@samsung.com, sndirsch@suse.com, oneukum@suse.com,
	tiwai@suse.com, dri-devel@lists.freedesktop.org,
	"Linux-Kernel@Vger. Kernel. Org" <linux-kernel@vger.kernel.org>,
	philm@manjaro.org, bernhard.rosenkranzer@linaro.org
Subject: Re: [RFC PATCH v2 00/13] Kernel based bootsplash
Date: Tue, 19 Dec 2017 15:30:36 -0500	[thread overview]
Message-ID: <CAA_UwzJNC0rJxpH95UwwyT=d1JHLzSUTmiPeZhWpjguP-kV_Ow@mail.gmail.com> (raw)
In-Reply-To: <2f8a1a08-911d-a511-2968-4d89418ac212@suse.de>

Hi,

> For example, having a userspace splash that starts as early as it can
> (thus on vesafb/efifb on a PC) will cause the KMS driver to fail
> reserving the entirety of video RAM, and thus fail loading. This cannot be fixed.
well the fix there is to use drm devices... like this:

https://cgit.freedesktop.org/plymouth/commit/?id=97f02ee959374afb1b8a78dc67116cd880cf2d23

> Furthermore, Plymouth is quite broken. For example, it may lock
> (via VT_SETMODE) the VT even though Plymouth is in "disabled"
> state and X has already taken control of the VT.
What do you mean by "disabled" (plymouth.enable=0?) ?  if it's
disabled, it's not going to call VT_SETMODE ...

Why do you refer to VT_SETMODE as locking ?  VT_SETMODE sets
whether a process handles VT changes or the kernel does.  There is a
long standing kernel issue where a mode of VT_AUTO (kernel handles
vt switching) + KDGRAPHICS means VTs can't be changed. is that what
you're talking about?

Anyway plymouth is only going to step on X's toes, if the distro erroneously
asks it to.  Normally, a distro would run "plymouth deactivate" before
starting X, instead of trying to run them at the same time...

> This causes the kernel to throw away X's PID as the VT owner, and thus
> chvt and Ctrl-Alt-Fx no longer work because X can neither release the
> console (VT_RELDISP fails), nor does the kernel send it the signal to do
> so. This is hard to impossible to fix.
Unless i'm missing something, this is totally just a problem with startup
scripts not doing the right thing?  Plymouth shouldn't be doing anything
once X is started.  If it is, that's either a plymouth bug (or more likely a
distro integration problem)

> A third reason is that in practice, Plymouth's start is delayed for reasons
> such as the above. Yes, race conditions are being worked around with
> sleeps.
??? that's not true.  We don't have any sleep statements in the code to work
around race conditions with X.

We do have two configurable delays in the code, are you talking about one of
them?

1) The first is a ShowDelay option.  The point of this option is,
"If boot takes 5 seconds or less, it's essentially instant and we
shouldn't show a splash at all".  Nothing to do with race conditions.
You can set it to 0 if you want.

2) The second is DeviceTimeout option.  The point of this option is to
decide how long to wait for udev coldplug to finish.  It's mostly
relevant for systems that don't have kms drivers.  The point is at
somepoint during boot we need to decide to stop waiting for a drm
device to show up and just fallback to showing graphics using
legacy interfaces (like /dev/fb).  We used to wait until the udev
queue went empty, but that's error prone since it gets cleared when
the root is switched.  See

https://lists.freedesktop.org/archives/systemd-devel/2015-March/029184.html


> So some issues are hard to fix, others are impossible to fix in userspace.
I'm not convinced there are any insurmountable problems here...

One thing i'd like to do is change boot to not map fbcon at first, and
only map it in on the fly when the user hits escape, or after boot
finishes.  like, for instance, try booting with fbcon=vc:2 or
fbcon=map:9 to see how it improves the boot experience.

--Ray
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  parent reply	other threads:[~2017-12-19 20:31 UTC|newest]

Thread overview: 193+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-13 19:47 [RFC PATCH v2 00/13] Kernel based bootsplash Max Staudt
2017-12-13 19:47 ` Max Staudt
2017-12-13 19:47 ` Max Staudt
2017-12-13 19:47 ` [RFC PATCH v2 01/13] bootsplash: Initial implementation showing black screen Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 23:55   ` Randy Dunlap
2017-12-13 23:55     ` Randy Dunlap
2017-12-14 15:37     ` Max Staudt
2017-12-14 15:37       ` Max Staudt
2017-12-13 19:47 ` [RFC PATCH v2 02/13] bootsplash: Add file reading and picture rendering Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47 ` [RFC PATCH v2 03/13] bootsplash: Flush framebuffer after drawing Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 21:35   ` Daniel Vetter
2017-12-13 21:35     ` Daniel Vetter
2017-12-13 21:35     ` Daniel Vetter
2017-12-14 15:36     ` Max Staudt
2017-12-14 15:36       ` Max Staudt
2017-12-14 15:36       ` Max Staudt
2017-12-19 12:23       ` Daniel Vetter
2017-12-19 12:23         ` Daniel Vetter
2017-12-19 12:23         ` Daniel Vetter
2017-12-19 13:34         ` Max Staudt
2017-12-19 13:34           ` Max Staudt
2017-12-19 13:34           ` Max Staudt
2017-12-19 13:57           ` Daniel Vetter
2017-12-19 13:57             ` Daniel Vetter
2017-12-19 14:07             ` Oliver Neukum
2017-12-19 14:07               ` Oliver Neukum
2017-12-31 12:53               ` Alan Cox
2017-12-31 12:53                 ` Alan Cox
2017-12-31 12:53                 ` Alan Cox
2018-01-03 18:04                 ` Max Staudt
2018-01-03 18:04                   ` Max Staudt
2018-01-03 18:04                   ` Max Staudt
2017-12-19 15:41             ` Max Staudt
2017-12-19 15:41               ` Max Staudt
2017-12-19 15:41               ` Max Staudt
2017-12-19 16:02               ` Daniel Vetter
2017-12-19 16:02                 ` Daniel Vetter
2017-12-19 16:02                 ` Daniel Vetter
2017-12-19 16:23                 ` Max Staudt
2017-12-19 16:23                   ` Max Staudt
2017-12-19 16:23                   ` Max Staudt
2017-12-20  9:45                   ` Daniel Vetter
2017-12-20  9:45                     ` Daniel Vetter
2017-12-20  9:45                     ` Daniel Vetter
2017-12-19 16:09               ` Daniel Vetter
2017-12-19 16:09                 ` Daniel Vetter
2017-12-19 16:09                 ` Daniel Vetter
2017-12-19 16:26                 ` Max Staudt
2017-12-19 16:26                   ` Max Staudt
2017-12-19 16:26                   ` Max Staudt
2017-12-19 21:01               ` Ray Strode
2017-12-19 21:01                 ` Ray Strode
2017-12-19 21:01                 ` Ray Strode
2017-12-20 13:14                 ` Max Staudt
2017-12-20 13:14                   ` Max Staudt
2017-12-20 13:14                   ` Max Staudt
2017-12-20 15:35                   ` Ray Strode
2017-12-20 15:35                     ` Ray Strode
2017-12-20 15:35                     ` Ray Strode
2017-12-20 16:52                     ` Max Staudt
2017-12-20 16:52                       ` Max Staudt
2017-12-20 16:52                       ` Max Staudt
2017-12-13 19:47 ` [RFC PATCH v2 04/13] bootsplash: Add corner positioning Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47 ` [RFC PATCH v2 05/13] bootsplash: Add animation support Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47 ` [RFC PATCH v2 06/13] vt: Redraw bootsplash fully on console_unblank Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47 ` [RFC PATCH v2 07/13] vt: Add keyboard hook to disable bootsplash Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47 ` [RFC PATCH v2 08/13] sysrq: Disable bootsplash on SAK Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47 ` [RFC PATCH v2 09/13] fbcon: Disable bootsplash on oops Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47 ` [RFC PATCH v2 10/13] Documentation: Add bootsplash main documentation Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47 ` [RFC PATCH v2 11/13] bootsplash: sysfs entries to load and unload files Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47 ` [RFC PATCH v2 12/13] tools/bootsplash: Add a basic splash file creation tool Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47 ` [RFC PATCH v2 13/13] tools/bootsplash: Add script and data to create sample file Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:47   ` Max Staudt
2017-12-13 19:52 ` [RFC PATCH v2 00/13] Kernel based bootsplash Max Staudt
2017-12-13 19:52   ` Max Staudt
2017-12-13 19:52   ` Max Staudt
2017-12-19 16:16 ` Daniel Vetter
2017-12-19 16:16   ` Daniel Vetter
2017-12-19 16:16   ` Daniel Vetter
2017-12-19 17:04   ` Max Staudt
2017-12-19 17:04     ` Max Staudt
2017-12-19 17:04     ` Max Staudt
2017-12-19 17:26     ` Daniel Vetter
2017-12-19 17:26       ` Daniel Vetter
2017-12-19 17:26       ` Daniel Vetter
2017-12-19 18:40       ` Max Staudt
2017-12-19 18:40         ` Max Staudt
2017-12-19 18:40         ` Max Staudt
2017-12-20  9:43         ` Daniel Vetter
2017-12-20  9:43           ` Daniel Vetter
2017-12-20  9:43           ` Daniel Vetter
2017-12-20 10:06           ` Neil Armstrong
2017-12-20 10:06             ` Neil Armstrong
2017-12-20 10:06             ` Neil Armstrong
2017-12-20 10:14             ` Daniel Vetter
2017-12-20 10:14               ` Daniel Vetter
2017-12-20 10:14               ` Daniel Vetter
2017-12-20 14:55               ` Max Staudt
2017-12-20 14:55                 ` Max Staudt
2017-12-20 15:11                 ` Daniel Vetter
2017-12-20 15:11                   ` Daniel Vetter
2017-12-20 15:11                   ` Daniel Vetter
2017-12-20 15:19                   ` Daniel Vetter
2017-12-20 15:19                     ` Daniel Vetter
2017-12-20 15:19                     ` Daniel Vetter
2017-12-20 15:22                     ` Daniel Vetter
2017-12-20 15:22                       ` Daniel Vetter
2017-12-20 15:22                       ` Daniel Vetter
2017-12-20 16:23                     ` Max Staudt
2017-12-20 16:23                       ` Max Staudt
2017-12-20 16:23                       ` Max Staudt
2017-12-20 16:15                   ` Max Staudt
2017-12-20 16:15                     ` Max Staudt
2017-12-20 16:15                     ` Max Staudt
2017-12-31 12:44                   ` Alan Cox
2017-12-31 12:44                     ` Alan Cox
2017-12-31 12:44                     ` Alan Cox
2018-01-03 18:00                     ` Max Staudt
2018-01-03 18:00                       ` Max Staudt
2017-12-20 14:16             ` Max Staudt
2017-12-20 14:16               ` Max Staudt
2017-12-20 14:16               ` Max Staudt
2017-12-20 14:10           ` Max Staudt
2017-12-20 14:10             ` Max Staudt
2017-12-20 14:10             ` Max Staudt
2017-12-31 12:35         ` Alan Cox
2017-12-31 12:35           ` Alan Cox
2017-12-31 12:35           ` Alan Cox
2018-01-03 17:56           ` Max Staudt
2018-01-03 17:56             ` Max Staudt
2018-01-03 17:56             ` Max Staudt
2017-12-19 20:30     ` Ray Strode [this message]
2017-12-19 20:30       ` Ray Strode
2017-12-19 20:30       ` Ray Strode
2017-12-20 13:03       ` Max Staudt
2017-12-20 13:03         ` Max Staudt
2017-12-20 13:03         ` Max Staudt
2017-12-20 15:21         ` Ray Strode
2017-12-20 15:21           ` Ray Strode
2017-12-20 15:21           ` Ray Strode
2017-12-20 16:44           ` Max Staudt
2017-12-20 16:44             ` Max Staudt
2017-12-20 16:44             ` Max Staudt
2017-12-21 14:51             ` Ray Strode
2017-12-21 14:51               ` Ray Strode
2017-12-21 14:51               ` Ray Strode
2017-12-21 16:32               ` Max Staudt
2017-12-21 16:32                 ` Max Staudt
2017-12-20 11:08   ` Johannes Thumshirn
2017-12-20 11:08     ` Johannes Thumshirn
2017-12-20 11:22     ` Daniel Stone
2017-12-20 11:22       ` Daniel Stone
2017-12-20 11:22       ` Daniel Stone
2017-12-20 12:48       ` Johannes Thumshirn
2017-12-20 12:48         ` Johannes Thumshirn
2017-12-29 17:13   ` Jani Nikula
2017-12-29 17:13     ` Jani Nikula
2017-12-29 17:13     ` Jani Nikula
2018-01-03 17:38     ` Max Staudt
2018-01-03 17:38       ` Max Staudt
2017-12-21  9:48 ` Daniel Vetter
2017-12-21  9:48   ` Daniel Vetter
2017-12-21  9:48   ` Daniel Vetter
2017-12-21 16:52   ` Max Staudt
2017-12-21 16:52     ` Max Staudt
2017-12-21 16:52     ` Max Staudt
2017-12-21 15:00 ` Philip Müller
2017-12-21 15:00   ` Philip Müller

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='CAA_UwzJNC0rJxpH95UwwyT=d1JHLzSUTmiPeZhWpjguP-kV_Ow@mail.gmail.com' \
    --to=halfline@gmail.com \
    --cc=b.zolnierkie@samsung.com \
    --cc=bernhard.rosenkranzer@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michal@markovi.net \
    --cc=mstaudt@suse.de \
    --cc=oneukum@suse.com \
    --cc=philm@manjaro.org \
    --cc=sndirsch@suse.com \
    --cc=tiwai@suse.com \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.