I run Fedora 37 and using nvidia proprietary drivers I cannot access any of my TTYs, and the kernel out during boot (disabling rghb quiet in grub) is blank once the driver gets loaded. As far as I can tell, this was caused by a change in Fedora 36 where fbdev (drivers?) were replaced with CONFIG_DRM and CONFIG_SYSFB_SIMPLEFB. On my gentoo install running the latest nvidia drivers, I can run CONFIG_FB_SIMPLE on my kernel (which I can’t on Fedora because it’s prebuilt) without an issue and I can access my TTYs and watch the boot process on my RTX3070.
There was a bug raised against Fedora for this, where a workaround was implemented: 2071209 – Laptop display is not turning on with simpledrm driver in kernel and Nvidia driver - but the underlying issue is that the nvidia driver currently relies on having the EFIFB driver loaded, and isn’t compatible with simpledrm, so it would be nice if nvidia were to add support for using the simpledrm framebuffer instead.
The workaround for Fedora >= 36 is to have nvidia-drm.modeset=1 be added to the kernel command line (e.g. edit GRUB_CMDLINE_LINUX in /etc/default/grub and regenerate grub config) which will trigger the workaround and should allow everything to work as it did before.
Unfortunately, I already have nvidia-drm.modeset=1 to have Wayland work. My motherboard is old enough that it doesn’t come with an EFI, so what can I do now?
Ah right - well - the patch linked from the bugzilla was supposed to also use the VESAFB when not in UEFI mode, but I’m guessing something there doesn’t quite work for you - not sure if anyone tested the non-UEFI boot mode I’m afraid. I suggest replying to that bugzilla to see what other info you could provide to help understand what’s going on for you.
On my gentoo install running the latest nvidia drivers, I can run CONFIG_FB_SIMPLE on my kernel (which I can’t on Fedora because it’s prebuilt) without an issue and I can access my TTYs and watch the boot process on my RTX3070.
can you explain a little more this?
is kernel 6.x?
greetings
EDIT: apply this patch as “upported” to kernel 6 and add nvidia-drm.modeset=1 to kernel commandline. not works for me :(
diff --git a/drivers/firmware/sysfb.c b/drivers/firmware/sysfb.c
index 2bfbb05f7d896912712679b9999060a2b04e4685..a504f7234f35289fa8b577f10b570ce25dbf28f3 100644
--- a/drivers/firmware/sysfb.c
+++ b/drivers/firmware/sysfb.c
@@ -34,6 +34,22 @@
#include <linux/screen_info.h>
#include <linux/sysfb.h>
+static int skip_simpledrm;
+
+static int __init simpledrm_disable(char *opt)
+{
+ if (!opt)
+ return -EINVAL;
+
+ get_option(&opt, &skip_simpledrm);
+
+ if (skip_simpledrm)
+ pr_info("The simpledrm driver will not be probed\n");
+
+ return 0;
+}
+early_param("nvidia-drm.modeset", simpledrm_disable);
+
static __init int sysfb_init(void)
{
struct screen_info *si = &screen_info;
@@ -45,7 +61,7 @@ static __init int sysfb_init(void)
/* try to create a simple-framebuffer device */
compatible = sysfb_parse_mode(si, &mode);
- if (compatible) {
+ if (compatible && !skip_simpledrm) {
pd = sysfb_create_simplefb(si, &mode);
if (!IS_ERR(pd))
goto unlock_mutex;
(CONFIG_DRM_SIMPLEDRM=y, CONFIG_FB_VESA=y and CONFIG_FB_EFI=y is enabled by default in my kernel (based/used Archlinux package)
This issue is still present with the 570.86.16 Beta driver.
For older generation GPUs (<= Pascal), nvidia_drm.fbdev=0 kernel parameter is still required to have a functional TTY, display the full boot text, and avoid the “freezing” / black screen.
Also, nvidia_drm.modeset=1is still required as a kernel parameter to avoid the simpledrm device creation, used in combination with the patched Arch kernel.
EDIT: Cross-linking back to an extensive, related Arch GitLab issue for more details:
I wasn’t able to reproduce your problem, but I also can’t tell from the bug report log exactly what your display configuration is (logging with Wayland is lacking compared to Xorg). Can you describe exactly how many and which kinds of monitors you have attached?
#1) simpledrm framebuffer device incompatibility in coexisting with nVidia driver. Arch is still carrying a patch after many kernel releases going back at least to kernel 6.3.x, requiring all nVidia users to apply nvidia_drm.modeset=1 kernel parameter to inhibit the simplefb in early boot:
#2)nvidia_drm.fbdev=1 incompatibility with older generation nVidia GPUs (<=Pascal). Ever since fbdev=1 became the default… TTYs are not accesssible, Gnome soft-freezes, and any console boot text following the initial initramfs loading is missing/blank, presumably when the framebuffer handoff occurs.
Several Arch Forum reports of this issue have been worked around for users of 10 series (and older cards) by applying nvidia_drm.fbdev=0 kernel parameter. I continue to use it to this day as I require TTY access.
My setup is two older standard 60hz monitors, one DP the other DVI, running off a GTX 1050Ti.
Thanks. The incompatibility with simpledrm is a known problem and the only real workaround is setting fbdev=1. The Arch workaround that looks for nvidia_drm.modeset=1 on the kernel command line should only be necessary if you’re loading it with fbdev=0.
For #2, can you please try booting with only one monitor connected?
Thanks for testing that. I have a feeling this is tracked in internal bug 4157529. I’d be sure if plugging in two monitors that use the same resolution worked, but I understand that’s hard to test if you don’t happen to have multiple monitors on hand.