Unable to blacklist nouveau even with blacklist-nouveau.conf

I’ve tried to install the NVIDIA drivers on openSUSE Tumbleweed distro. The drivers were not working. After some thinkering I realised that it was due to nouveau. The problem is that I am unable to deactivate it. I’ve tried installing the drivers trough the nvidia production rpms and their installer script tried to install the blacklist in modprobe to no avail. It was still enabled, even after restart. Their script indicated this error and recommended that I should check other wikis for debugging.

I’ve tried even one-by-one manually creating some conf blacklists from multiple sources (even if some guides shows blacklist-nouveau.conf as the one required). All of them (including automated) were as: 50-blacklist, blacklist, blacklist-noveau, nvidia-installer-disable-nouveau and nvidia. Still got Driver Status: nouveau is active under hwinfo. After setting them up, the command sudo dracut -f was used too (mkinitrd is deprecated).

I got a laptop with MUX (physical switch between intel/nvidia) and I’ve set it to Dedicated GPU. I tried to use G06.

Also, it runs systemd-boot and Secure Boot active on UEFI and openSUSE installation (compatibility enabled); tried with it disabled, even if I don’t want as such, no solution.

The only way I could do it was by setting in YaST the following command line: rd.driver.blacklist=nouveau and also I got a reference for modprobe.blacklist=nouveau, because, as a side note, I’m not that sure if is recommended to use them together or just one. Still, I find this (and even nomodeset) rather hacky, why isn’t blacklisting by conf working at all?

PS: Also, how can I manage it to support dedicated GPU only and at times, even hybrid UEFI iGPU/GPU without thinkering it?

Did you unload the nouveau driver before running the dracut command?

I am not that sure what you mean by it. From what I could research, it was demanded to blacklist in conf and then use dracut. Firstly I tried nvidia opensuse repos, no conf, then by nvidia script installer with its automated blacklist. The installer reported that it couldn’t do it automatically by conf, because it was still active. After that, I self set the confs.

So, I have configured the confs and then used dracut, nothing more.

@Awoax I’m assuming this is a hybrid setup? Likewise systemd-boot I’ve not used yet which has a different setup for the requirement for hybrid Intel iGPU (fbdev=1 nosimplefb=1 required) that need to be injected into systemd-boot.

If you set the system to boot to multi-user (eg systemctl set-default multi-user.target) and install either rpms or the run file (need to manually add certs) it should blacklist but dracut -f --regenerate-all is required. To return to a graphical state systemctl set-default graphical.target.

1 Like

Theoretically, my system has a physical MUX switch (UEFI options Hybrid and Dedicate). RIght now, my first desire is to to deal only with the linked dedicate GPU and solve it by conf and after that, set it to allow the swapping from one mode to another (dedicate->hybrid and a working igpu<>gpu link).

Ok, so I got the system under the virtual console. I had to enable the wlan0 network.

Posterity reference:

ncmli device wifi list
nmcli device wifi connect <ssid_name> password <pass>

I also downloaded the packages using the already set repo.

zypper install-new-recommends --repo NVIDIA

The installer went along but alongside some other errors I have noticed something at the end for nvdidia-driver-G06-kmp-default:

nvidia catched
Preparing first configuration
bbswitch not loaded
If you want energy saving bbwitch should be loaded in intel mode.
For this package 'bbswitch' needs to be installed on your system.
Or make use of DynamicPowerMAnagement on Turing GPUs or later by switching to suse-prime's 'offload' or 'nvidia' mode.
modprobe: ERROR: could not insert 'nvidia': Key was rejected by service
modprobe: ERROR: could not insert 'nvidia_drm': Key was rejected by service
ERROR: Unable to query GPU information
Configuration failed

The status is nouveau is still active:

Driver Info #0:
Driver Status: nouveau is active
Driver Activation Cmd: “modprobe nouveau”
Driver Info #1:
Driver Status: nvidia_drm is not active
Driver Activation Cmd: “modprobe nvidia_drm”
Driver Info #2:
Driver Status: nvidia is not active
Driver Activation Cmd: “modprobe nvidia”

Also, there is no .conf generated in modprobe.d by the openSUSE repo packages.

Check if you have pending enrollment requests

mokutil --list-new

if yes, reboot and enter MoklManager to agree to enroll new certificates for NVIDIA. If not, something went wrong.

