PoC: profiles/nvidia: Eliminate early KMS usage in favor of proper systemd chainload#236
Draft
PoC: profiles/nvidia: Eliminate early KMS usage in favor of proper systemd chainload#236
Conversation
This was referenced Mar 28, 2026
… chainload Signed-off-by: Vasiliy Stelmachenok <ventureo@cachyos.org>
…ainload Signed-off-by: Vasiliy Stelmachenok <ventureo@cachyos.org>
2d7012b to
b328f81
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I’ve always considered early KMS as a workaround for issues with race conditions when loading between driver and display manager/graphics environment. Here is another approach, that allows you to solve this "right" in my opinion, as it simply ties graphics services to wait for NVIDIA module. To do this, we create
nvidia-module-load.targetand a udev rule that activates it if module loading is successful. If load failed, that’s okay, we haveJobTimeoutSec, which allowsnvidia-module-load.targetto fail but load the rest of the services that depend on it (asWants=implies soft dependencies).To avoid breaking the work plymouth, we should switch to using simple-drm (that is, specify
UseSimpledrm=1in/etc/plymouth/plymouthd.conf, I thought this should be done on the calamares side). This is what Fedora does and it seems normal for them, see: https://fedoraproject.org/wiki/Changes/PlymouthUseSimpledrmThis will certainly require careful testing by other users, but from my testing, it works pretty well. The main advantage is the absence of bloated initramfs, which often becomes an obstacle for configurations with Btrfs snapshots and a separate /boot, as we now do when using limine-snapper-sync, which led us to decide to use ESP partition size 4 Gb by default, which I find excessive.
P. S. I’m still not sure if we should put it in chwd, or make it part of nvidia-utils package, because there are quite a lot of configuration files. On the other hand, I clearly don’t want to change anything in the current users' configuration to avoid any trouble.