NVIDIA 390.116 cannot build modules on Fedara 30 Kernel 5.1.5-300.fc30.x86_64

Hi All,

here some data on my sistem just updated to fedora 30 from 29:

nvidia-installer -v |grep version

nvidia-installer: version 390.116 (buildmeister@swio-display-x64-rhel04-14) Sun Jan 27 07:48:10 PST 2019

uname -a

Linux fc-home-romanos-lan 5.1.5-300.fc30.x86_64 #1 SMP Sat May 25 18:00:11 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

lspci |grep -E “VGA|3D”

01:00.0 VGA compatible controller: NVIDIA Corporation GF116 [GeForce GTX 550 Ti] (rev a1)

I’m not a great developer but i think we need to patch this driver because of following errors during the build:
ERROR: Failed to run /usr/sbin/dkms build -m nvidia -v 390.116 -k 5.1.5-300.fc30.x86_64:
Kernel preparation unnecessary for this kernel. Skipping…

Building module:
cleaning build area…
‘make’ -j8 NV_EXCLUDE_BUILD_MODULES=” KERNEL_UNAME=5.1.5-300.fc30.x86_64 modules……(bad exit status: 2)
Error! Bad return status for module build on kernel: 5.1.5-300.fc30.x86_64 (x86_64)
Consult /var/lib/dkms/nvidia/390.116/build/make.log for more information.

