Plymouth, F23 and 364.15


I’ve been trying to get Plymouth to work with the newest drivers, but I’ve been running into some difficulty. I’ve updated the initramfs to contain all the drivers, and the modprobe configuration to enable modesetting.

The first issue was that Plymouth 0.8.9 has a really weird way of initalising DRM, which leads it to calling drmOpen(“nvidia”, NULL), rather than “nvidia-drm”. It comes up with the “nvidia” driver by getting the major/minor device numbers of /dev/dri/card0, then reading the link: /sys/dev/char/$major:$minor/device/driver, and gets the last component of that path.

I’m not sure if it’s correct that the DRM node is being registered to the nvidia module, rather than the nvidia-drm module. This logic has been removed in the newer version of plymouth, which just open’s /dev/dri/card0.

After hacking up Plymouth to just open the damn file directly, I ran into another issue. It seems some of the information being returned via the DRM interface is incorrect. The connectors have an encoder_id of 0, the encoders have a crtc_id of 0. This causes Plymouth to fail thinking that none of the connectors are attached to an encoder.

In addition to this, the properties on the connector objects are returning NULL. I’ve attached the program I used to dump out all the information, and it’s output.


I’ve attached the program I used to dump out all the information, and it’s output.
Didn’t find any attachment

It still says the attachments are being scanned:

[SCANNING… PLEASE WAIT] nvidia-bug-report.log.gz remove
[SCANNING… PLEASE WAIT] modetest.tar.gz remove
[SCANNING… PLEASE WAIT] output-card0.log remove

I’ve uploaded them to my Google Drive account here:
nvidia-bug-report.log.gz (205 KB)
output-card0.log (2.32 KB)
modetest.tar.gz (20 KB)

It seems there’s something wrong with the forum, as it’s still saying the attachments are being scanned. I’ve tried re-uploading them several times, but they all just sit there.


Hi elFarto,

The issue isn’t that the information returned is incorrect, but that Plymouth is expecting a display to have already been enabled and is looking for a connector with an active crtc. The NVIDIA DRM driver currently doesn’t do a modeset automatically, leaving that to clients. So for Plymouth to work on the current implementation, it would have to choose a display configuration and set a mode.

Right, that makes sense. What was confusing me is that someone else had confirmed that it was working on their F23 install, but I’m suspecting that it was just using efifb or something (which is what mine is falling back to).

I’ll have to see how hard it is to get plymouth to do a modeset first.


Seems it was quite simple to get plymouth to actually initialise the displays if they weren’t already. Here’s the patch against plymouth 0.8.2.

plymouth-drm.patch.txt (5.84 KB)

Hi, i’m also interest to get plymouth working with nvidia modeset. So does it work with your patch elFarto? thanks in advance for your reply, i will try to make it work with the last version 0.9.2.

Yes, it works with my patch. The 0.9.2 version of plymouth probably needs less of the patch, since it already just open’s the device, rather than using drmOpen, but the rest of it is still needed.

In addition to the patch, you’ll need to add the nvidia drivers (nvidia, nvidia-drm, nvidia-uvm and nvidia-modeset) to dracut, along with modprobe configuration to pass in the modeset=1 option to the nvidia-drm module. Also, you probably need to make sure nouveau is blacklisted.

$ cat /etc/dracut.conf.d/nvidia.conf 
add_drivers+="nvidia nvidia_modeset nvidia_uvm nvidia_drm"

$ cat /etc/modprobe.d/nvidia.conf 
options nvidia_drm modeset=1

Also, I’ve attached the RPM I ended up building. Once you’ve installed that, you can run: dracut -f, to rebuild your initramfs, just make sure you backup the original just in case you break it and it fails to boot.

plymouth-0.8.9-11.2013.08.14.fc23.x86_64.rpm.gz (84.5 KB)

Thank you very much for your quick answer, and also for providing your patch and rpm.

Can you report this to upstream plymouth ? So everyone can get a nice fix.

Thx for sharing this change.