If you already rebooted without entering MokManager you need to re-enroll certificates, e.g. by reinstalling drivers. Search forum how to enroll certificates manually.

There is no pending enrollment request. I’ve uninstalled to make sure I delete the MOK and reinstalled it again. The key is rejected again.

About .conf, actually I saw this time that it is actually generated, but in /usr/lib/modprobe.d/ as nvidia*.conf. I was thinking it should be in /etc/modprobe.d/. In graphical mode, at least the nivida installer (not sure if including the openSUSE rpms) made it in /etc/.

So modprobe: ERROR: could not insert 'nvidia': Key was rejected by service is the cause of why nouveau isn’t disabled or these are 2 different problems? Though it works just fine by entering the rd.driver.blacklist=nouveau args and so in YaST boot loader…

For reference, other errors in the installation included

-> "warning: no previous prototype..." e.g. "nv-ibmnpu: nv_destroy; nv_get..", "nv-caps-imex: nv_caps".. "nvm_channel_test: test_write_ctrl.." "nvm_hopper_fault_buffer: nvm_hal_hopper_fault_buffer"

-> for nvidia.o: many "warning objtool: 'naked' found in MITIGATION_RETHUNK build"

-> nvidia-peermem.ko, nvidia-modeset.ko, nvidia-drm.ko, nvidia-uvm.ko, nvidia.ko .. due to unavailability of vmlinux

or
/lib/modprobe.d

These are system directories.

If you want to overwrite it, use /etc/modprobe.d

1 Like

These are system directories.

I understand. Be it overwritten or not, there’s no effect sadly.

Found that rd.driver.blacklist should affect the early stage of booting (kernel/initramfs built-in) and modprobe.blacklist is affecting in a later stage, post root filesystem mount (dinamically loaded drivers). As for nouveau rd.driver.blacklist should suffice in this case, but doing both of them, including modprobe.blacklist as precaution may avoid some conflicts if is loaded even earlier by the kernel or other dependencies appear later, from what I gather. Nevertheless, in my case would be the last measure, still trying to get an bug-free automatically rpm/nvidia.run installation trough conf.

Please show:

