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.
I had the same “not enough memory…” error on 4.13.1, so I applied this fix
https://github.com/mkubecek/vmware-host-modules/commit/770c7ffe611520ac96490d235399554c64e87d9f
vmmon is compiling (manual compilation with GCC 7.2) and vmplayer is running as expected
@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.