Here is the make.log:
CC [M] /var/lib/dkms/nvidia/390.116/build/nvidia/nv-dma.o
In file included from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-linux.h:136,
from /var/lib/dkms/nvidia/390.116/build/nvidia/nv.c:13:
/var/lib/dkms/nvidia/390.116/build/common/inc/nv-list-helpers.h:94:19: error: redefinition of ‘list_is_first’
94 | static inline int list_is_first(const struct list_head *list,
| ^~~~~~~~~~~~~
In file included from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-linux.h:136,
from /var/lib/dkms/nvidia/390.116/build/nvidia/nv-gpu-numa.c:24:
/var/lib/dkms/nvidia/390.116/build/common/inc/nv-list-helpers.h:94:19: error: redefinition of ‘list_is_first’
94 | static inline int list_is_first(const struct list_head *list,
| ^~~~~~~~~~~~~
In file included from /usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/preempt.h:11,
from /usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/spinlock.h:51,
from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-lock.h:16,
from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-linux.h:19,
from /var/lib/dkms/nvidia/390.116/build/nvidia/nv.c:13:
/usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/list.h:214:19: note: previous definition of ‘list_is_first’ was here
214 | static inline int list_is_first(const struct list_head *list,
| ^~~~~~~~~~~~~
In file included from /usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/preempt.h:11,
from /usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/spinlock.h:51,
from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-lock.h:16,
from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-linux.h:19,
from /var/lib/dkms/nvidia/390.116/build/nvidia/nv-gpu-numa.c:24:
/usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/list.h:214:19: note: previous definition of ‘list_is_first’ was here
214 | static inline int list_is_first(const struct list_head *list,
| ^~~~~~~~~~~~~
In file included from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-linux.h:136,
from /var/lib/dkms/nvidia/390.116/build/nvidia/nv-dma.c:15:
/var/lib/dkms/nvidia/390.116/build/common/inc/nv-list-helpers.h:94:19: error: redefinition of ‘list_is_first’
94 | static inline int list_is_first(const struct list_head *list,
| ^~~~~~~~~~~~~
In file included from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-linux.h:136,
from /var/lib/dkms/nvidia/390.116/build/nvidia/nv-chrdev.c:15:
/var/lib/dkms/nvidia/390.116/build/common/inc/nv-list-helpers.h:94:19: error: redefinition of ‘list_is_first’
94 | static inline int list_is_first(const struct list_head *list,
| ^~~~~~~~~~~~~
In file included from /usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/preempt.h:11,
from /usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/spinlock.h:51,
from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-lock.h:16,
from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-linux.h:19,
from /var/lib/dkms/nvidia/390.116/build/nvidia/nv-chrdev.c:15:
/usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/list.h:214:19: note: previous definition of ‘list_is_first’ was here
214 | static inline int list_is_first(const struct list_head *list,
| ^~~~~~~~~~~~~
In file included from /usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/preempt.h:11,
from /usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/spinlock.h:51,
from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-lock.h:16,
from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-linux.h:19,
from /var/lib/dkms/nvidia/390.116/build/nvidia/nv-dma.c:15:
/usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/list.h:214:19: note: previous definition of ‘list_is_first’ was here
214 | static inline int list_is_first(const struct list_head *list,
| ^~~~~~~~~~~~~
In file included from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-linux.h:136,
from /var/lib/dkms/nvidia/390.116/build/nvidia/nv-frontend.c:13:
/var/lib/dkms/nvidia/390.116/build/common/inc/nv-list-helpers.h:94:19: error: redefinition of ‘list_is_first’
94 | static inline int list_is_first(const struct list_head *list,
| ^~~~~~~~~~~~~
In file included from /usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/preempt.h:11,
from /usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/spinlock.h:51,
from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-lock.h:16,
from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-linux.h:19,
from /var/lib/dkms/nvidia/390.116/build/nvidia/nv-frontend.c:13:
/usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/list.h:214:19: note: previous definition of ‘list_is_first’ was here
214 | static inline int list_is_first(const struct list_head *list,
| ^~~~~~~~~~~~~
In file included from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-linux.h:136,
from /var/lib/dkms/nvidia/390.116/build/nvidia/nv-instance.c:13:
/var/lib/dkms/nvidia/390.116/build/common/inc/nv-list-helpers.h:94:19: error: redefinition of ‘list_is_first’
94 | static inline int list_is_first(const struct list_head *list,
| ^~~~~~~~~~~~~
In file included from /usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/preempt.h:11,
from /usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/spinlock.h:51,
from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-lock.h:16,
from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-linux.h:19,
from /var/lib/dkms/nvidia/390.116/build/nvidia/nv-instance.c:13:
/usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/list.h:214:19: note: previous definition of ‘list_is_first’ was here
214 | static inline int list_is_first(const struct list_head *list,
| ^~~~~~~~~~~~~
In file included from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-linux.h:136,
from /var/lib/dkms/nvidia/390.116/build/nvidia/nv-cray.c:15:
/var/lib/dkms/nvidia/390.116/build/common/inc/nv-list-helpers.h:94:19: error: redefinition of ‘list_is_first’
94 | static inline int list_is_first(const struct list_head *list,
| ^~~~~~~~~~~~~
In file included from /usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/preempt.h:11,
from /usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/spinlock.h:51,
from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-lock.h:16,
from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-linux.h:19,
from /var/lib/dkms/nvidia/390.116/build/nvidia/nv-cray.c:15:
/usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/list.h:214:19: note: previous definition of ‘list_is_first’ was here
214 | static inline int list_is_first(const struct list_head *list,
| ^~~~~~~~~~~~~
In file included from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-linux.h:136,
from /var/lib/dkms/nvidia/390.116/build/nvidia/nv-acpi.c:15:
/var/lib/dkms/nvidia/390.116/build/common/inc/nv-list-helpers.h:94:19: error: redefinition of ‘list_is_first’
94 | static inline int list_is_first(const struct list_head *list,
| ^~~~~~~~~~~~~
In file included from /usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/preempt.h:11,
from /usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/spinlock.h:51,
from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-lock.h:16,
from /var/lib/dkms/nvidia/390.116/build/common/inc/nv-linux.h:19,
from /var/lib/dkms/nvidia/390.116/build/nvidia/nv-acpi.c:15:
/usr/src/kernels/5.1.5-300.fc30.x86_64/include/linux/list.h:214:19: note: previous definition of ‘list_is_first’ was here
214 | static inline int list_is_first(const struct list_head *list,
| ^~~~~~~~~~~~~
make[3]: *** [/usr/src/kernels/5.1.5-300.fc30.x86_64/scripts/Makefile.build:276: /var/lib/dkms/nvidia/390.116/build/nvidia/nv-gpu-numa.o] Error 1
make[3]: *** Waiting for unfinished jobs….
make[3]: *** [/usr/src/kernels/5.1.5-300.fc30.x86_64/scripts/Makefile.build:276: /var/lib/dkms/nvidia/390.116/build/nvidia/nv-chrdev.o] Error 1
make[3]: *** [/usr/src/kernels/5.1.5-300.fc30.x86_64/scripts/Makefile.build:276: /var/lib/dkms/nvidia/390.116/build/nvidia/nv-instance.o] Error 1
make[3]: *** [/usr/src/kernels/5.1.5-300.fc30.x86_64/scripts/Makefile.build:276: /var/lib/dkms/nvidia/390.116/build/nvidia/nv-dma.o] Error 1
make[3]: *** [/usr/src/kernels/5.1.5-300.fc30.x86_64/scripts/Makefile.build:276: /var/lib/dkms/nvidia/390.116/build/nvidia/nv-cray.o] Error 1
make[3]: *** [/usr/src/kernels/5.1.5-300.fc30.x86_64/scripts/Makefile.build:276: /var/lib/dkms/nvidia/390.116/build/nvidia/nv-frontend.o] Error 1
make[3]: *** [/usr/src/kernels/5.1.5-300.fc30.x86_64/scripts/Makefile.build:276: /var/lib/dkms/nvidia/390.116/build/nvidia/nv-acpi.o] Error 1
make[3]: *** [/usr/src/kernels/5.1.5-300.fc30.x86_64/scripts/Makefile.build:276: /var/lib/dkms/nvidia/390.116/build/nvidia/nv.o] Error 1
make[2]: *** [/usr/src/kernels/5.1.5-300.fc30.x86_64/Makefile:1575: module/var/lib/dkms/nvidia/390.116/build] Error 2
make[2]: Leaving directory ‘/usr/src/kernels/5.1.5-300.fc30.x86_64’
make[1]: *** [Makefile:169: sub-make] Error 2
make[1]: Leaving directory ‘/usr/src/kernels/5.1.5-300.fc30.x86_64’
make: *** [Makefile:79: modules] Error 2

As stated here (http://rglinuxtech.com/?p=2527) it is a duplicate variable name.

I’ll try to patch by myself, but any expert developer should be welcome.

SR

Why don’t you use RPMFusion?

In case you’re insisting on installing manually (which is never recommended since it breaks Mesa and xorg-x11-xserver packages) you can fetch a patch from here: RepoView: "RPM Fusion Fedora nonfree rawhide - SRPMS"

Hi,
I’m on Fedora 29 and just received kernel 5.1.6, and viola my video refused to start on the next boot. (This is an old AMD-64 box with GeForce GTX 550 Ti as the graphics card.)
I have to use the manual installer as the normal methods give me a driver version 418.x, and that lacks support for this older graphics card. Support is frozen at driver version 390 …

I ran the installer today and ran right into this duplicate symbol error with list_is_first.
I can’t use RPMFusion with this card.
Can driver 390 be patched? It was last updated in February 2019, was forced by another similar issue with a just-released kernel update in Jan 2019. My guess the need is for this minor fix to be applied to 390 and released to the driver downloads site where I can get it.

Why not?, we have patched 390.116 in the repo.

https://download1.rpmfusion.org/nonfree/fedora/updates/29/x86_64/repoview/akmod-nvidia-390xx.html

I have the same problem as the OP (Geforce GTX 560). I’ve been using the manual UNIX drivers provided by Nvidia for some time but decided to try RPM fusion.

I’m using akmod-nvidia-390xx-390.116-3.fc30.x86_64 but it seems to be missing the 32bit and 64bit libraries - or at least some of my 3D applications aren’t aware of them.

For example OBS studio gives me the error

Failed to initialize video.  Your GPU may not be supported, or your graphics drivers may need to be updated obs

I have these packages installed following this guide for Fedora:

https://rpmfusion.org/Howto/NVIDIA#Legacy_GeForce_400.2F500

xorg-x11-drv-nvidia-390xx-libs-390.116-2.fc30.x86_64
kmod-nvidia-390xx-5.1.6-300.fc30.x86_64-390.116-3.fc30.x86_64
nvidia-settings-390xx-390.116-2.fc30.x86_64
xorg-x11-drv-nvidia-390xx-390.116-2.fc30.x86_64
xorg-x11-drv-nvidia-390xx-kmodsrc-390.116-2.fc30.x86_64
akmod-nvidia-390xx-390.116-3.fc30.x86_64
xorg-x11-drv-nvidia-390xx-libs-390.116-2.fc30.i686

Any idea what I’m missing? Thanks for patching the akmod-nvidia I have my display back now at least.

There are libs packages

https://download1.rpmfusion.org/nonfree/fedora/releases/30/Everything/x86_64/os/repoview/xorg-x11-drv-nvidia-390xx-libs.html

Are you trying to use nvenc/nvdec in obs-studio, I dropped support for 390.xx in F30 because of newer nv-codec-headers.

For me with RPMFusion looks like something GLX is missing.

info: CPU Name: Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
info: CPU Speed: 1596.019MHz
info: Physical Cores: 4, Logical Cores: 8
info: Physical Memory: 48280MB Total, 10851MB Free
info: Kernel Version: Linux 5.1.6-300.fc30.x86_64
info: Distribution: Fedora 30
info: Window System: X11.0 - vendor string: Fedora Project - vendor release: 12004000
info: Portable mode: false
QMetaObject::connectSlotsByName: No matching signal for on_advAudioProps_clicked()
QMetaObject::connectSlotsByName: No matching signal for on_advAudioProps_destroyed()
QMetaObject::connectSlotsByName: No matching signal for on_program_customContextMenuRequested(QPoint)
info: OBS 23.1.0 (linux)
info: ---------------------------------
libEGL warning: DRI2: failed to authenticate
info: ---------------------------------
info: audio settings reset:
	samples per sec: 48000
	speakers:        2
info: ---------------------------------
info: Initializing OpenGL...
error: ARB_GLX_create_context not supported!
error: Failed to create context!
error: device_create (GL) failed
error: Failed to initialize video.  Your GPU may not be supported, or your graphics drivers may need to be updated.
info: Freeing OBS context data

UPDATE: Sorry for the noise, it took an additional reboot for the the OpenGL / libraries to work, OBS studio is happy now.

I also seemed to have some cruft in /usr/lib64 from older drivers so got a DRM mismatch in dmesg. Removing those and rebooting/restarting X11 fixed me up.

Gotcha, I had the libs package installed already.

For OBS, I was using nvenc a while ago but now it’s set back to x264 (nvenc option is no longer showing as an option) so that explains why.

Hi all,

Thanks for answers but still problem here and I tried the rpmfusion package with no success.

Now I can boot only on old fedora 29 kernel while the 30 are not booting.

With following rpm installed:

brt-addon-kerneloops-2.12.0-2.fc30.x86_64
kernel-5.0.17-200.fc29.x86_64
kernel-5.1.7-300.fc30.x86_64
kernel-5.1.8-300.fc30.x86_64
kernel-core-5.0.17-200.fc29.x86_64
kernel-core-5.1.7-300.fc30.x86_64
kernel-core-5.1.8-300.fc30.x86_64
kernel-devel-5.0.17-200.fc29.x86_64
kernel-devel-5.1.7-300.fc30.x86_64
kernel-devel-5.1.8-300.fc30.x86_64
kernel-headers-5.1.8-300.fc30.x86_64
kernel-modules-5.0.17-200.fc29.x86_64
kernel-modules-5.1.7-300.fc30.x86_64
kernel-modules-5.1.8-300.fc30.x86_64
kernel-modules-extra-5.0.17-200.fc29.x86_64
kernel-modules-extra-5.1.7-300.fc30.x86_64
kernel-modules-extra-5.1.8-300.fc30.x86_64
kmod-25-5.fc30.x86_64
kmod-libs-25-5.fc30.x86_64
kmod-nvidia-390xx-5.0.17-200.fc29.x86_64-390.116-3.fc30.x86_64
kmod-nvidia-390xx-5.1.7-300.fc30.x86_64-390.116-3.fc30.x86_64
libmikmod-3.3.11.1-5.fc30.x86_64
libreport-plugin-kerneloops-2.10.0-3.fc30.x86_64
nvidia-settings-390xx-390.116-2.fc30.x86_64
xorg-x11-drv-nvidia-390xx-390.116-2.fc30.x86_64
xorg-x11-drv-nvidia-390xx-libs-390.116-2.fc30.i686
xorg-x11-drv-nvidia-390xx-libs-390.116-2.fc30.x86_64

Not the 5.1.7 not the 5.1.8 booteed succesully, but the 5.1.8 have no modules and cannot fallback to nouveau because of kernel boot options for fedora 30 kernels options set.

rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1

Then i tried to install akmod and I had following rpm in my system:

brt-addon-kerneloops-2.12.0-2.fc30.x86_64
akmod-nvidia-390xx-390.116-3.fc30.x86_64
akmods-0.5.6-20.fc30.noarch
kernel-5.0.17-200.fc29.x86_64
kernel-5.1.7-300.fc30.x86_64
kernel-5.1.8-300.fc30.x86_64
kernel-core-5.0.17-200.fc29.x86_64
kernel-core-5.1.7-300.fc30.x86_64
kernel-core-5.1.8-300.fc30.x86_64
kernel-devel-5.0.17-200.fc29.x86_64
kernel-devel-5.1.7-300.fc30.x86_64
kernel-devel-5.1.8-300.fc30.x86_64
kernel-headers-5.1.8-300.fc30.x86_64
kernel-modules-5.0.17-200.fc29.x86_64
kernel-modules-5.1.7-300.fc30.x86_64
kernel-modules-5.1.8-300.fc30.x86_64
kernel-modules-extra-5.0.17-200.fc29.x86_64
kernel-modules-extra-5.1.7-300.fc30.x86_64
kernel-modules-extra-5.1.8-300.fc30.x86_64
kmod-25-5.fc30.x86_64
kmod-libs-25-5.fc30.x86_64
kmod-nvidia-390xx-5.0.17-200.fc29.x86_64-390.116-3.fc30.x86_64
kmod-nvidia-390xx-5.1.7-300.fc30.x86_64-390.116-3.fc30.x86_64
kmod-nvidia-390xx-5.1.8-300.fc30.x86_64-390.116-3.fc30.x86_64
kmodtool-1-34.fc30.noarch
libmikmod-3.3.11.1-5.fc30.x86_64
libreport-plugin-kerneloops-2.10.0-3.fc30.x86_64
nvidia-settings-390xx-390.116-2.fc30.x86_64
xorg-x11-drv-nvidia-390xx-390.116-2.fc30.x86_64
xorg-x11-drv-nvidia-390xx-kmodsrc-390.116-2.fc30.x86_64
xorg-x11-drv-nvidia-390xx-libs-390.116-2.fc30.i686
xorg-x11-drv-nvidia-390xx-libs-390.116-2.fc30.x86_64

But with kernel 5.1.8 the driver have kernel panic and no display is available:

giu 15 16:47:07 fc-home-romanos-lan kernel: nvidia: module license 'NVIDIA' taints kernel.
giu 15 16:47:07 fc-home-romanos-lan kernel: Disabling lock debugging due to kernel taint
giu 15 16:47:07 fc-home-romanos-lan kernel: nvidia-nvlink: Nvlink Core is being initialized, major device number 238
giu 15 16:47:07 fc-home-romanos-lan kernel: nvidia 0000:01:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=io+mem
giu 15 16:47:07 fc-home-romanos-lan kernel: NVRM: loading NVIDIA UNIX x86_64 Kernel Module  390.116  Sun Jan 27 07:21:36 PST 2019 (using threaded interrupts)
giu 15 16:47:07 fc-home-romanos-lan kernel: nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms  390.116  Sun Jan 27 06:30:32 PST 2019
giu 15 16:47:07 fc-home-romanos-lan kernel: [drm] [nvidia-drm] [GPU ID 0x00000100] Loading driver
giu 15 16:47:07 fc-home-romanos-lan systemd-udevd[7327]: Process '/usr/bin/bash -c '/usr/bin/mknod -Z -m 666 /dev/nvidiactl c 195 255'' failed with exit code 1.
giu 15 16:47:07 fc-home-romanos-lan kernel: resource sanity check: requesting [mem 0x000c0000-0x000fffff], which spans more than PCI Bus 0000:00 [mem 0x000c8000-0x000dffff window]
giu 15 16:47:07 fc-home-romanos-lan kernel: caller _nv001168rm+0xe3/0x1d0 [nvidia] mapping multiple BARs
giu 15 16:47:07 fc-home-romanos-lan systemd-udevd[7327]: Process '/usr/bin/bash -c 'for i in $(cat /proc/driver/nvidia/gpus/*/information | grep Minor | cut -d \  -f 4); do /usr/bin/mknod -Z -m 666>
giu 15 16:47:07 fc-home-romanos-lan kernel: [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
giu 15 16:47:07 fc-home-romanos-lan kernel: [drm] No driver support for vblank timestamp query.
giu 15 16:47:07 fc-home-romanos-lan kernel: [drm] Initialized nvidia-drm 0.0.0 20160202 for 0000:01:00.0 on minor 0
giu 15 16:47:07 fc-home-romanos-lan kernel: BUG: unable to handle kernel paging request at 0000441f0f66c308
giu 15 16:47:07 fc-home-romanos-lan kernel: #PF error: [normal kernel read fault]
giu 15 16:47:07 fc-home-romanos-lan kernel: PGD 0 P4D 0 
giu 15 16:47:07 fc-home-romanos-lan kernel: Oops: 0000 [#1] SMP PTI
giu 15 16:47:07 fc-home-romanos-lan kernel: CPU: 2 PID: 482 Comm: plymouthd Tainted: P           OE     5.1.8-300.fc30.x86_64 #1
giu 15 16:47:07 fc-home-romanos-lan kernel: Hardware name: Hewlett-Packard h8-1024ch/2AB5, BIOS 7.12 10/12/2011
giu 15 16:47:07 fc-home-romanos-lan kernel: RIP: 0010:_nv000012kms+0x5b3/0x7c0 [nvidia_modeset]
giu 15 16:47:07 fc-home-romanos-lan kernel: Code: fb 01 0f 84 bf 00 00 00 41 83 fb 02 0f 84 0d 01 00 00 c6 40 10 01 c6 40 2c 01 c6 40 5c 01 4d 8b 98 b0 00 00 00 4d 85 db 74 15 <45> 8b 1b 44 89 58 0>
giu 15 16:47:07 fc-home-romanos-lan kernel: RSP: 0018:ffff9cc341e97bb0 EFLAGS: 00010202
giu 15 16:47:07 fc-home-romanos-lan kernel: RAX: ffff895db1558018 RBX: ffff895dd77ad000 RCX: 0000000000000000
giu 15 16:47:07 fc-home-romanos-lan kernel: RDX: ffff895dd77ad000 RSI: ffff895ddc618990 RDI: 0000000000000000
giu 15 16:47:07 fc-home-romanos-lan kernel: RBP: ffff895ddc618908 R08: ffff895dd77ad000 R09: 0000000000000001
giu 15 16:47:07 fc-home-romanos-lan kernel: R10: ffff895db1558018 R11: 0000441f0f66c308 R12: ffff895dd77ad000
giu 15 16:47:07 fc-home-romanos-lan kernel: R13: ffff895db1558008 R14: 0000000000000001 R15: 0000000000000000
giu 15 16:47:07 fc-home-romanos-lan kernel: FS:  00007f7888443f80(0000) GS:ffff895de3280000(0000) knlGS:0000000000000000
giu 15 16:47:07 fc-home-romanos-lan kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
giu 15 16:47:07 fc-home-romanos-lan kernel: CR2: 0000441f0f66c308 CR3: 00000003193dc004 CR4: 00000000000606e0
giu 15 16:47:07 fc-home-romanos-lan kernel: Call Trace:
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? nv_drm_atomic_apply_modeset_config+0xec/0x100 [nvidia_drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? drm_atomic_check_only+0x579/0x7a0 [drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? drm_atomic_commit+0x13/0x50 [drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? nv_drm_atomic_helper_disable_all+0x178/0x240 [nvidia_drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? nv_drm_master_drop+0x22/0x60 [nvidia_drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? drm_drop_master+0x1e/0x40 [drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? drm_dropmaster_ioctl+0x4f/0x90 [drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? drm_setmaster_ioctl+0xb0/0xb0 [drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? drm_ioctl_kernel+0xaa/0xf0 [drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? drm_ioctl+0x208/0x390 [drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? drm_setmaster_ioctl+0xb0/0xb0 [drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? do_filp_open+0xa5/0x100
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? do_vfs_ioctl+0x405/0x660
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? __audit_syscall_entry+0x100/0x130
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? ksys_ioctl+0x5e/0x90
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? __x64_sys_ioctl+0x16/0x20
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? do_syscall_64+0x5b/0x170
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? entry_SYSCALL_64_after_hwframe+0x44/0xa9
giu 15 16:47:07 fc-home-romanos-lan kernel: Modules linked in: nvidia_drm(POE) nvidia_modeset(POE) nvidia(POE) drm_kms_helper drm ipmi_devintf ipmi_msghandler xt_CHECKSUM ipt_MASQUERADE tun bridge >
giu 15 16:47:07 fc-home-romanos-lan kernel:  snd_hda_codec ghash_clmulni_intel snd_hda_core intel_cstate intel_uncore snd_hwdep snd_seq intel_rapl_perf snd_seq_device snd_pcm i2c_i801 snd_timer snd>
giu 15 16:47:07 fc-home-romanos-lan kernel: CR2: 0000441f0f66c308
giu 15 16:47:07 fc-home-romanos-lan kernel: ---[ end trace 5acdb474aa8bba53 ]---
giu 15 16:47:07 fc-home-romanos-lan kernel: RIP: 0010:_nv000012kms+0x5b3/0x7c0 [nvidia_modeset]
giu 15 16:47:07 fc-home-romanos-lan kernel: Code: fb 01 0f 84 bf 00 00 00 41 83 fb 02 0f 84 0d 01 00 00 c6 40 10 01 c6 40 2c 01 c6 40 5c 01 4d 8b 98 b0 00 00 00 4d 85 db 74 15 <45> 8b 1b 44 89 58 0>
giu 15 16:47:07 fc-home-romanos-lan kernel: RSP: 0018:ffff9cc341e97bb0 EFLAGS: 00010202
giu 15 16:47:07 fc-home-romanos-lan kernel: RAX: ffff895db1558018 RBX: ffff895dd77ad000 RCX: 0000000000000000
giu 15 16:47:07 fc-home-romanos-lan kernel: RDX: ffff895dd77ad000 RSI: ffff895ddc618990 RDI: 0000000000000000
giu 15 16:47:07 fc-home-romanos-lan kernel: RBP: ffff895ddc618908 R08: ffff895dd77ad000 R09: 0000000000000001
giu 15 16:47:06 fc-home-romanos-lan akmods[1183]: [54B blob data]
giu 15 16:47:07 fc-home-romanos-lan kernel: IPMI message handler: version 39.2
giu 15 16:47:07 fc-home-romanos-lan kernel: ipmi device interface
giu 15 16:47:07 fc-home-romanos-lan kernel: nvidia: module license 'NVIDIA' taints kernel.
giu 15 16:47:07 fc-home-romanos-lan kernel: Disabling lock debugging due to kernel taint
giu 15 16:47:07 fc-home-romanos-lan kernel: nvidia-nvlink: Nvlink Core is being initialized, major device number 238
giu 15 16:47:07 fc-home-romanos-lan kernel: nvidia 0000:01:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=io+mem
giu 15 16:47:07 fc-home-romanos-lan kernel: NVRM: loading NVIDIA UNIX x86_64 Kernel Module  390.116  Sun Jan 27 07:21:36 PST 2019 (using threaded interrupts)
giu 15 16:47:07 fc-home-romanos-lan kernel: nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms  390.116  Sun Jan 27 06:30:32 PST 2019
giu 15 16:47:07 fc-home-romanos-lan kernel: [drm] [nvidia-drm] [GPU ID 0x00000100] Loading driver
giu 15 16:47:07 fc-home-romanos-lan systemd-udevd[7327]: Process '/usr/bin/bash -c '/usr/bin/mknod -Z -m 666 /dev/nvidiactl c 195 255'' failed with exit code 1.
giu 15 16:47:07 fc-home-romanos-lan kernel: resource sanity check: requesting [mem 0x000c0000-0x000fffff], which spans more than PCI Bus 0000:00 [mem 0x000c8000-0x000dffff window]
giu 15 16:47:07 fc-home-romanos-lan kernel: caller _nv001168rm+0xe3/0x1d0 [nvidia] mapping multiple BARs
giu 15 16:47:07 fc-home-romanos-lan systemd-udevd[7327]: Process '/usr/bin/bash -c 'for i in $(cat /proc/driver/nvidia/gpus/*/information | grep Minor | cut -d \  -f 4); do /usr/bin/mknod -Z -m 666>
giu 15 16:47:07 fc-home-romanos-lan kernel: [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
giu 15 16:47:07 fc-home-romanos-lan kernel: [drm] No driver support for vblank timestamp query.
giu 15 16:47:07 fc-home-romanos-lan kernel: [drm] Initialized nvidia-drm 0.0.0 20160202 for 0000:01:00.0 on minor 0
giu 15 16:47:07 fc-home-romanos-lan kernel: BUG: unable to handle kernel paging request at 0000441f0f66c308
giu 15 16:47:07 fc-home-romanos-lan kernel: #PF error: [normal kernel read fault]
giu 15 16:47:07 fc-home-romanos-lan kernel: PGD 0 P4D 0 
giu 15 16:47:07 fc-home-romanos-lan kernel: Oops: 0000 [#1] SMP PTI
giu 15 16:47:07 fc-home-romanos-lan kernel: CPU: 2 PID: 482 Comm: plymouthd Tainted: P           OE     5.1.8-300.fc30.x86_64 #1
giu 15 16:47:07 fc-home-romanos-lan kernel: Hardware name: Hewlett-Packard h8-1024ch/2AB5, BIOS 7.12 10/12/2011
giu 15 16:47:07 fc-home-romanos-lan kernel: RIP: 0010:_nv000012kms+0x5b3/0x7c0 [nvidia_modeset]
giu 15 16:47:07 fc-home-romanos-lan kernel: Code: fb 01 0f 84 bf 00 00 00 41 83 fb 02 0f 84 0d 01 00 00 c6 40 10 01 c6 40 2c 01 c6 40 5c 01 4d 8b 98 b0 00 00 00 4d 85 db 74 15 <45> 8b 1b 44 89 58 0>
giu 15 16:47:07 fc-home-romanos-lan kernel: RSP: 0018:ffff9cc341e97bb0 EFLAGS: 00010202
giu 15 16:47:07 fc-home-romanos-lan kernel: RAX: ffff895db1558018 RBX: ffff895dd77ad000 RCX: 0000000000000000
giu 15 16:47:07 fc-home-romanos-lan kernel: RDX: ffff895dd77ad000 RSI: ffff895ddc618990 RDI: 0000000000000000
giu 15 16:47:07 fc-home-romanos-lan kernel: RBP: ffff895ddc618908 R08: ffff895dd77ad000 R09: 0000000000000001
giu 15 16:47:07 fc-home-romanos-lan kernel: R10: ffff895db1558018 R11: 0000441f0f66c308 R12: ffff895dd77ad000
giu 15 16:47:07 fc-home-romanos-lan kernel: R13: ffff895db1558008 R14: 0000000000000001 R15: 0000000000000000
giu 15 16:47:07 fc-home-romanos-lan kernel: FS:  00007f7888443f80(0000) GS:ffff895de3280000(0000) knlGS:0000000000000000
giu 15 16:47:07 fc-home-romanos-lan kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
giu 15 16:47:07 fc-home-romanos-lan kernel: CR2: 0000441f0f66c308 CR3: 00000003193dc004 CR4: 00000000000606e0
giu 15 16:47:07 fc-home-romanos-lan kernel: Call Trace:
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? nv_drm_atomic_apply_modeset_config+0xec/0x100 [nvidia_drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? drm_atomic_check_only+0x579/0x7a0 [drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? drm_atomic_commit+0x13/0x50 [drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? nv_drm_atomic_helper_disable_all+0x178/0x240 [nvidia_drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? nv_drm_master_drop+0x22/0x60 [nvidia_drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? drm_drop_master+0x1e/0x40 [drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? drm_dropmaster_ioctl+0x4f/0x90 [drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? drm_setmaster_ioctl+0xb0/0xb0 [drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? drm_ioctl_kernel+0xaa/0xf0 [drm]
giu 15 16:47:07 fc-home-romanos-lan kernel:  ? drm_ioctl+0x208/0x390 [drm]

I don’t want to fload the thread wit errors, but even the rpmfusion or the akmod is not working for me.

Every help will be appreciated.

I checked the driver page and nVidia so far hasn’t made an update for 390.116. As an owner of a 550 Ti board, I’m forced to use 390.116. The newer version (390.416?) that ships with Fedora (or made available from RPMFusion, I forget which) runs during boot, discovers your old board and bails out, then issues the message telling you there is no driver, and fallback to nouveau dies, leaving you no choice but to reset the PC.

As a C software engineer, I did some digging into the compilation errors with the 390.116 driver vs the Linux 5.1.x kernel. A few local functions are now duplicates, while a few others are not-found’s. What probably happened between kernel 5.0 and 5.1 is several functions got added (now colliding with the copies in nvidia source), and the others got removed from the kernel. Removing the duplicates is easy, and to deal with the new additions, we add stubs (functions that have no code, i.e. do-nothings). The new additions were in the DRM folder, and I guessed that those aren’t needed to get a basic desktop going. I was correct.

As I can’t use the RPM approach, I’ve been using the standalone manual installer. That file is a shell script with a binary program and tarball both appended. The script takes several command line arguments.

To get 390.116 building, 5 source files need minor editing. To do this you’ll need to know how to use an editor (I use vi), and know how to read C. I don’t know how to make patch files, but the installer has an argument for one if one of you can get the following working and create a patch file.

  1. Run the manual installer with argument --extract-only. This creates a new directory right next to the installer file itself, same name minus the .run suffix. The source is inside.

  2. cd to the directory where you saved the standalone installer
    In my case I had it stored at

  3. run it
    ./NVIDIA-Linux-x86_64-390.116.run -x
    This will do the extract and exit.
    Using -x skips the embedded installer.

  4. cd into the newly-extracted file tree
    cd NVIDIA-Linux-x86_64-390.116/kernel/

  5. Edit the 5 files as shown.

3.1 Fix the original problem with ‘list_is_first’
vi common/inc/nv-list-helpers.h

Comment out the list_is_first function. It's the last thing in this file.
Save and exit vi.

3.2 Several additional problems exist in the source, fix them now.
Begin with this file:

  vi nvidia-uvm/uvm8.c

4 functions are written to return 'int', but now they need to return 'unsigned int'.
Locate function uvm_vm_fault_sigbus_wrapper (around line 175)
Change 'static int' to 'static unsigned int'
Repeat for function uvm_vm_fault_sigbus.
Both are located between lines 166 and 180.

Repeat for functions uvm_vm_fault (near line 393) and uvm_vm_fault_wrapper (line 510).
Save and exit.

3.3 vi nvidia-drm/nvidia-drm-drv.c

Insert the following group of 4 lines right after static struct nv_drm_device *dev_list

static void drm_kms_helper_poll_init (struct drm_device *dev) {}
static void drm_kms_helper_poll_disable(struct drm_device *dev) {}
static void drm_kms_helper_poll_fini (struct drm_device *dev) {}
static void drm_helper_hpd_irq_event (struct drm_device *dev) {}

3.4 vi nvidia-drm/nvidia-drm-encoder.c

Insert this line around line 39, right after the last #include statement:

static void drm_kms_helper_hotplug_event(struct drm_device *dev) {}

3.5 vi nvidia-drm/nvidia-drm-connector.c

Insert this line around line 39, right after the last #include statement:

static int drm_helper_probe_single_connector_modes(struct drm_connector *c,
unsigned int a, unsigned int b) {}

3.6 vi nvidia-drm/nvidia-drm-gem-nvkms

Search for NV_VM_OPS_FAULT_REMOVED_VMA_ARG, there is one instance almost at
bottom of file.
Change 'static int' to 'static unsigned int' for functions nv_drm_vma_fault
and nv_drm_vma_fault.

3.7 Make copies of these files in case running the installer re-extracts the originals
right over top of your mods.

  1. Run the installer:

    pwd → says /path/to/NVIDIA-Linux-x86_64-390.116/kernel
    cd …
    ./nvidia-installer

  2. Keep your fingers crossed!
    You should see the same screen you’re used to seeing, with questions. Tell it to
    proceed. The only thing we did was skip the initial extract of source code. The
    build this screen runs will use the source code tree where we just made our fixes.
    If this builds, let the screen finish the install as you normally do.

Notes: The above is based on notes I wrote when the GUI wouldn’t start. Typos may exist.
Please search your drive if unsure, but a missing file might mean the actual location is one directory above or below where you are. A broad search can be done with this:
find /path/to/NVIDIA-Linux-x86_64-390.116 -type f -exec fgrep -l list_is_first {} ;

James Olson
Lansdale, PA

@James,

I hope you understand your tutorial is way harder than using RPM Fusion !
Also you will have to rework on patches on the next kernel update (along with re-doing the compilation manually every time there is a kernel update which in Fedora is quite often).

We (at RPM Fusion) are trying to “free” people from such slavery state with the automatic recompilation along with providing updated patches for the kmod part. Another way to free people is to use nouveau for sure. But once one need to use the 390 legacy serie (until EOL by the end of the year), then why not consider to help us ?

https://rpmfusion.org/Contributors
http://pkgs.rpmfusion.org/cgit/nonfree/nvidia-390xx-kmod.git/

James, I found your steps to be extremely helpful. Thank you. (my living room Linux box uses an older GeForce GT 530 card). I initially tried to use the RPM Fusion mechanism to install the nvidia 390 driver, but the end result was programs like mpv and VLC constantly bombing out on me. This honestly surprised me, because until this point I’ve found the stuff on RPM Fusion to be pretty bullet-proof. After an hour or so of attempting troubleshooting (I’ll be the first to admit that I probably missed something basic, and the issues I had were probably my own pilot error), I decided to give NVIDIA’s installer a chance, and when that failed to compile, a quick search brought me to your post.

My only correction would be step 3.6, the file to edit is ‘nvidia-drm-gem-nvkms-memory.c’ (you clipped the file name, and just say ‘nvidia-drm-gem-nvkms’)

If your fix hadn’t worked, I was also eyeing this resource:

My C development days are about 15 years behind me, otherwise I’d try to help by creating some .diff and patch files…

-Caleb