Ensuring Nouveau is correctly setup on an Optimus (nvidia) laptop

Hello everyone;

I’m using a laptop with a GTX 760M graphics card; now running Fedora 37; up until recently I was using the proprietary drivers, but for some reason the kernel mods seemed to stop either building or working, either way, since it’s a relatively old card it’s no longer on the latest drivers branch; so I thought of trying the nouveau way; so while everything is working so far, I don’t believe I get any 3D acceleration; so there are some bits that I would like to get clarified; according to the nouveau site VideoAcceleration I should be able to get acceleration as long as I install the “EXTFW” (external firmware), so my questions are:

  1. Is, in Fedora, the external firmware mentioned in the noveau site the nvidia-gpu-firmware? I got that one installed.

  2. When I run xrandr --listproviders both providers show the name modesetting, is that meant to be correct?

Output:

Providers: number : 2
Provider 0: id: 0x45 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 3 outputs: 3 associated providers: 1 name:modesetting
Provider 1: id: 0xd9 cap: 0x5, Source Output, Source Offload crtcs: 0 outputs: 0 associated providers: 1 name:modesetting
  1. On my grub args I have initcall_blacklist=simpledrm_platform_driver_init remaining, I removed most of the ones mentioned in Howto/NVIDIA - RPM Fusion ; should that also be removed?
cat -p /proc/cmdline 
BOOT_IMAGE=(hd0,msdos1)/vmlinuz-6.1.8-200.fc37.x86_64 root=UUID=cee72693-77ec-45cc-96bc-a17aa98da5e2 ro rootflags=subvol=root rhgb quiet initcall_blacklist=simpledrm_platform_driver_init
  1. Running DRI_PRIME=1 glxgears should give a way higher number than with DRI_PRIME=0 glxgears? As it is now, I get the “same”:
DRI_PRIME=1 glxgears
Running synchronized to the vertical refresh.  The framerate should be
approximately the same as the monitor refresh rate.
309 frames in 5.0 seconds = 61.703 FPS
301 frames in 5.0 seconds = 59.997 FPS
301 frames in 5.0 seconds = 60.005 FPS
301 frames in 5.0 seconds = 60.003 FPS
301 frames in 5.0 seconds = 60.001 FPS
DRI_PRIME=0 glxgears
Running synchronized to the vertical refresh.  The framerate should be
approximately the same as the monitor refresh rate.
307 frames in 5.0 seconds = 61.384 FPS
300 frames in 5.0 seconds = 59.999 FPS
300 frames in 5.0 seconds = 59.999 FPS
301 frames in 5.0 seconds = 60.005 FPS
301 frames in 5.0 seconds = 60.005 FPS

This is what throws me off, and the reason of me writing this post heh.

Some more (useful?) outputs:

