Please help. I am lost. NVIDIA not loaded on Lenovo Legion Y740-15ICHg with intel graphics

@malcolmlewis I run the command and it resulted in errors:

Jan 21 21:14:01 militech.net kernel: ACPI: bus type drm_connector registered
Jan 21 21:14:01 militech.net kernel: simple-framebuffer simple-framebuffer.0: [drm] Registered 1 planes with drm panic
Jan 21 21:14:01 militech.net kernel: [drm] Initialized simpledrm 1.0.0 for simple-framebuffer.0 on minor 0
Jan 21 21:14:01 militech.net kernel: simple-framebuffer simple-framebuffer.0: [drm] fb0: simpledrmdrmfb frame buffer device
Jan 21 21:14:02 militech.net kernel: i915 0000:00:02.0: [drm] Found COFFEELAKE (device ID 3e9b) display version 9.00 stepping N/A
Jan 21 21:14:02 militech.net kernel: i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)
Jan 21 21:14:02 militech.net kernel: [drm] Initialized i915 1.6.0 for 0000:00:02.0 on minor 1
Jan 21 21:14:02 militech.net kernel: fbcon: i915drmfb (fb0) is primary device
Jan 21 21:14:03 militech.net kernel: i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
Jan 21 21:14:05 militech.net systemd[1]: Starting Load Kernel Module drm...
Jan 21 21:14:05 militech.net systemd[1]: modprobe@drm.service: Deactivated successfully.
Jan 21 21:14:05 militech.net systemd[1]: Finished Load Kernel Module drm.
Jan 21 21:14:08 militech.net kernel: [drm] [nvidia-drm] [GPU ID 0x00000100] Loading driver
Jan 21 21:14:09 militech.net kernel: [drm:nv_drm_dev_load [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000100] Failed to allocate NvKmsKapiDevice
Jan 21 21:21:54 militech.net kernel: Modules linked in: snd_seq_dummy snd_hrtimer snd_seq snd_seq_device rfcomm ccm af_packet nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nvidia_drm(POX) nft_ct nvidia_modeset(POX) nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nvidia_uvm(POX) qrtr(n) cmac algif_hash cdc_ncm algif_skcipher cdc_ether nf_tables af_alg usbnet intel_uncore_frequency mii bnep nfnetlink intel_uncore_frequency_common nvidia(POX) intel_tcc_cooling(n) x86_pkg_temp_thermal intel_powerclamp snd_sof_pci_intel_cnl snd_sof_intel_hda_generic soundwire_intel soundwire_cadence snd_sof_intel_hda_common snd_soc_hdac_hda snd_sof_intel_hda_mlink snd_sof_intel_hda snd_sof_pci snd_sof_xtensa_dsp snd_sof snd_sof_utils snd_soc_acpi_intel_match soundwire_generic_allocation snd_soc_acpi soundwire_bus snd_soc_avs(n) coretemp snd_ctl_led snd_soc_hda_codec snd_hda_codec_realtek snd_hda_ext_core snd_hda_codec_generic snd_soc_core snd_hda_scodec_component snd_compress nls_iso8859_1
Jan 21 21:21:54 militech.net kernel:  apple_mfi_fastcharge(n) sparse_keymap crc16 drm_ttm_helper i2c_ccgx_ucsi soundcore intel_pch_thermal intel_soc_dts_iosf(n) int3400_thermal pmt_telemetry int3403_thermal rfkill ac acpi_thermal_rel pmt_class int340x_thermal_zone fan joydev acpi_pad tiny_power_button(n) nvme_fabrics loop fuse efi_pstore(n) dm_mod configfs dmi_sysfs ip_tables x_tables hid_generic usbhid i915 ahci libahci libata sd_mod crct10dif_pclmul(n) scsi_dh_emc i2c_algo_bit crc32_pclmul scsi_dh_rdac drm_buddy polyval_clmulni(n) polyval_generic(n) scsi_dh_alua ttm nvme ghash_clmulni_intel ucsi_acpi sg intel_lpss_pci xhci_pci drm_display_helper nvme_core sha512_ssse3 typec_ucsi intel_lpss scsi_mod xhci_hcd cec nvme_keyring sha256_ssse3 roles idma64 i2c_hid_acpi video usbcore sha1_ssse3 nvme_auth scsi_common mfd_core rc_core typec i2c_hid battery wmi pinctrl_cannonlake button serio_raw btrfs blake2b_generic libcrc32c crc32c_intel xor raid6_pq msr i2c_dev efivarfs aesni_intel crypto_simd cryptd
Jan 21 21:21:54 militech.net kernel: Modules linked in: snd_seq_dummy snd_hrtimer snd_seq snd_seq_device rfcomm ccm af_packet nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nvidia_drm(POX) nft_ct nvidia_modeset(POX) nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nvidia_uvm(POX) qrtr(n) cmac algif_hash cdc_ncm algif_skcipher cdc_ether nf_tables af_alg usbnet intel_uncore_frequency mii bnep nfnetlink intel_uncore_frequency_common nvidia(POX) intel_tcc_cooling(n) x86_pkg_temp_thermal intel_powerclamp snd_sof_pci_intel_cnl snd_sof_intel_hda_generic soundwire_intel soundwire_cadence snd_sof_intel_hda_common snd_soc_hdac_hda snd_sof_intel_hda_mlink snd_sof_intel_hda snd_sof_pci snd_sof_xtensa_dsp snd_sof snd_sof_utils snd_soc_acpi_intel_match soundwire_generic_allocation snd_soc_acpi soundwire_bus snd_soc_avs(n) coretemp snd_ctl_led snd_soc_hda_codec snd_hda_codec_realtek snd_hda_ext_core snd_hda_codec_generic snd_soc_core snd_hda_scodec_component snd_compress nls_iso8859_1
Jan 21 21:21:54 militech.net kernel:  apple_mfi_fastcharge(n) sparse_keymap crc16 drm_ttm_helper i2c_ccgx_ucsi soundcore intel_pch_thermal intel_soc_dts_iosf(n) int3400_thermal pmt_telemetry int3403_thermal rfkill ac acpi_thermal_rel pmt_class int340x_thermal_zone fan joydev acpi_pad tiny_power_button(n) nvme_fabrics loop fuse efi_pstore(n) dm_mod configfs dmi_sysfs ip_tables x_tables hid_generic usbhid i915 ahci libahci libata sd_mod crct10dif_pclmul(n) scsi_dh_emc i2c_algo_bit crc32_pclmul scsi_dh_rdac drm_buddy polyval_clmulni(n) polyval_generic(n) scsi_dh_alua ttm nvme ghash_clmulni_intel ucsi_acpi sg intel_lpss_pci xhci_pci drm_display_helper nvme_core sha512_ssse3 typec_ucsi intel_lpss scsi_mod xhci_hcd cec nvme_keyring sha256_ssse3 roles idma64 i2c_hid_acpi video usbcore sha1_ssse3 nvme_auth scsi_common mfd_core rc_core typec i2c_hid battery wmi pinctrl_cannonlake button serio_raw btrfs blake2b_generic libcrc32c crc32c_intel xor raid6_pq msr i2c_dev efivarfs aesni_intel crypto_simd cryptd

Any solution? Thank you.

Apparently this is an “Optimus” laptop. Is switcheroo-control installed?

zypper se -si switcheroo-control

and if so, what does switcherooctl list display?

It shows this:

Device: 0
  Name:        IntelÂŽ UHD Graphics 630
  Default:     yes
  Environment: DRI_PRIME=pci-0000_00_02_0

No NVIDIA. Ideas?

Your *ERROR* [nvidia-drm] Failed to allocate NvKmsKapiDevice indicates a resource conflict during the handover from the boot-framebuffer to the NVIDIA driver. Even though openSUSE typically sets modeset=1 in /usr/lib/modprobe.d/50-nvidia.conf, adding it explicitly to GRUB ensures it’s active from the very first second of the boot process.

1. Disable SimpleDRM / EFI Framebuffer Conflicts Modern kernels use simpledrm to show a boot logo, which often blocks the NVIDIA driver from ‘grabbing’ the display resources. You should try to combine the NVIDIA modeset parameter with flags that disable the conflicting framebuffer. Add these to your GRUB kernel parameters:

nvidia-drm.modeset=1 video=simplefb:off initcall_blacklist=simpledrm_init

(Alternatively, try sysfb.modeset=0 if the above doesn’t work.)

2. Check for Hybrid Graphics Conflicts In your log, I see i915 (Intel) taking over fb0 very early. On some Legion Y740 models, the ACPI refuses to hand over the KMS (Kernel Mode Setting) capability to NVIDIA if the system is in Hybrid mode.

  • Test: If your BIOS allows it, switch from ‘Hybrid Graphics’ to ‘Discrete Graphics’ only and see if the driver loads successfully.

3. ACPI Backlight Handling Sometimes the way the kernel handles display connectors on Legions interferes with the DRM allocation. You could also try: acpi_backlight=vendor

The NvKmsKapiDevice failure basically means the NVIDIA DRM layer couldn’t initialize because the hardware resources were already ‘locked’ by the generic system framebuffer."

Apologies, where do I add acpi_backlight=vendor? Sorry again where is Grub located in Opensuse Leap 16? I only see Grub2 and it does not contain entries when I used VIM to edit it. Further, will I do sudo update-bootloader afterwards and reboot?

As to BIOS, I tried to switch to Discrete Graphics but the screen becomes unusable due to white lines and flickering so I went back to “switchable graphics” settings.

Thank you and so sorry for being a hassle and asking for steps on how to update Grub. Thank you.

@donmarcos Is this correct:

GRUB_CMDLINE_LINUX_DEFAULT="mitigations=auto quiet security=selinux selinux=1 rd.driver.blacklist=nouveau ia32_emulation=1 nvidia-drm.modeset=1 video=simplefb:off initcall_blacklist=simpledrm_init acpi_backlight=vendor"

I edited Grub via vim /etc/boot/grub. If the above is correct, what do I do after? Do I run sudo update-bootloader and reboot? Thank you.

Try the setting first before changing grub.cfg:

In the boot menu hit ‘e’ and look for the line beginning with linux /boot/vmlinuz...
At the end of this line add acpi_backlight=vendor (or the other suggested settings). Then hit F10 to continue booting.

If you find a working configuration, then you can edit the grub2 boot setings. I suggest using “YaST Boot Loader” found in the System Menu, there you’ll find the tab Kernel Parameters

I tried all the above suggestions including sysfb.modeset=0 and it does not solve the issue - sadly. Here is my current inxi -GSaz:

System:
  Kernel: 6.12.0-160000.8-default arch: x86_64 bits: 64 compiler: gcc v: 13.4.0 clocksource: tsc
    avail: hpet,acpi_pm parameters: BOOT_IMAGE=/boot/vmlinuz-6.12.0-160000.8-default
    root=UUID=1d8c586b-c601-43a9-b2a7-a0479c6398c8 mitigations=auto quiet security=selinux
    selinux=1 rd.driver.blacklist=nouveau ia32_emulation=1 sysfb.modeset=0
  Console: pty pts/1 DM: SDDM Distro: openSUSE Leap 16.0
Graphics:
  Device-1: Intel CoffeeLake-H GT2 [UHD Graphics 630] vendor: Lenovo driver: i915 v: kernel
    arch: Gen-9.5 process: Intel 14nm built: 2016-20 ports: active: eDP-1 empty: none
    bus-ID: 00:02.0 chip-ID: 8086:3e9b class-ID: 0300
  Device-2: NVIDIA TU106BM [GeForce RTX 2060 Mobile] vendor: Lenovo driver: nvidia v: 580.126.09
    alternate: nouveau,nvidia_drm non-free: 550.xx+ status: current (as of 2024-09; EOL~2026-12-xx)
    arch: Turing code: TUxxx process: TSMC 12nm FF built: 2018-2022 pcie: gen: 3 speed: 8 GT/s
    lanes: 16 bus-ID: 01:00.0 chip-ID: 10de:1f51 class-ID: 0300
  Device-3: IMC Networks Integrated Camera driver: uvcvideo type: USB rev: 2.0 speed: 480 Mb/s
    lanes: 1 mode: 2.0 bus-ID: 1-7:6 chip-ID: 13d3:56a6 class-ID: 0e02 serial: <filter>
  Display: unspecified server: X.org v: 1.21.1.15 with: Xwayland v: 24.1.6 compositor: kwin_x11
    driver: X: loaded: modesetting unloaded: vesa alternate: fbdev,intel dri: iris gpu: i915
    tty: 110x27
  Monitor-1: eDP-1 model: LG Display 0x05cf built: 2018 res: 1920x1080 dpi: 142 gamma: 1.2
    size: 344x194mm (13.54x7.64") diag: 395mm (15.5") ratio: 16:9 modes: 1920x1080
  API: EGL v: 1.5 hw: drv: intel iris platforms: device: 0 drv: iris device: 1 drv: swrast gbm:
    drv: iris surfaceless: drv: iris inactive: wayland,x11
  API: OpenGL v: 4.6 compat-v: 4.5 vendor: mesa v: 24.3.3 note: console (EGL sourced)
    renderer: Mesa Intel UHD Graphics 630 (CFL GT2), llvmpipe (LLVM 19.1.7 256 bits)
  API: Vulkan v: 1.4.309 layers: 3 device: 0 type: integrated-gpu name: Intel UHD Graphics 630
    (CFL GT2) driver: N/A device-ID: 8086:3e9b surfaces: N/A

Do I reinstall NVIDIA? or format the laptop and do it again? Thanks.

YaST is deprecated and the main application got removed from Leap 16. Only single modules can be installed (not the default).

To add or remove kernel command line parameters, nowadays update-bootloader is used.

To add a parameter permanently:

sudo update-bootloader --add-option xxxxxxxx
sudo update-bootloader

To remove a parameter permanently:

sudo update-bootloader --add-option xxxxxxxx
sudo update-bootloader

For more information, see man update-bootloader.

Apparently the nvidia driver is loading, so reinstalling is not the first option. There is something preventing the system to access the interface. Gaming laptops like yours may have highly customized BIOSes, especially in the graphics area.
Maybe the Nvidia chip is disabled, powered down, suspended or whatever: check all related settings (anything else beyond “Switchable graphics” and “Discrete”?) or power save and related settings (there might be something powering down the Nvidia to save battery life?), then use mains power, not battery (just in case…)

sudo update-bootloader --del-option xxxxx
1 Like

And just to rule out the obvious, please post:

sudo lspci -nnk |grep -EA3 "VGA|3D|Display"

My apologies. On my fresh tumbleweed-Install its still there, so I thought it would be a convenient way to edit boot settings. On Leap its probably gone.

@BLP: Did you look into journalctl -b | grep drm` after changing the boot settings? Is the error still there or other errors? As OrsoBruno mentioned it could be that the GPU is in a powered down state.

It’s either a hardware issue or some cruft leftover from previous driver installs. Best way would be to purge all the nvidia rpms, setting and configurations etc and drop back to nouveau to see if that works.

@OrsoBruno this is the result:

00:02.0 VGA compatible controller [0300]: Intel Corporation CoffeeLake-H GT2 [UHD Graphics 630] [8086:3e9b]
        Subsystem: Lenovo Device [17aa:3ffe]
        Kernel driver in use: i915
        Kernel modules: i915
--
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU106BM [GeForce RTX 2060 Mobile] [10de:1f51] (rev a1)
        Subsystem: Lenovo Device [17aa:3ffe]
        Kernel driver in use: nvidia
        Kernel modules: nouveau, nvidia_drm, nvidia

Strange - what does it mean?

Sadly still the same result:

Jan 23 20:33:40 militech.net kernel: ACPI: bus type drm_connector registered
Jan 23 20:33:40 militech.net kernel: simple-framebuffer simple-framebuffer.0: [drm] Registered 1 planes with drm panic
Jan 23 20:33:40 militech.net kernel: [drm] Initialized simpledrm 1.0.0 for simple-framebuffer.0 on minor 0
Jan 23 20:33:40 militech.net kernel: simple-framebuffer simple-framebuffer.0: [drm] fb0: simpledrmdrmfb frame buffer device
Jan 23 20:33:41 militech.net kernel: i915 0000:00:02.0: [drm] Found COFFEELAKE (device ID 3e9b) display version 9.00 stepping N/A
Jan 23 20:33:41 militech.net kernel: i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)
Jan 23 20:33:41 militech.net kernel: [drm] Initialized i915 1.6.0 for 0000:00:02.0 on minor 1
Jan 23 20:33:41 militech.net kernel: fbcon: i915drmfb (fb0) is primary device
Jan 23 20:33:42 militech.net kernel: i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
Jan 23 20:33:44 militech.net systemd[1]: Starting Load Kernel Module drm...
Jan 23 20:33:44 militech.net systemd[1]: modprobe@drm.service: Deactivated successfully.
Jan 23 20:33:44 militech.net systemd[1]: Finished Load Kernel Module drm.
Jan 23 20:33:47 militech.net kernel: [drm] [nvidia-drm] [GPU ID 0x00000100] Loading driver
Jan 23 20:33:48 militech.net kernel: [drm:nv_drm_dev_load [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000100] Failed to allocate NvKmsKapiDevice

@malcolmlewis I am open to do this. So, what are the steps? Thank you in advance.

Your laptop is no ordinary “Optimus” laptop where the Nvidia is automatically engaged when needed, but there should be something to switch from one to the other GPU.
That is consistent with the “Switchable Graphics” setting in the BIOS.
Normally switcherooctl is used to do such switching, but if it doesn’t list the Nvidia I’m out of ideas.
Apparently the Nvidia works with the “Discrete” setting (even if with artifacts)?
Or is there something else in the BIOS?

No, there is nothing in the Bios - I went through it deeply. It is very strange. Do I go install prime-select and remove switcherooctl?

No, prime-select is deprecated and I don’t know if it does even work with recent drivers…
Maybe the Nvidia is engaged only when an external display is connected? Anything interesting in the user manual for your laptop?
(Ahhh the usual joy of gaming laptops…)