F40 external display (HDMI) local ❌ but live iso works a treat βœ…πŸ’ͺ

I have a Lenovo P1Gen6 with a seemingly common error, but the standard advice of installing closed nvidia is not the path I really want to take (this setup will not be used for GPU intensive graphics) and the interesting thing is when the laptop is booted with F40 live ISO it works perfectly the nouveau module is autoloaded an the screens are stable (and correct resolution) and ready to be used

But when boot from local disk - F40 - which has all apps/data ready to go teh nouveau module is not present (lsmod | nouveau returns nothing) and the second display/monitor doesnt come on

If I manually modprobe nouveau the second screen comes to life and works normally (stable and correct resolution)

lspci -knn | grep -iA2 vga 
00:02.0 VGA compatible controller [0300]: Intel Corporation Raptor Lake-P [UHD Graphics] [8086:a720] (rev 04) 
Subsystem: Lenovo Device [17aa:2317] 
Kernel driver in use: i915 
-- 
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation AD107GLM [RTX 2000 Ada Generation Laptop GPU] [10de:28b8] (rev a1) 
Subsystem: Lenovo Device [17aa:2317] 
Kernel driver in use: nouveau

nvidia drivers have not been installed, so that proprietary software should be nowhere near this install, and I have checked for any blacklisting in all the areas I know about, but I cannot seem to understand why the local configuration doesnt like loading the nouveau module on boot (dont know where the live iso actually does the nouveau module, suspect either efi or grub as its as early as ~7 seconds)

appreciate the insight to find which boot process initiates and successfully starts the nouveau driver - as I have read this has happened to others that solved it by a clean install

A kernel module/driver cannot be loaded by EFI or GRUB. The earliest it could be loaded is during the initramfs stage of the system bootup. Is the nouveau driver in your initramfs? (Something like lsinitrd <path-to-your-initrd>| grep nouveau should show if the driver is there.)

Thank you, and it does appear to be present in there β†’

sudo lsinitrd /boot/initramfs-6.10.10-200.fc40.x86_64.img | grep nouveau
-rw-r--r--   1 root     root            8 Jul 13 01:00 etc/modules-load.d/50-nouveau.conf
drwxr-xr-x   2 root     root            0 Jul 13 01:00 usr/lib/modules/6.10.10-200.fc40.x86_64/kernel/drivers/gpu/drm/nouveau
-rw-r--r--   1 root     root      1087428 Jul 13 01:00 usr/lib/modules/6.10.10-200.fc40.x86_64/kernel/drivers/gpu/drm/nouveau/nouveau.ko.xz

In that case, the only workaround I can think to try would be to add rd.driver.pre=nouveau to your kernel parameter list. I don’t know what is supposed to trigger that module to load, but that parameter should force it to load as early as possible.

Quoting Thiinkpad P1 G6 Review

Only Optimus 1.0 is supported with no Advanced Optimus or MUX options which is a bit disappointing considering the high-end RTX 4080 GPU.

Quoting https://en.wikipedia.org/wiki/Nvidia_Optimus

When an application is being launched that is determined to benefit from the performance of the discrete GPU, the discrete GPU is powered up and the application is served by a rendering context via that GPU. Otherwise the application is served by a rendering context that uses the integrated GPU. Switching between the graphics processors is designed to be completely seamless and to happen β€œbehind the scenes”.

Optimus support in nouveau describes limitations in nouveau and workarounds.

1 Like