F42 Change Proposal: Plymouth: Use simpledrm by default (self-contained)

Plymouth: Use simpledrm by default

This is a proposed Change for Fedora Linux.
This document represents a proposed Change. As part of the Changes process, proposals are publicly announced in order to receive community feedback. This proposal will only be implemented if approved by the Fedora Engineering Steering Committee.

Wiki
Announced

:link: Summary

Make plymouth use the simpledrm kernel mode setting (kms) device by default instead of waiting for the GPU driver to initialize.

:link: Owner

:link: Detailed Description

GPU drivers can take a long time to load and probe all the connectors on some machines, causing plymouth to timeout after waiting 8 seconds and falling back to the ugly text splashscreen instead. Also see this blogpost

On UEFI systems the EFI framebuffer will become available as simpledrm kms device much earlier during boot. Plymouth defaults to ignoring simpledrm kms devices for 2 reasons:

  1. These kms devices lack panel rotation information
  2. These kms devices lack physical size information

Both of these issues have been fixed now (click on the issues to see the fixes).

Since both issues have been fixed now we can switch to using the simpledrm kms device by default, showing the splash earlier instead of letting the user look at a static screen and avoiding the issue of the textmode fallback if the GPU driver takes a long time to initialize.

Using simpledrm may lead to some changes in the splash appearance:

  1. With simpledrm plymouth will fallback to heuristics on the resolution instead of DPI info to decide whether or not to use hidpi (e.g. 2x size) rendering. This may result in a different scaling factor for some setups, but I do not expect this really to be an issue.
  2. On old UEFI systems the efifb will not come up in native mode, but rather in 800x600 or 1024x768. This will lead to a pretty significant discontinuity in the boot experience when switching from say 800x600 to 1920x1080 while plymouth was already showing the spinner at 800x600.
  3. On systems where a full modeset is done the monitor going briefly black from the modeset will move from being just before plymouth starts to the switch from simpledrm drm to the real driver.

This change is only about changing the default, it will still be possible to switch plymouth back to ignoring simpledrm kms devices for systems where using the simpledrm kms device leads to a significantly worse boot experience.

:link: Feedback

:link: Benefit to Fedora

On UEFI systems this will improve the boot experience in 2 ways:

  1. This avoids the textmode fallback if the GPU driver takes a long time to initialize.
  2. This shows the splash earlier instead of letting the user look at a static screen

:link: Scope

  • Proposal owners: Write and upstream a plymouth patch to make ignoring simpledrm kms devices configurable from the plymouth config file and modify Fedora’s config to not ignore it.
  • Other developers: N/A (not needed for this Change)
  • Release engineering: N/A (not needed for this Change)
  • Policies and guidelines: N/A (not needed for this
  • Trademark approval: N/A (not needed for this Change)
  • Alignment with the Fedora Strategy: Yes (cleaner boot should help getting more users)

:link: Upgrade/compatibility impact

New and updated systems will automatically switch to the new default. This can be overridden by the user if desired.

:link: How To Test

Users can already test this with Fedora 41 on any hardware which has a video output connected.

First boot the system once without any changes and take a good look at the boot splash (Fedora logo with spinner below it) looks.

Now enable the planned Fedora 42 behavior by passing “plymouth.use-simpledrm” to the kernel commandline. This can be done by running the following command:

sudo grubby --update-kernel=ALL --args="plymouth.use-simpledrm"

After this reboot and take a good look at the boot splash (Fedora logo with spinner below it). If anything looks off which was not there before please report this.

:link: Dependencies

None

:link: Contingency Plan

Flip plymouth’s default back to ignoring simpedrm kms devices.

:link: Documentation

N/A (not a System Wide Change)

:link: Release Notes

Last edited by @amoloney 2025-01-15T23:22:27Z

Last edited by @amoloney 2025-01-15T23:22:27Z

3 Likes

How do you feel about the proposal as written?

  • Strongly in favor
  • In favor, with reservations
  • Neutral
  • Opposed, but could be convinced
  • Strongly opposed
0 voters

If you are in favor but have reservations, or are opposed but something could change your mind, please explain in a reply.

We want everyone to be heard, but many posts repeating the same thing actually makes that harder. If you have something new to say, please say it. If, instead, you find someone has already covered what you’d like to express, please simply give that post a :heart: instead of reiterating. You can even do this by email, by replying with the heart emoji or just “+1”. This will make long topics easier to follow.

Please note that this is an advisory “straw poll” meant to gauge sentiment. It isn’t a vote or a scientific survey. See About the Change Proposals category for more about the Change Process and moderation policy.

Thanks for the testing hint. Maybe another hint on “untesting” would be good, i.e. how to undo the grubby change. (One could also use one-off kernel line edits from grub, of course.)

Adding “untesting” instructions is a good idea, done.

1 Like

Where should it be reported?

will try it out here. :slight_smile: Thanks for working on this!

This proposal implies that other graphics drivers can be dropped this from the initrd. Do you plan to do this?

This change proposal has now been submitted to FESCo with ticket #3351 for voting.

To find out more, please visit our Changes Policy documentation.

Where should it be reported?

Please report issues in bugzilla against plymouth:
https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora&component=plymouth

I’ve also added this to the how-to-test page of the wiki now.

This proposal implies that other graphics drivers can be dropped this from the initrd. Do you plan to do this?

At this time I do not plan to drop graphics drivers from the initrd, as I mentioned in my Moving GPU drivers out of the initramfs blogpost there is one issue which is considered a blocker for this:

"Secondary monitors not lit up by the efifb will stay black during full-disk encryption password entry, since the GPU drivers will now only load after switching to the encrypted root. This includes any monitors connected to the non boot GPU in dual GPU setups.

Generally speaking this is not really an issue, the secondary monitors will light up pretty quickly after the switch to the real rootfs. However when booting a docked laptop, with the lid closed and the only visible monitor(s) are connected to the non boot GPU, then the full-disk encryption password dialog will simply not be visible at all.

This is the main deal-breaker for not implementing this change."

The intent of this change is only to let plymouth use the simpledrm kernel-mode-setting /dev/dri/card# device to show the splash earlier and to avoid textmode fallback in some worst-case drm-driver init time cases.

This does bring us a step closer to actually dropping the GPU drivers from the initrd and if this goes well we could consider maybe doing that for Fedora 43, documenting some sort of workaround for the issue mentioned above.

As long as this is a pitfall, we probably can’t ever do this. It’s a major usability problem, especially since “always-docked” corporate laptops with full disk encryption is very common now.