No X after installing NVIDIA drivers with an RTX 3090

Using Leap 15.5, I have followed

https://en.opensuse.org/SDB:NVIDIA_drivers

to install the G06 NVIDIA drivers, and now when it reboots it doesn’t start X. It starts to load NVIDIA driver 550.78, which supports the RTX 3090, but then it gives

/usr/lib/gdm/gdm-x-session[1810]: (EE) NVIDIA: Failed to initialize the NVIDIA kernel module. Please see the
/usr/lib/gdm/gdm-x-session[1810]: (EE) NVIDIA: system’s kernel log for additional error messages and
/usr/lib/gdm/gdm-x-session[1810]: (EE) NVIDIA: consult the NVIDIA README for details.

There isn’t a kernel log other than the messages, and I’ve read things on NVIDIA’s site to and haven’t been able to figure this out. I also tried installing the hard way, but that fails because it can’t find version.h, even though the -devel package is installed.

If I take the RTX 3090 out, the system starts up fine using the Intel graphics on the motherboard.

Does anyone have any ideas?

I have now discovered that if I follow the instructions on

(which includes installing kernel modules not installed previously) upon reboot it still goes to a prompt, with the same errors in the messages file. However, if I login at the console, and manually do

modprobe nvidia

the kernel module loads, and then startx works! So, it would seem that the kernel module isn’t loading during boot, but I don’t know why.

Once you’ve loaded the module by hand, update the initramfs using

sudo dracut -f

Confirm

sudo lsinitrd | grep nvidia

and reboot

sudo shutdown -r now

More info:
https://en.opensuse.org/SDB:NVIDIA_the_hard_way#Install_the_driver

When I run

lsinitrd | grep nvidia

on the current ramdisk and I get a whole list of files with “nvidia” in the name. However, having done nothing to it all weekend, and having been out of the office yesterday, I came in today, did nothing but a reboot, and everything is working just fine now.

I dunno…

Well, I spoke too soon. Thinking it was working, I shut it down, moved it, turned it back on, and now it’s back to

/usr/lib/gdm/gdm-x-session[1809]: (EE) NVIDIA: Failed to initialize the NVIDIA kernel module. Please see the
/usr/lib/gdm/gdm-x-session[1809]: (EE) NVIDIA: system’s kernel log for additional error messages and
/usr/lib/gdm/gdm-x-session[1809]: (EE) NVIDIA: consult the NVIDIA README for details.

again. This is after I manually ran ‘dracut -f’', which produced no change in the lsinitrd output, anyway.

@michael.vanhorn what about /sbin/modprobe -c nvidia | grep -E "nvidia" and also inxi -Gxxz

@michael.vanhorn I would also suspect that suse-prime has been installed, remove that (and lock), reboot into the BIOS and disable the Intel GPU, then boot… Or just use the Nvidia gpu for Prime Render Offload?

@malcolmlewis Here is the output of ‘modprobe -c nvidia…’:

/sbin/modprobe -c nvidia | grep -E “nvidia”

