I have a big issue tomorrow on my computer at my desk.

Nvidia : version magic ‘3.13.0-143-genric SMP mod_unload modversions ‘ should be ‘ SMP mod_unload modversions retpoline’

I know there are similar issues resolved here (like Can't login after Nvidia driver install v 14.04)

But I don't know well how to change the command to work on my system.

I have Ubuntu 14.04...

I tried to load an older kernel. It works well. I check the GUI config tools. In updates and drivers, I can choose to upgrade my nvidia drivers to the latest one (384.111). I tried it and everythin still working.

Then I went back to the latest kernel.

Now, I check the modinfo and nvidia wasn't here. I tried "sudo modprobe nvidia" (dkms see that nvidia 384.111 is installed).

Answer: modprobe: ERROR could not insert 'nvidia_384' : Exec format error

I checked nvidiafb.ko in /lib/modules/.../drivers/video/nivdia and this file is in -rw-r--r-- mode... I dont know if it should be in exec mod???

I'm stuck now

| improve this question | | | | |

This is because the newer kernels have the retpoline Spectre mitigation. You're going to need to rebuild your nvidia.ko kernel module with a patched version of the stock distribution gcc.

Here is the bug and more details: https://bugs.launchpad.net/ubuntu/+source/xorg/+bug/1750937

| improve this answer | | | | |

I solved the problem by following this post from the bugs launchpad. In summary:

Run the following command and look for the vermagic line:

modinfo nvidia-384 -k 4.4.0-116-generic

It will probably say: vermagic: 4.4.0-116-generic SMP mod_unload modversions. Here the retpoline string is missing. You can fix this by removing and re-building the module with DKMS

sudo dkms remove nvidia-384/384.111 -k 4.4.0-116-generic
sudo dkms install nvidia-384/384.111 -k 4.4.0-116-generic

After that the modinfo command will show vermagic: 4.4.0-116-generic SMP mod_unload modversions retpoline

If you are using custom version of gcc this post is also relevant:

If you are using a Ubuntu version of gcc, then gcc probably updated when you got the newer kernel. The changes to gcc necessary to support retpoline should have been backported to most active versions of gcc. However if you have installed a custom version of gcc then your kernel module probably will not build correctly.

So if the above procedure does not work you may have to check which gcc version you are using.

| improve this answer | | | | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.