Kernel – 4.14-rc1 Released – Breaks VMware and NVIDIA.. GPL Errors Again..

Kernel 4.14-rc1 has been released – a day early – and brief details are here:   http://lkml.iu.edu/hypermail/linux/kernel/1709.2/00177.html

Tested with the latest NVIDIA (384.69) and VMware (12.5.7 with 4.13-patched vmnet):

NVIDIA compile failed, in several places:

.....
CC [M] /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-384.69/kernel/nvidia-drm/nvidia-drm-crtc.o
/home/rgadsdon/kernel/NVIDIA-Linux-x86_64-384.69/kernel/nvidia-drm/nvidia-drm-crtc.c:173:6: error: ‘const struct drm_crtc_helper_funcs’ has no member named ‘enable’; did you mean ‘disable’?
 .enable = nvidia_crtc_enable,
 ^~~~~~
 disable
/home/rgadsdon/kernel/NVIDIA-Linux-x86_64-384.69/kernel/nvidia-drm/nvidia-drm-crtc.c:173:19: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
 .enable = nvidia_crtc_enable,
 ^~~~~~~~~~~~~~~~~~
/home/rgadsdon/kernel/NVIDIA-Linux-x86_64-384.69/kernel/nvidia-drm/nvidia-drm-crtc.c:173:19: note: (near initialization for ‘nv_crtc_helper_funcs.mode_valid’)
/home/rgadsdon/kernel/NVIDIA-Linux-x86_64-384.69/kernel/nvidia-drm/nvidia-drm-crtc.c: In function ‘nvidia_plane_create’:
/home/rgadsdon/kernel/NVIDIA-Linux-x86_64-384.69/kernel/nvidia-drm/nvidia-drm-crtc.c:226:9: error: incompatible type for argument 7 of ‘drm_universal_plane_init’
 plane_type
 ^~~~~~~~~~
In file included from /usr/src/linux-4.14-rc1/include/drm/drm_crtc.h:45:0,
 from /usr/src/linux-4.14-rc1/include/drm/drmP.h:69,
 from /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-384.69/kernel/nvidia-drm/nvidia-drm-priv.h:30,
 from /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-384.69/kernel/nvidia-drm/nvidia-drm-crtc.c:27:
