[CentOS] Error installing Nvidia driver on a 7.5 beta kernel

Fri Feb 2 16:25:54 UTC 2018
Phil Perry <pperry at elrepo.org>

On 02/02/18 15:30, James Pearson wrote:
> OK, I know CentOS has nothing to do with RHEL beta releases, but I
> wanted to test if el7.5 has added support for a particular peripheral
> (Wacom Pro 2 tablet) ... but was unable to install the propriety Nvidia
> display driver (v390.25) on a test workstation - and was wondering if
> anyone could explain on what is going on.
> 
> All I've done is upgrade an existing CentOS 7.4 install with the RHEL
> 7.5 beta kernel RPMS
> 
> However, when installing the Nvidia driver, it fails with:
> 
>    FATAL: modpost: GPL-incompatible module nvidia.ko uses GPL-only symbol
> '__cachemode2pte_tbl'
> 
> A bit of Googling seems to suggest that this issue has been 'fixed' in
> later upstream kernels by changing the export of this symbol from
> 'EXPORT_SYMBOL_GPL' to 'EXPORT_SYMBOL'
> 
> However, 7.4 and earlier el7 kernels also export this symbol as
> EXPORT_SYMBOL_GPL - but the Nvidia driver builds/installs fine on 7.4
> kernels ...
> 
> So, I'm not really sure what the issue is - i.e. is it an Nvidia or
> Redhat issue ?
> 

It looks like a regression. This was originally fixed upstream 
(kernel.org) 3 years ago, so if the RHEL7.5 beta kernel has reverted to 
'EXPORT_SYMBOL_GPL' then it is a regression that will break building any 
out-of-tree non-gpl modules which need to set caching mode in pte's

You should file a bug report with Red Hat.

> For now, I've managed to hack around this by patching the stub Nvidia
> driver src to change MODULE_LICENSE from "NVIDIA" to "GPL" - and the
> Nvidia driver now installs and loads OK
> 

The correct fix in the kernel is in arch/x86/mm/init.c

-EXPORT_SYMBOL_GPL(__cachemode2pte_tbl);
+EXPORT_SYMBOL(__cachemode2pte_tbl);

> If anyone knows any more about this, then please let me know
> 
> Thanks
> 
> James Pearson