lsmod |grep nouveau
nouveau              2715648  3
drm_ttm_helper         16384  1 nouveau
mxm_wmi                16384  1 nouveau
drm_display_helper    208896  2 i915,nouveau
ttm                    94208  3 drm_ttm_helper,i915,nouveau
video                  65536  3 msi_wmi,i915,nouveau
wmi                    45056  4 video,msi_wmi,mxm_wmi,nouveau
dmesg | grep -iE 'nvidia|nouveau'
[    2.370544] nouveau 0000:01:00.0: NVIDIA GK106 (0e6230a1)
[    2.446891] nouveau 0000:01:00.0: bios: version 80.06.6a.00.01
[    2.551350] nouveau 0000:01:00.0: fb: 2048 MiB GDDR5
[    2.556219] nouveau 0000:01:00.0: bus: MMIO write of ffffffff FAULT at 10ecc0 [ PRIVRING ]
[    2.618877] nouveau 0000:01:00.0: DRM: VRAM: 2048 MiB
[    2.618879] nouveau 0000:01:00.0: DRM: GART: 1048576 MiB
[    2.618881] nouveau 0000:01:00.0: DRM: Pointer to TMDS table not found
[    2.618883] nouveau 0000:01:00.0: DRM: DCB version 4.0
[    2.620576] nouveau 0000:01:00.0: DRM: MM: using COPY for buffer copies
[    2.620777] [drm] Initialized nouveau 1.3.1 20120801 for 0000:01:00.0 on minor 0
[  137.064038] nouveau 0000:01:00.0: Enabling HDA controller
[  137.160101] nouveau 0000:01:00.0: bus: MMIO write of ffffffff FAULT at 10ecc0 [ PRIVRING ]
[  257.388598] nouveau 0000:01:00.0: Enabling HDA controller
[  257.505092] nouveau 0000:01:00.0: bus: MMIO write of ffffffff FAULT at 10ecc0 [ PRIVRING ]
[  320.869801] nouveau 0000:01:00.0: Enabling HDA controller
[  320.986126] nouveau 0000:01:00.0: bus: MMIO write of ffffffff FAULT at 10ecc0 [ PRIVRING ]
[  427.232594] nouveau 0000:01:00.0: Enabling HDA controller
[  427.349135] nouveau 0000:01:00.0: bus: MMIO write of ffffffff FAULT at 10ecc0 [ PRIVRING ]
[ 2043.542404] nouveau 0000:01:00.0: Enabling HDA controller
[ 2043.660727] nouveau 0000:01:00.0: bus: MMIO write of ffffffff FAULT at 10ecc0 [ PRIVRING ]
[ 3546.529737] nouveau 0000:01:00.0: Enabling HDA controller
[ 3546.648380] nouveau 0000:01:00.0: bus: MMIO write of ffffffff FAULT at 10ecc0 [ PRIVRING ]
[ 3553.029472] nouveau 0000:01:00.0: bus: MMIO write of 00000001 FAULT at 002a00 [ !ENGINE ]
[18074.628540] nouveau 0000:01:00.0: Enabling HDA controller
[18074.745768] nouveau 0000:01:00.0: bus: MMIO write of ffffffff FAULT at 10ecc0 [ PRIVRING ]
[18155.047400] nouveau 0000:01:00.0: Enabling HDA controller
[18155.165943] nouveau 0000:01:00.0: bus: MMIO write of ffffffff FAULT at 10ecc0 [ PRIVRING ]
[18165.513786] nouveau 0000:01:00.0: Enabling HDA controller
[18165.632013] nouveau 0000:01:00.0: bus: MMIO write of ffffffff FAULT at 10ecc0 [ PRIVRING ]
[21655.276734] nouveau 0000:01:00.0: Enabling HDA controller
[21655.373305] nouveau 0000:01:00.0: bus: MMIO write of ffffffff FAULT at 10ecc0 [ PRIVRING ]
[21690.180933] nouveau 0000:01:00.0: Enabling HDA controller
[21690.297937] nouveau 0000:01:00.0: bus: MMIO write of ffffffff FAULT at 10ecc0 [ PRIVRING ]

That’s all,

thanks for the time and patience :smiley:

Cheers.

Update:
I’ve now come across this issue: [GF108M] MMIO FAULT and ce: init failed on 5.12-rc8 (#91) · Issues · drm / nouveau · GitLab

So I ran:

MESA_LOADER_DRIVER_OVERRIDE=nouveau glxinfo | grep OpenGL
libGL error: glx: failed to create dri3 screen
libGL error: failed to load driver: nouveau
libGL error: glx: failed to create dri2 screen
libGL error: failed to load driver: nouveau

so maybe I’m affected by that same bug, even tho that’s another GPU family.

According to the nvidia site that card should be able to function with the nvidia 470 driver and is not supported by later drivers.

The 470xx driver can be installed from rpmfusion.
Please look at the output of dnf repolist and if you have rpmfusion-nonfree-nvidia-driver enabled then the install of the proper drivers is a simple
sudo dnf install akmod-nvidia-470xx
If you also wish to be able to use cuda then
sudo dnf install xorg-x11-drv-nvidia-cuda run after the akmod-nvidia is installed will install cuda for you.

There are a couple of caveats to using the 470xx driver for nvidia.
First, it does not support wayland, so the user must run a desktop using xorg.
Secondly, If you use the nouveau driver you do not have the ability to use cuda and also do not get hardware acceleration of graphics. With the nvidia 470xx driver you can use cuda and use the hardware acceleration as well.

Although this limits you to using X for the desktop with the nvidia GPU, the result is almost always worth the trade off.

Before installing the nvidia drivers please run dnf list installed '*nvidia*' and if anything other than the firmware package (nvidia-gpu-firmware) is seen then please post that so we can properly assist to remove whatever needs removed before installing the proper drivers. If the firmware package is not installed then it needs to be reinstalled.

Hey Jeff,

thanks for taking the time to answer! While I can definitely got the proprietary way, I was thinking of giving nouveau a try for a bit, I might have found a bug, which I now have reported: https://gitlab.freedesktop.org/drm/nouveau/-/issues/196

If push comes to shove I’ll install those you suggest.

Cheers.