/usr/src/linux-4.14-rc1/include/drm/drm_plane.h:548:5: note: expected ‘const uint64_t * {aka const long long unsigned int *}’ but argument is of type ‘enum drm_plane_type’
 int drm_universal_plane_init(struct drm_device *dev,
 ^~~~~~~~~~~~~~~~~~~~~~~~
/home/rgadsdon/kernel/NVIDIA-Linux-x86_64-384.69/kernel/nvidia-drm/nvidia-drm-crtc.c:222:11: error: too few arguments to function ‘drm_universal_plane_init’
 ret = drm_universal_plane_init(
 ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/src/linux-4.14-rc1/include/drm/drm_crtc.h:45:0,
 from /usr/src/linux-4.14-rc1/include/drm/drmP.h:69,
 from /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-384.69/kernel/nvidia-drm/nvidia-drm-priv.h:30,
 from /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-384.69/kernel/nvidia-drm/nvidia-drm-crtc.c:27:
/usr/src/linux-4.14-rc1/include/drm/drm_plane.h:548:5: note: declared here
 int drm_universal_plane_init(struct drm_device *dev,
 ^~~~~~~~~~~~~~~~~~~~~~~~
/home/rgadsdon/kernel/NVIDIA-Linux-x86_64-384.69/kernel/nvidia-drm/nvidia-drm-crtc.c: In function ‘nvidia_drm_add_crtc’:
/home/rgadsdon/kernel/NVIDIA-Linux-x86_64-384.69/kernel/nvidia-drm/nvidia-drm-crtc.c:353:11: error: too few arguments to function ‘drm_crtc_init_with_planes’
 ret = drm_crtc_init_with_planes(dev,
 ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/src/linux-4.14-rc1/include/drm/drmP.h:69:0,
 from /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-384.69/kernel/nvidia-drm/nvidia-drm-priv.h:30,
 from /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-384.69/kernel/nvidia-drm/nvidia-drm-crtc.c:27:
/usr/src/linux-4.14-rc1/include/drm/drm_crtc.h:899:5: note: declared here
 int drm_crtc_init_with_planes(struct drm_device *dev,
 ^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[3]: *** [/usr/src/linux-4.14-rc1/scripts/Makefile.build:312: /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-384.69/kernel/nvidia-drm/nvidia-drm-crtc.o] Error 1
make[2]: *** [/usr/src/linux-4.14-rc1/Makefile:1498: _module_/home/rgadsdon/kernel/NVIDIA-Linux-x86_64-384.69/kernel] Error 2
make[2]: Leaving directory '/usr/src/linux-4.14-rc1'
make[1]: *** [Makefile:145: sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-4.14-rc1'
make: *** [Makefile:81: modules] Error 2

I found a combo patch already posted, which included some extra (Gentoo-specific?) compiler options, and some code patches..

https://devtalk.nvidia.com/default/topic/1023822/linux/-patch-384-69-kernel-4-13-4-14-staging-/

I applied the code patches, and everything compiled OK, but then failed with (once again..!.) GPL violation errors:

...........
FATAL: modpost: GPL-incompatible module nvidia.ko uses GPL-only symbol 'acpi_device_fwnode_ops'
make[3]: *** [/usr/src/linux-4.14-rc1/scripts/Makefile.modpost:91: __modpost] Error 1
make[2]: *** [/usr/src/linux-4.14-rc1/Makefile:1502: modules] Error 2
make[2]: Leaving directory '/usr/src/linux-4.14-rc1'
make[1]: *** [Makefile:145: sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-4.14-rc1'
make: *** [Makefile:81: modules] Error 2

The combo patch does include license changes, but these are not legal, so I did not test any further…     The previous time these licensing issues arose, then – eventually – the kernel devs relented, and reverted the changes to the kernel code, but there is – so far – no indication of whether this will happen this time..

VMware patched vmnet compiled/loaded OK, but vmmon failed:

/home/rgadsdon/kernel/vmmon-only/linux/hostif.c: In function ‘HostIF_EstimateLockedPageLimit’:
/home/rgadsdon/kernel/vmmon-only/linux/hostif.c:1597:31: error: implicit declaration of function ‘global_page_state’; did you mean ‘global_numa_state’? [-Werror=implicit-function-declaration]
 unsigned int lockedPages = global_page_state(NR_PAGETABLE) +
 ^~~~~~~~~~~~~~~~~
 global_numa_state
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:312: /home/rgadsdon/kernel/vmmon-only/linux/hostif.o] Error 1
make[1]: *** [Makefile:1498: _module_/home/rgadsdon/kernel/vmmon-only] Error 2
make[1]: Leaving directory '/usr/src/linux-4.14-rc1'
make: *** [Makefile:120: vmmon.ko] Error 2

I did try replacing occurrences of ‘‘global_page_state’ with ‘global_numa_state’, and vmmon compiled and loaded OK, but gave the following memory error when attempting to run a correctly-configured VM:
“Not enough physical memory is available to power on this virtual machine with its configured settings……….”     etc..
So – presumably – this is not the correct solution!

Robert Gadsdon.  September 16, 2017.


Comments

Kernel – 4.14-rc1 Released – Breaks VMware and NVIDIA.. GPL Errors Again.. — 2 Comments

    • @Niol. Thanks for this.. Looks as if this might be a ‘correct’ patch for vmmon with 4.14-rc1.. I will do some tests..
      BTW, I have been running VMware – with just the vmnet patch – on kernels 4.13.1 and 4.13.2 without the need for any other patches..
      RG.

Leave a Reply

Your email address will not be published. Required fields are marked *