grep -i 'blacklist nouveau' /etc/modprobe.d/*
grep -i 'blacklist nouveau' /lib/modprobe.d/*

grep -i 'blacklist nouveau' /usr/lib/modprobe.d/*
grep -i 'blacklist nouveau' /etc/modprobe.d/*
/etc/modprobe.d/blacklist-nouveau.conf:blacklist nouveau
grep -i 'blacklist nouveau' /lib/modprobe.d/*
grep -i 'blacklist nouveau' /usr/lib/modprobe.d/*
 Driver Info #0:
    Driver Status: nouveau is active
    Driver Activation Cmd: "modprobe nouveau"
  Driver Info #1:
    Driver Status: nvidia_drm is not active
    Driver Activation Cmd: "modprobe nvidia_drm"
  Driver Info #2:
    Driver Status: nvidia is not active
    Driver Activation Cmd: "modprobe nvidia"
  Config Status: cfg=new, avail=yes, need=no, active=unknown

Default to openSUSE repo rpms:

grep -i 'blacklist nouveau' /etc/modprobe.d/*
grep -i 'blacklist nouveau' /lib/modprobe.d/*
/lib/modprobe.d/nvidia-default.conf:blacklist nouveau
grep -i 'blacklist nouveau' /usr/lib/modprobe.d/*
/usr/lib/modprobe.d/nvidia-default.conf:blacklist nouveau
Driver Info #0:
    Driver Status: nouveau is active
    Driver Activation Cmd: "modprobe nouveau"
  Driver Info #1:
    Driver Status: nvidia_drm is not active
    Driver Activation Cmd: "modprobe nvidia_drm"
  Driver Info #2:
    Driver Status: nvidia is not active
    Driver Activation Cmd: "modprobe nvidia"
  Config Status: cfg=new, avail=yes, need=no, active=unknown

You have restarted after changing it?

Post:
zypper se -si nvidia kernel
uname -a

/sbin/lspci -nnk | grep -EiA3 'vga|display|3d'

Yes, dracut -f --regenerate-all was used and afterwards, the system was restarted too.

zypper se -si nvidia kernel

Loading repository data...
Reading installed packages...

S  | Name                             | Type    | Version                 | Arch   | Repository
---+----------------------------------+---------+-------------------------+--------+-----------
i+ | devel_kernel                     | pattern | 20170319-12.5           | x86_64 | repo-oss
i+ | kernel-default                   | package | 6.9.7-1.1               | x86_64 | repo-oss
i  | kernel-default-devel             | package | 6.9.7-1.1               | x86_64 | repo-oss
i  | kernel-devel                     | package | 6.9.7-1.1               | noarch | repo-oss
i  | kernel-firmware-all              | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-amdgpu           | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-ath10k           | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-ath11k           | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-ath12k           | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-atheros          | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-bluetooth        | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-bnx2             | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-brcm             | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-chelsio          | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-dpaa2            | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-i915             | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-intel            | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-iwlwifi          | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-liquidio         | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-marvell          | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-media            | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-mediatek         | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-mellanox         | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-mwifiex          | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-network          | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-nfp              | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-nvidia           | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-platform         | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-prestera         | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-qcom             | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-qlogic           | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-radeon           | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-realtek          | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-serial           | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-sound            | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-ti               | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-ueagle           | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-firmware-usb-network      | package | 20240618-1.1            | noarch | repo-oss
i  | kernel-install-tools             | package | 0.3.0-2.4               | x86_64 | repo-oss
i  | kernel-macros                    | package | 6.9.7-1.1               | noarch | repo-oss
i  | kernel-source                    | package | 6.9.7-1.1               | noarch | repo-oss
i  | kernel-syms                      | package | 6.9.7-1.1               | x86_64 | repo-oss
i  | libnvidia-egl-wayland1           | package | 1.1.13-1.3              | x86_64 | repo-oss
i  | nfs-kernel-server                | package | 2.6.4-42.1              | x86_64 | repo-oss
i  | nvidia-compute-G06               | package | 550.90.07-23.1          | x86_64 | NVIDIA
i  | nvidia-compute-G06-32bit         | package | 550.90.07-23.1          | x86_64 | NVIDIA
i  | nvidia-driver-G06-kmp-default    | package | 550.90.07_k6.9.3_1-23.1 | x86_64 | NVIDIA
i  | nvidia-gl-G06                    | package | 550.90.07-23.1          | x86_64 | NVIDIA
i  | nvidia-gl-G06-32bit              | package | 550.90.07-23.1          | x86_64 | NVIDIA
i  | nvidia-video-G06                 | package | 550.90.07-23.1          | x86_64 | NVIDIA
i  | nvidia-video-G06-32bit           | package | 550.90.07-23.1          | x86_64 | NVIDIA
i+ | patterns-devel-base-devel_kernel | package | 20170319-12.5           | x86_64 | repo-oss
i  | purge-kernels-service            | package | 0-9.7                   | noarch | repo-oss

uname -a
Linux DESKTOP-X 6.9.7-1-default #1 SMP PREEMPT_DYNAMIC Fri Jun 28 05:50:47 UTC 2024 (a5efffa) x86_64 x86_64 x86_64 GNU/Linux

/sbin/lspci -nnk | grep -EiA3 ‘vga|display|3d’

0000:00:02.0 VGA compatible controller [0300]: Intel Corporation TigerLake-H GT1 [UHD Graphics] [8086:9a68] (rev 01)
        DeviceName:  Onboard IGD
        Subsystem: Hewlett-Packard Company Device [103c:88f7]
        Kernel driver in use: i915
--
0000:01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA106M [GeForce RTX 3060 Mobile / Max-Q] [10de:2520] (rev a1)
        DeviceName: NVIDIA Graphics Device
        Subsystem: Hewlett-Packard Company Device [103c:88f7]
        Kernel driver in use: nouveau

cat /proc/cmdline
initrd=\opensuse-tumbleweed\6.9.7-1-default\initrd.. root=... splash=silent quiet security=apparmor mitigations=off rootflags=subvol=@/.snapshots/1/snapshot systemd.machine_id=...

grep -r nouveau /etc/modules-load.d/
grep -r nouveau /etc/modules

no output

sudo journalctl -b | grep nouveau

Jul 11 14:31:35 localhost kernel: nouveau: detected PR support, will not use DSM
Jul 11 14:31:35 localhost kernel: nouveau 0000:01:00.0: vgaarb: deactivate vga console
Jul 11 14:31:35 localhost kernel: nouveau 0000:01:00.0: NVIDIA GA106 (b76000a1)
Jul 11 14:31:35 localhost kernel: nouveau 0000:01:00.0: bios: version 94.06.21.00.21
Jul 11 14:31:35 localhost kernel: nouveau 0000:01:00.0: fb: 6144 MiB GDDR6
Jul 11 14:31:35 localhost kernel: nouveau 0000:01:00.0: DRM: VRAM: 6144 MiB
Jul 11 14:31:35 localhost kernel: nouveau 0000:01:00.0: DRM: GART: 536870912 MiB
Jul 11 14:31:35 localhost kernel: nouveau 0000:01:00.0: DRM: BIT table 'A' not found
Jul 11 14:31:35 localhost kernel: nouveau 0000:01:00.0: DRM: BIT table 'L' not found
Jul 11 14:31:35 localhost kernel: nouveau 0000:01:00.0: DRM: TMDS table version 2.0
Jul 11 14:31:35 localhost kernel: nouveau 0000:01:00.0: DRM: MM: using COPY for buffer copies
Jul 11 14:31:35 localhost kernel: [drm] Initialized nouveau 1.4.0 20120801 for 0000:01:00.0 on minor 0
Jul 11 14:31:35 localhost kernel: fbcon: nouveaudrmfb (fb0) is primary device
Jul 11 14:31:35 localhost kernel: nouveau 0000:01:00.0: [drm] fb0: nouveaudrmfb frame buffer device
Jul 11 14:31:37 localhost kernel: NVRM: GPU 0000:01:00.0 is already bound to nouveau.
Jul 11 14:31:37 localhost.localdomain kernel: NVRM: GPU 0000:01:00.0 is already bound to nouveau.
Jul 11 14:31:44 DESKTOP-kernel: NVRM: GPU 0000:01:00.0 is already bound to nouveau.
Jul 11 14:31:44 DESKTOP-kernel: NVRM: GPU 0000:01:00.0 is already bound to nouveau.
Jul 11 14:31:44 DESKTOP-kernel: NVRM: GPU 0000:01:00.0 is already bound to nouveau.
Jul 11 14:31:44 DESKTOP-kernel: NVRM: GPU 0000:01:00.0 is already bound to nouveau.
...
Jul 11 14:50:07 DESKTOP sudo[9999]:   user : TTY=pts/1 ; PWD=/home/user ; USER=root ; COMMAND=/usr/sbin/modinfo nouveau

sudo modinfo nouveau

filename:       /usr/lib/modules/6.9.7-1-default/kernel/drivers/gpu/drm/nouveau/nouveau.ko.zst
....
all_firmware
....
license:        GPL and additional rights
description:    nVidia Riva/TNT/GeForce/Quadro/Tesla/Tegra K1+
author:         Nouveau Project
suserelease:    openSUSE Tumbleweed
srcversion:     37FCF2F121C81193D52A967
alias:          pci:v000012D2d*sv*sd*bc03sc*i*
alias:          pci:v000010DEd*sv*sd*bc03sc*i*
depends:        drm_display_helper,ttm,gpu-sched,drm_gpuvm,button,video,drm_ttm_helper,drm_exec,mxm-wmi,i2c-algo-bit,wmi
retpoline:      Y
intree:         Y
name:           nouveau
vermagic:       6.9.7-1-default SMP preempt mod_unload modversions 
sig_id:         PKCS#7
signer:         openSUSE Secure Boot CA
sig_key:        FA:BE:D8...
sig_hashalgo:   sha256
signature:      2A:41:1D:64:A2:99:DE:63:7D:ED:8C:72:78:56:47:46:47:A1:B6:42:...
parm:           vram_pushbuf:Create DMA push buffers in VRAM (int)
parm:           kms_vram_pushbuf:Place EVO/NVD push buffers in VRAM (default: auto) (int)
parm:           tv_norm:Default TV norm.
                Supported: PAL, PAL-M, PAL-N, PAL-Nc, NTSC-M, NTSC-J,
                        hd480i, hd480p, hd576i, hd576p, hd720p, hd1080i.
                Default: PAL
                *NOTE* Ignored for cards with external TV encoders. (charp)
parm:           mst:Enable DisplayPort multi-stream (default: enabled) (int)
parm:           tv_disable:Disable TV-out detection (int)
parm:           ignorelid:Ignore ACPI lid status (int)
parm:           duallink:Allow dual-link TMDS (default: enabled) (int)
parm:           hdmimhz:Force a maximum HDMI pixel clock (in MHz) (int)
parm:           config:option string to pass to driver core (charp)
parm:           debug:debug string to pass to driver core (charp)
parm:           noaccel:disable kernel/abi16 acceleration (int)
parm:           modeset:enable driver (default: auto, 0 = disabled, 1 = enabled, 2 = headless) (int)
parm:           atomic:Expose atomic ioctl (default: disabled) (int)
parm:           runpm:disable (0), force enable (1), optimus only default (-1) (int)

zgrep CONFIG_NOUVEAU /proc/config.gz

CONFIG_NOUVEAU_DEBUG=5
CONFIG_NOUVEAU_DEBUG_DEFAULT=3
# CONFIG_NOUVEAU_DEBUG_MMU is not set
# CONFIG_NOUVEAU_DEBUG_PUSH is not set

zypper search -i nvidia

Loading repository data...
Reading installed packages...

S  | Name                          | Summary                                                               | Type
---+-------------------------------+-----------------------------------------------------------------------+--------
i  | kernel-firmware-nvidia        | Kernel firmware files for Nvidia Tegra and graphics drivers           | package
i  | libnvidia-egl-wayland1        | The EGLStream-based Wayland external platform                         | package
i  | nvidia-compute-G06            | NVIDIA driver for computing with GPGPU                                | package
i  | nvidia-compute-G06-32bit      | 32bit NVIDIA driver for computing with GPGPU                          | package
i  | nvidia-driver-G06-kmp-default | NVIDIA graphics driver kernel module for GeForce 700 series and newer | package
i  | nvidia-gl-G06                 | NVIDIA OpenGL libraries for OpenGL acceleration                       | package
i  | nvidia-gl-G06-32bit           | 32bit NVIDIA OpenGL libraries for OpenGL acceleration                 | package
i  | nvidia-video-G06              | NVIDIA graphics driver for GeForce 700 series and newer               | package
i  | nvidia-video-G06-32bit        | 32bit NVIDIA graphics driver for GeForce 700 series and newer         | package

You have 2 graphic cards, one Intel, one Nvidia.
Maybe suse-prime is what you want?
If secure boot is enabled:

mokutil --sb-state

Have you enrolled the mok key on a reboot?

Mok Example

Do you run this on a snapshot?

Yes I have 2 of them, one integrated and nvidia (dedicate). In my laptop’s UEFI I’ve set, for now, just the dedicate one. Physically (MUX-switch, not trough software) just the dedicate GPU should run right now. I would like to use hybrid too when needed (travel), but for now I try to fix the configuration on the nvidia gpu (simplyfing the debugging).

Exactly, Secure Boot (UEFI) is Enabled. openSUSE installation has Secure Boot compatibility enabled too.

mokutil --sb-state
SecureBoot enabled

For Mok, everytime I enrolled/deleted (depending on the case) the required keys.

The systemd-boot is loading by default the openSUSE Tumbleweed. I haven’t touch at all the snapshots.

sudo journalctl -b | grep blacklist

Jul 11 14:31:31 localhost kernel: Key type blacklist registered
Jul 11 14:31:31 localhost kernel: blacklist: Duplicate blacklisted hash bin:47ff1b63b140b6fc04ed79131331e651da5b2e2f170f5daef4153dc2fbc532b1
Jul 11 14:31:31 localhost kernel: blacklist: Duplicate blacklisted hash bin:5391c3a2fb112102a6aa1edc25ae77e19f5d6f09cd09eeb2509922bfcd5992ea
Jul 11 14:31:31 localhost kernel: blacklist: Duplicate blacklisted hash bin:80b4d96931bf0d02fd91a61e19d14f1da452e66db2408ca8604d411f92659f0a
Jul 11 14:31:31 localhost kernel: blacklist: Duplicate blacklisted hash bin:992d359aa7a5f789d268b94c11b9485a6b1ce64362b0edb4441ccc187c39647b
Jul 11 14:31:31 localhost kernel: blacklist: Duplicate blacklisted hash bin:c452ab846073df5ace25cca64d6b7a09d906308a1a65eb5240e3c4ebcaa9cc0c
Jul 11 14:31:31 localhost kernel: blacklist: Duplicate blacklisted hash bin:e051b788ecbaeda53046c70e6af6058f95222c046157b8c4c1b9c2cfc65f46e5
Jul 11 15:22:09 DESKTOP sudo[13865]:   user : TTY=pts/1 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/nano /etc/dracut.conf.d/nouveau-blacklist.conf

cat /etc/dracut.conf.d/*

# When dracut generates the initramfs, it must refer to disks and partitions to
# be mounted in a persistent manner, to make sure the system will boot
# correctly. By default, dracut uses /dev/mapper device names.
# For example, when dracut detects multipath devices, it will use the DM-MP
# device names such as
#
# /dev/mapper/3600a098000aad73f00000a3f5a275dc8-part1
#
# This is good if the system always runs in multipath mode. But if the system is
# started without multipathing, booting with such an initramfs will fail,
# because the /dev/mapper devices will not exist. The same problem can happen
# with multipath maps and cloned SAN LUNs.
#
# To prevent this from happening, the dracut policy for addressing disks
# and partitions is changed to use /dev/disk/by-uuid device names on all
# architectures except s390/s390x, which must be by-path (bsc#915218).
persistent_policy="by-uuid"
# Below adds additional tools to the initrd which are not urgently necessary to
# bring up the system, but help to debug problems.
# See /usr/lib/dracut/modules.d/95debug/module-setup.sh which additional tools
# are installed and add more if you need them. This specifically helps if you
# use:
# rd.break=[cmdline|pre-udev|pre-trigger|initqueue|pre-mount|
# mount|pre-pivot|cleanup]
# boot parameter or if you are forced to enter the dracut emergency shell.

# add_dracutmodules+=" debug "

add_dracutmodules+=" ostree systemd "

@Awoax Hi, since yours setup in a MUX one (VGA/VGA), if you want to run with just the Nvidia, then you need to inject fbdev=1 nvidia_drm.modeset=1 into the systemd boot options. Does modprobe -c | grep "blacklist nouveau show up in the output?

I get that nvidia_drm.modeset=1 is enforcing nvidia to control the diplay and activates the DRM. Shouldn’t openSUSE set this as default by now? fbdev=1 is mandatory as a console at boot? And if I’m swapping from dedicate to hybrid should I add nosimplefb=1 too?

For that command:

sudo modprobe -c | grep “blacklist nouveau”

blacklist nouveau
blacklist nouveau

As reference, the scenarios are as such:

UEFI options:
→ Dedicate
→ Hybrid

if dedicate: only nvidia gpu by default.
if hybrid: → dedicate (only primary GPU through iGPU… MUX-likewise with performance loss, no use for me)
→ hybrid gpus (dynamic swap the gpus - resonable efficency nedded)
→ igpu (only iGPU used, max efficency)

… hybrid allows managers such as optimus-manager or envycontrol to control them

@Awoax Not that I’m aware of, most folks use the proprietary module rather than the open one… My setup is a desktop Intel/Nvidia/Nvidia (GPU passthrough).

If running Intel, then nosimplefb and drop the nvidia…

I use switcherooctl here as it works on both Xorg and Wayland. Some Hybrid systems work well with suse-prime only, some need bbswitch (and it’s kmp) to switch off the dGPU.

I would recommend either suse-prime or switcherooctl, the other two may have issues…

I see no reason just to run in hybrid mode all the time, Prime Render Offload works well on the newer RTX GPU’s AFAIK.

Likewise some power settings and other tweaks are likely needed depending on what the Nvidia card supports.

Right, I saw some references even here for suse-prime and other sources. I’ll try to compare them to see which one would do my case.

Yep, the difference isn’t that large anymore although I think it is impossible to get it to be near a 0% difference, as benchmarked in 1-3% avg to max 10% (some special cases) because of the gpu doing it using the cpu. By having an mux I try to make use of it even if isn’t worth it that much.

Anyway, that’s a bit stretched, because for now I’m even unable to enable the nvidia drivers because of the not-working blacklists and I can’t seem to find the reason… Could be systemd-boot the culprit?