blacklist nvidia
blacklist nvidia_drm
blacklist nvidia_modeset
install nvidia PATH=$PATH:/bin:/usr/bin; if /sbin/modprobe --ignore-install nvidia NVreg_DeviceFileUID=0 NVreg_DeviceFileGID=$(getent group video | cut -d: -f3) NVreg_DeviceFileMode=0660 NVreg_PreserveVideoMemoryAllocations=1; then if /sbin/modprobe nvidia_uvm; then if [ ! -c /dev/nvidia-uvm ]; then mknod -m 660 /dev/nvidia-uvm c $(cat /proc/devices | while read major device; do if [ “$device” == “nvidia-uvm” ]; then echo $major; break; fi ; done) 0; chown :video /dev/nvidia-uvm; fi; if [ ! -c /dev/nvidia-uvm-tools ]; then mknod -m 660 /dev/nvidia-uvm-tools c $(cat /proc/devices | while read major device; do if [ “$device” == “nvidia-uvm” ]; then echo $major; break; fi ; done) 1; chown :video /dev/nvidia-uvm-tools; fi; fi; if [ ! -c /dev/nvidiactl ]; then mknod -m 660 /dev/nvidiactl c 195 255; chown :video /dev/nvidiactl; fi; devid=-1; for dev in $(ls -d /sys/bus/pci/devices/); do vendorid=$(cat $dev/vendor); if [ “$vendorid” == “0x10de” ]; then class=$(cat $dev/class); classid=${class%%00}; if [ “$classid” == “0x0300” -o “$classid” == “0x0302” ]; then devid=$((devid+1)); if [ ! -L /run/udev/static_node-tags/uaccess/nvidia${devid} ]; then ln -snf /dev/nvidia${devid} /run/udev/static_node-tags/uaccess/nvidia${devid}; fi; if [ ! -c /dev/nvidia${devid} ]; then mknod -m 660 /dev/nvidia${devid} c 195 ${devid}; chown :video /dev/nvidia${devid}; fi; fi; fi; done; /sbin/modprobe nvidia_drm; if [ ! -c /dev/nvidia-modeset ]; then mknod -m 660 /dev/nvidia-modeset c 195 254; chown :video /dev/nvidia-modeset; fi; fi
options nvidia_drm modeset=1
options nvidia NVreg_DynamicPowerManagement=0x01
options nvidia_drm modeset=1 fbdev=1
alias char_major_195_
nvidia
alias mbp_nvidia_bl apple_bl
alias pci:v000010DEdsvsdbc03sc00i00 nvidia_drm
alias pci:v000010DEdsvsdbc03sc00i00 nvidia
alias pci:v000010DEdsvsdbc03sc02i00 nvidia_drm
alias pci:v000010DEdsvsdbc03sc02i00 nvidia
alias pci:v000010DEdsvsdbc06sc80i00 nvidia_drm
alias pci:v000010DEdsvsdbc06sc80i00 nvidia
alias pci:v000010DEdsvsdbc0Csc80i i2c_nvidia_gpu
alias typec:id0955m* typec_nvidia
alias wmi:603E9613_EF25_4338_A3D0_C46177516DB7 nvidia_wmi_ec_backlight
alias symbol:nvKmsKapiGetFunctionsTable nvidia_modeset
alias symbol:nvUvmInterfaceAddressSpaceCreate nvidia
alias symbol:nvUvmInterfaceAddressSpaceDestroy nvidia
alias symbol:nvUvmInterfaceBindChannelResources nvidia
alias symbol:nvUvmInterfaceChannelAllocate nvidia
alias symbol:nvUvmInterfaceChannelDestroy nvidia
alias symbol:nvUvmInterfaceCslDecrypt nvidia
alias symbol:nvUvmInterfaceCslEncrypt nvidia
alias symbol:nvUvmInterfaceCslIncrementIv nvidia
alias symbol:nvUvmInterfaceCslInitContext nvidia
alias symbol:nvUvmInterfaceCslLogExternalEncryption nvidia
alias symbol:nvUvmInterfaceCslQueryMessagePool nvidia
alias symbol:nvUvmInterfaceCslRotateIv nvidia
alias symbol:nvUvmInterfaceCslSign nvidia
alias symbol:nvUvmInterfaceCslUpdateContext nvidia
alias symbol:nvUvmInterfaceDeRegisterUvmOps nvidia
alias symbol:nvUvmInterfaceDeinitCslContext nvidia
alias symbol:nvUvmInterfaceDestroyAccessCntrInfo nvidia
alias symbol:nvUvmInterfaceDestroyFaultInfo nvidia
alias symbol:nvUvmInterfaceDeviceCreate nvidia
alias symbol:nvUvmInterfaceDeviceDestroy nvidia
alias symbol:nvUvmInterfaceDisableAccessCntr nvidia
alias symbol:nvUvmInterfaceDupAddressSpace nvidia
alias symbol:nvUvmInterfaceDupAllocation nvidia
alias symbol:nvUvmInterfaceDupMemory nvidia
alias symbol:nvUvmInterfaceEnableAccessCntr nvidia
alias symbol:nvUvmInterfaceFlushReplayableFaultBuffer nvidia
alias symbol:nvUvmInterfaceFreeDupedHandle nvidia
alias symbol:nvUvmInterfaceGetChannelResourcePtes nvidia
alias symbol:nvUvmInterfaceGetEccInfo nvidia
alias symbol:nvUvmInterfaceGetExternalAllocPtes nvidia
alias symbol:nvUvmInterfaceGetFbInfo nvidia
alias symbol:nvUvmInterfaceGetGpuInfo nvidia
alias symbol:nvUvmInterfaceGetNonReplayableFaults nvidia
alias symbol:nvUvmInterfaceGetP2PCaps nvidia
alias symbol:nvUvmInterfaceGetPmaObject nvidia
alias symbol:nvUvmInterfaceHasPendingNonReplayableFaults nvidia
alias symbol:nvUvmInterfaceInitAccessCntrInfo nvidia
alias symbol:nvUvmInterfaceInitFaultInfo nvidia
alias symbol:nvUvmInterfaceMemoryAllocFB nvidia
alias symbol:nvUvmInterfaceMemoryAllocSys nvidia
alias symbol:nvUvmInterfaceMemoryCpuMap nvidia
alias symbol:nvUvmInterfaceMemoryCpuUnMap nvidia
alias symbol:nvUvmInterfaceMemoryFree nvidia
alias symbol:nvUvmInterfaceOwnPageFaultIntr nvidia
alias symbol:nvUvmInterfaceP2pObjectCreate nvidia
alias symbol:nvUvmInterfaceP2pObjectDestroy nvidia
alias symbol:nvUvmInterfacePagingChannelAllocate nvidia
alias symbol:nvUvmInterfacePagingChannelDestroy nvidia
alias symbol:nvUvmInterfacePagingChannelPushStream nvidia
alias symbol:nvUvmInterfacePagingChannelsMap nvidia
alias symbol:nvUvmInterfacePagingChannelsUnmap nvidia
alias symbol:nvUvmInterfacePmaAllocPages nvidia
alias symbol:nvUvmInterfacePmaFreePages nvidia
alias symbol:nvUvmInterfacePmaPinPages nvidia
alias symbol:nvUvmInterfacePmaRegisterEvictionCallbacks nvidia
alias symbol:nvUvmInterfacePmaUnregisterEvictionCallbacks nvidia
alias symbol:nvUvmInterfaceQueryCaps nvidia
alias symbol:nvUvmInterfaceQueryCopyEnginesCaps nvidia
alias symbol:nvUvmInterfaceRegisterGpu nvidia
alias symbol:nvUvmInterfaceRegisterUvmCallbacks nvidia
alias symbol:nvUvmInterfaceReleaseChannel nvidia
alias symbol:nvUvmInterfaceReportNonReplayableFault nvidia
alias symbol:nvUvmInterfaceRetainChannel nvidia
alias symbol:nvUvmInterfaceServiceDeviceInterruptsRM nvidia
alias symbol:nvUvmInterfaceSessionCreate nvidia
alias symbol:nvUvmInterfaceSessionDestroy nvidia
alias symbol:nvUvmInterfaceSetPageDirectory nvidia
alias symbol:nvUvmInterfaceStopChannel nvidia
alias symbol:nvUvmInterfaceTogglePrefetchFaults nvidia
alias symbol:nvUvmInterfaceTsgAllocate nvidia
alias symbol:nvUvmInterfaceTsgDestroy nvidia
alias symbol:nvUvmInterfaceUnregisterGpu nvidia
alias symbol:nvUvmInterfaceUnsetPageDirectory nvidia
alias symbol:nv_register_error_cb nvidia
alias symbol:nv_unregister_error_cb nvidia
alias symbol:nvidia_get_rm_ops nvidia
alias symbol:nvidia_p2p_destroy_mapping nvidia
alias symbol:nvidia_p2p_dma_map_pages nvidia
alias symbol:nvidia_p2p_dma_unmap_pages nvidia
alias symbol:nvidia_p2p_free_dma_mapping nvidia
alias symbol:nvidia_p2p_free_page_table nvidia
alias symbol:nvidia_p2p_get_pages nvidia
alias symbol:nvidia_p2p_get_pages_persistent nvidia
alias symbol:nvidia_p2p_get_rsync_registers nvidia
alias symbol:nvidia_p2p_init_mapping nvidia
alias symbol:nvidia_p2p_put_pages nvidia
alias symbol:nvidia_p2p_put_pages_persistent nvidia
alias symbol:nvidia_p2p_put_rsync_registers nvidia
alias symbol:nvidia_p2p_register_rsync_driver nvidia
alias symbol:nvidia_p2p_unregister_rsync_driver nvidia

