Kernel – 4.7-rc1 Breaks NVIDIA and VMware..
Kernel 4.7-rc1 is out, and brief details are here: https://lkml.org/lkml/2016/5/29/77
The update breaks the latest NVIDIA drivers – 367.18 and 361.45.11:
.......... /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-367.18/kernel/nvidia-uvm/uvm_linux.h:557:13: error: redefinition of ‘radix_tree_empty’ static bool radix_tree_empty(struct radix_tree_root *tree) .................................. /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-367.18/kernel/nvidia-drm/nvidia-drm-gem.c: In function ‘nvidia_drm_dumb_map_offset’: /home/rgadsdon/kernel/NVIDIA-Linux-x86_64-367.18/kernel/nvidia-drm/nvidia-drm-gem.c:411:33: error: passing argument 1 of ‘drm_gem_object_lookup’ from incompatible pointer type [-Werror=incompatible-pointer-types] gem = drm_gem_object_lookup(dev, file, handle); ........................
..and, breaks 4.6-patched VMware 12.1.1 (vmnet):
.................... /tmp/modconfig-UkXRB7/vmnet-only/netif.c: In function ‘VNetNetifStartXmit’: /tmp/modconfig-UkXRB7/vmnet-only/netif.c:468:7: error: ‘struct net_device’ has no member named ‘trans_start’ dev->trans_start = jiffies; ...................
I tested the vmnet issue by simply commenting out the line dev->trans_start = jiffies in netif.c, and VMware then compiled and (apparently..) ran OK.. This is not a proper solution, though!
Robert Gadsdon. May 29, 2016
Not a kernel developer but i think changing dev->trans_start = jiffies to netif_trans_update(dev) is the correct solution.
@g, Thanks for that.. I’ve applied it, with an appropriate kernel version test added, and everything still seems to work OK.. Difficult to test, as that code portion seems to be in the ‘if we get here something has gone wrong’ category..
RG.
@g, Thanks you very much, it also worked for me with kernel 4.7!
See this upstream commit for the nVidia build error:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/gpu/drm/drm_gem.c?id=a8ad0bd84f986072314595d05444719fdf29e412