The infix command says

inxi -Gxxz

Graphics:
Device-1: Intel RocketLake-S GT1 [UHD Graphics P750] vendor: Dell driver: i915 v: kernel
arch: Gen-12.1 ports: active: none empty: DP-1, DP-2, DP-3, HDMI-A-1, HDMI-A-2, HDMI-A-3
bus-ID: 00:02.0 chip-ID: 8086:4c90
Device-2: NVIDIA GA102 [GeForce RTX 3090] vendor: Dell driver: N/A arch: Ampere pcie:
speed: 16 GT/s lanes: 16 bus-ID: 01:00.0 chip-ID: 10de:2204
Display: server: X.org v: 1.21.1.4 with: Xwayland v: 22.1.5 driver: N/A tty: 132x42
API: OpenGL Message: GL data unavailable in console for root.

@malcolmlewis Yes, sues-prime is installed. I’ll try removing it and try to disable the Intel card in BIOS and report back what happens.

After removing sues-prime, it seems to be right, finally. I wasn’t able to disable the Intel card in the BIOS. The most I can do is set the nvidia card to the primary. I left it set to “auto”, though, so I could finish rebooting so as to check the effect of removing suse-prime. And that seems to be working, and after multiple reboots, so I’m just going to leave it where it is.

Perhaps removing suse-prime should be including in the install instructions for the NVIDIA drivers?

@michael.vanhorn So the above was the issue… suse-prime is more for laptops, rather than desktops…

Do you need the Nvidia card all the time, you could look at using Prime Render Offload See: https://download.nvidia.com/XFree86/Linux-x86_64/550.78/README/primerenderoffload.html Your on GNOME, if so there is switcherooctl which has dbus integration in GNOME, can just right-click and launch an application with the discrete card (Nvidia,/AMD) it’s what I use here on GNOME.

If it was just me, I could probably use the switcher to only use it when needed, but it’s a lab full of people who wouldn’t understand what that meant, so, yes, we need it all the time.

Thank you!